Hello community, here is the log from the commit of package okular for openSUSE:Factory checked in at 2013-08-16 13:41:44 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/okular (Old) and /work/SRC/openSUSE:Factory/.okular.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "okular" Changes: -------- --- /work/SRC/openSUSE:Factory/okular/okular.changes 2013-07-30 16:07:33.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.okular.new/okular.changes 2013-08-16 13:41:45.000000000 +0200 @@ -1,0 +2,7 @@ +Thu Aug 8 15:11:12 UTC 2013 - [email protected] + +- Update to 4.11.0 + * KDE 4.11 Final release + * See http://www.kde.org/announcements/4.11/ + +------------------------------------------------------------------- Old: ---- okular-4.10.97.tar.xz New: ---- okular-4.11.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ okular.spec ++++++ --- /var/tmp/diff_new_pack.kkS4TX/_old 2013-08-16 13:41:47.000000000 +0200 +++ /var/tmp/diff_new_pack.kkS4TX/_new 2013-08-16 13:41:47.000000000 +0200 @@ -17,7 +17,7 @@ Name: okular -Version: 4.10.97 +Version: 4.11.0 Release: 0 Summary: Document Viewer License: GPL-2.0+ ++++++ okular-4.10.97.tar.xz -> okular-4.11.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okular-4.10.97/VERSION new/okular-4.11.0/VERSION --- old/okular-4.10.97/VERSION 2013-07-24 00:20:37.000000000 +0200 +++ new/okular-4.11.0/VERSION 2013-08-06 23:52:16.000000000 +0200 @@ -1 +1 @@ -okular v0.16.97 +okular v0.17.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okular-4.10.97/core/document.cpp new/okular-4.11.0/core/document.cpp --- old/okular-4.10.97/core/document.cpp 2013-07-10 01:15:12.000000000 +0200 +++ new/okular-4.11.0/core/document.cpp 2013-08-06 23:52:16.000000000 +0200 @@ -2009,8 +2009,6 @@ d->m_undoStack = new QUndoStack(this); d->m_tiledObserver = 0; - connect( PageController::self(), SIGNAL(rotationFinished(int,Okular::Page*)), - this, SLOT(rotationFinished(int,Okular::Page*)) ); connect( SettingsCore::self(), SIGNAL(configChanged()), this, SLOT(_o_configChanged()) ); connect( d->m_undoStack, SIGNAL( canUndoChanged(bool) ), this, SIGNAL( canUndoChanged(bool))); connect( d->m_undoStack, SIGNAL( canRedoChanged(bool) ), this, SIGNAL( canRedoChanged(bool) ) ); @@ -2043,10 +2041,22 @@ delete d; } -static bool kserviceMoreThan( const KService::Ptr &s1, const KService::Ptr &s2 ) -{ - return s1->property( "X-KDE-Priority" ).toInt() > s2->property( "X-KDE-Priority" ).toInt(); -} +class kMimeTypeMoreThan { +public: + kMimeTypeMoreThan( const KMimeType::Ptr &mime ) : _mime( mime ) {} + bool operator()( const KService::Ptr &s1, const KService::Ptr &s2 ) + { + const QString mimeName = _mime->name(); + if (s1->mimeTypes().contains( mimeName ) && !s2->mimeTypes().contains( mimeName )) + return true; + else if (s2->mimeTypes().contains( mimeName ) && !s1->mimeTypes().contains( mimeName )) + return false; + return s1->property( "X-KDE-Priority" ).toInt() > s2->property( "X-KDE-Priority" ).toInt(); + } + +private: + const KMimeType::Ptr &_mime; +}; bool Document::openDocument( const QString & docFile, const KUrl& url, const KMimeType::Ptr &_mime ) { @@ -2141,7 +2151,7 @@ if ( offercount > 1 ) { // sort the offers: the offers with an higher priority come before - qStableSort( offers.begin(), offers.end(), kserviceMoreThan ); + qStableSort( offers.begin(), offers.end(), kMimeTypeMoreThan( mime ) ); if ( SettingsCore::chooseGenerators() ) { @@ -2184,6 +2194,9 @@ } d->m_generatorName = offer->name(); + d->m_pageController = new PageController(); + connect( d->m_pageController, SIGNAL(rotationFinished(int,Okular::Page*)), + this, SLOT(rotationFinished(int,Okular::Page*)) ); bool containsExternalAnnotations = false; foreach ( Page * p, d->m_pagesVector ) @@ -2285,6 +2298,9 @@ if ( !d->m_generator ) return; + delete d->m_pageController; + d->m_pageController = 0; + delete d->m_scripter; d->m_scripter = 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okular-4.10.97/core/document_p.h new/okular-4.11.0/core/document_p.h --- old/okular-4.10.97/core/document_p.h 2013-07-10 01:15:12.000000000 +0200 +++ new/okular-4.11.0/core/document_p.h 2013-08-06 14:46:52.000000000 +0200 @@ -38,6 +38,7 @@ namespace Okular { class ConfigInterface; +class PageController; class SaveInterface; class Scripter; class View; @@ -97,6 +98,7 @@ m_saveBookmarksTimer( 0 ), m_generator( 0 ), m_generatorsLoaded( false ), + m_pageController( 0 ), m_closingLoop( 0 ), m_scripter( 0 ), m_archiveData( 0 ), @@ -250,6 +252,7 @@ // cache of the mimetype we support QStringList m_supportedMimeTypes; + PageController *m_pageController; QEventLoop *m_closingLoop; Scripter *m_scripter; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okular-4.10.97/core/page.cpp new/okular-4.11.0/core/page.cpp --- old/okular-4.10.97/core/page.cpp 2013-07-10 01:15:12.000000000 +0200 +++ new/okular-4.11.0/core/page.cpp 2013-08-06 14:46:52.000000000 +0200 @@ -389,7 +389,7 @@ RotationJob *job = new RotationJob( object.m_pixmap->toImage(), object.m_rotation, m_rotation, it.key() ); job->setPage( this ); - PageController::self()->addRotationJob(job); + m_doc->m_pageController->addRotationJob(job); } /** @@ -540,7 +540,7 @@ RotationJob *job = new RotationJob( pixmap->toImage(), Rotation0, d->m_rotation, observer ); job->setPage( d ); job->setRect( TilesManager::toRotatedRect( rect, d->m_rotation ) ); - PageController::self()->addRotationJob(job); + d->m_doc->m_pageController->addRotationJob(job); delete pixmap; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okular-4.10.97/core/pagecontroller.cpp new/okular-4.11.0/core/pagecontroller.cpp --- old/okular-4.10.97/core/pagecontroller.cpp 2013-07-10 01:15:12.000000000 +0200 +++ new/okular-4.11.0/core/pagecontroller.cpp 2013-08-06 14:46:52.000000000 +0200 @@ -17,8 +17,6 @@ #include "page_p.h" #include "rotationjob_p.h" -K_GLOBAL_STATIC( Okular::PageController, page_controller_self ) - using namespace Okular; PageController::PageController() @@ -30,23 +28,16 @@ { } -PageController * PageController::self() -{ - return page_controller_self; -} - void PageController::addRotationJob(RotationJob *job) { - initWeaver(); + connect( job, SIGNAL(done(ThreadWeaver::Job*)), + this, SLOT(imageRotationDone(ThreadWeaver::Job*)) ); ThreadWeaver::Weaver::instance()->enqueue(job); } void PageController::imageRotationDone(ThreadWeaver::Job *j) { - RotationJob *job = qobject_cast< RotationJob * >(j); - - if ( !job ) - return; + RotationJob *job = static_cast< RotationJob * >( j ); if ( job->page() ) { @@ -58,16 +49,4 @@ job->deleteLater(); } -void PageController::initWeaver() -{ - static bool weaverInited = false; - if ( weaverInited ) - return; - - connect( ThreadWeaver::Weaver::instance(), SIGNAL(jobDone(ThreadWeaver::Job*)), - this, SLOT(imageRotationDone(ThreadWeaver::Job*)) ); - - weaverInited = true; -} - #include "pagecontroller_p.moc" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okular-4.10.97/core/pagecontroller_p.h new/okular-4.11.0/core/pagecontroller_p.h --- old/okular-4.10.97/core/pagecontroller_p.h 2013-07-10 01:15:12.000000000 +0200 +++ new/okular-4.11.0/core/pagecontroller_p.h 2013-08-06 14:46:52.000000000 +0200 @@ -21,20 +21,16 @@ class Page; class RotationJob; +/* There is one PageController per document. It receives notifications of + * completed RotationJobs */ class PageController : public QObject { Q_OBJECT public: - /** - * Constructor. No NOT use this, NEVER! Use the static self() instead. - */ PageController(); - ~PageController(); - static PageController * self(); - void addRotationJob( RotationJob *job ); signals: @@ -42,9 +38,6 @@ private slots: void imageRotationDone(ThreadWeaver::Job*); - - private: - void initWeaver(); }; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okular-4.10.97/core/version.h new/okular-4.11.0/core/version.h --- old/okular-4.10.97/core/version.h 2013-07-24 00:20:37.000000000 +0200 +++ new/okular-4.11.0/core/version.h 2013-08-06 23:52:16.000000000 +0200 @@ -10,10 +10,10 @@ #ifndef _OKULAR_VERSION_H_ #define _OKULAR_VERSION_H_ -#define OKULAR_VERSION_STRING "0.16.97" +#define OKULAR_VERSION_STRING "0.17.0" #define OKULAR_VERSION_MAJOR 0 -#define OKULAR_VERSION_MINOR 16 -#define OKULAR_VERSION_RELEASE 97 +#define OKULAR_VERSION_MINOR 17 +#define OKULAR_VERSION_RELEASE 0 #define OKULAR_MAKE_VERSION( a,b,c ) (((a) << 16) | ((b) << 8) | (c)) #define OKULAR_VERSION \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okular-4.10.97/generators/chm/libokularGenerator_chmlib.desktop new/okular-4.11.0/generators/chm/libokularGenerator_chmlib.desktop --- old/okular-4.10.97/generators/chm/libokularGenerator_chmlib.desktop 2013-07-23 11:01:24.000000000 +0200 +++ new/okular-4.11.0/generators/chm/libokularGenerator_chmlib.desktop 2013-08-06 14:46:52.000000000 +0200 @@ -90,7 +90,7 @@ Comment[ja]=Okular の Windows HTML ヘルプ用バックエンド Comment[kk]=Okular-дың Windows HTMLHelp тетігі Comment[km]=ផ្នែកខាងក្រោយ HTMLHelp របស់វីនដូសម្រាប់ Okular -Comment[ko]=Okular의 윈도 HTMLHelp 백엔드 +Comment[ko]=Okular의 Windows HTMLHelp 백엔드 Comment[ku]=Binesazî ya Windows HTMLHelp ji bo Okular Comment[lt]=Windows HTML pagalbos failų programinė sąsaja, skirta Okular Comment[lv]=Windows HTMLHelp Okular aizmugure diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okular-4.10.97/generators/poppler/generator_pdf.cpp new/okular-4.11.0/generators/poppler/generator_pdf.cpp --- old/okular-4.10.97/generators/poppler/generator_pdf.cpp 2013-07-10 01:15:12.000000000 +0200 +++ new/okular-4.11.0/generators/poppler/generator_pdf.cpp 2013-08-06 14:46:52.000000000 +0200 @@ -565,7 +565,12 @@ } // build Pages (currentPage was set -1 by deletePages) - uint pageCount = pdfdoc->numPages(); + int pageCount = pdfdoc->numPages(); + if (pageCount < 0) { + delete pdfdoc; + pdfdoc = 0; + return false; + } pagesVector.resize(pageCount); rectsGenerated.fill(false, pageCount); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okular-4.10.97/generators/spectre/active-documentviewer_ghostview.desktop new/okular-4.11.0/generators/spectre/active-documentviewer_ghostview.desktop --- old/okular-4.10.97/generators/spectre/active-documentviewer_ghostview.desktop 2013-07-14 12:02:41.000000000 +0200 +++ new/okular-4.11.0/generators/spectre/active-documentviewer_ghostview.desktop 2013-08-06 14:46:52.000000000 +0200 @@ -151,6 +151,7 @@ X-KDE-Keywords[is]=PS, PostScript X-KDE-Keywords[it]=PS, PostScript X-KDE-Keywords[kk]=PS, PostScript +X-KDE-Keywords[ko]=PS, PostScript X-KDE-Keywords[lt]=PS, PostScript X-KDE-Keywords[mr]=PS, पोस्ट स्क्रिप्ट X-KDE-Keywords[nb]=PS, PostScript diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okular-4.10.97/generators/spectre/okularApplication_ghostview.desktop new/okular-4.11.0/generators/spectre/okularApplication_ghostview.desktop --- old/okular-4.10.97/generators/spectre/okularApplication_ghostview.desktop 2013-07-14 12:02:41.000000000 +0200 +++ new/okular-4.11.0/generators/spectre/okularApplication_ghostview.desktop 2013-08-06 14:46:52.000000000 +0200 @@ -145,6 +145,7 @@ X-KDE-Keywords[is]=PS, PostScript X-KDE-Keywords[it]=PS, PostScript X-KDE-Keywords[kk]=PS, PostScript +X-KDE-Keywords[ko]=PS, PostScript X-KDE-Keywords[lt]=PS, PostScript X-KDE-Keywords[mr]=PS, पोस्ट स्क्रिप्ट X-KDE-Keywords[nb]=PS, PostScript diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okular-4.10.97/generators/txt/active-documentviewer_txt.desktop new/okular-4.11.0/generators/txt/active-documentviewer_txt.desktop --- old/okular-4.10.97/generators/txt/active-documentviewer_txt.desktop 2013-07-23 11:01:24.000000000 +0200 +++ new/okular-4.11.0/generators/txt/active-documentviewer_txt.desktop 2013-08-06 14:46:52.000000000 +0200 @@ -150,6 +150,7 @@ X-KDE-Keywords[is]=txt X-KDE-Keywords[it]=txt, testo X-KDE-Keywords[kk]=txt +X-KDE-Keywords[ko]=txt X-KDE-Keywords[lt]=txt X-KDE-Keywords[mr]=txt X-KDE-Keywords[nb]=txt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okular-4.10.97/generators/txt/libokularGenerator_txt.desktop new/okular-4.11.0/generators/txt/libokularGenerator_txt.desktop --- old/okular-4.10.97/generators/txt/libokularGenerator_txt.desktop 2013-07-23 11:01:24.000000000 +0200 +++ new/okular-4.11.0/generators/txt/libokularGenerator_txt.desktop 2013-08-06 14:46:52.000000000 +0200 @@ -15,6 +15,7 @@ Name[is]=txt Name[it]=testo Name[kk]=txt +Name[ko]=txt Name[lt]=txt Name[mr]=txt Name[nb]=tekst @@ -50,6 +51,7 @@ Comment[is]=TXT stuðningur fyrir Okular Comment[it]=Backend di testo semplice per Okular Comment[kk]=Okular-дың Txt тетігі +Comment[ko]=Okular의 TXT 백엔드 Comment[lt]=Txt programinė sąsaja, skirta Okular Comment[mr]=ओक्युलर करिता Txt बॅकएन्ड Comment[nb]=Txt-motor for Okular diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okular-4.10.97/generators/txt/okularApplication_txt.desktop new/okular-4.11.0/generators/txt/okularApplication_txt.desktop --- old/okular-4.10.97/generators/txt/okularApplication_txt.desktop 2013-07-23 11:01:24.000000000 +0200 +++ new/okular-4.11.0/generators/txt/okularApplication_txt.desktop 2013-08-06 14:46:52.000000000 +0200 @@ -145,6 +145,7 @@ X-KDE-Keywords[is]=txt X-KDE-Keywords[it]=txt, testo X-KDE-Keywords[kk]=txt +X-KDE-Keywords[ko]=txt X-KDE-Keywords[lt]=txt X-KDE-Keywords[mr]=txt X-KDE-Keywords[nb]=txt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okular-4.10.97/tests/CMakeLists.txt new/okular-4.11.0/tests/CMakeLists.txt --- old/okular-4.10.97/tests/CMakeLists.txt 2013-07-10 01:15:12.000000000 +0200 +++ new/okular-4.11.0/tests/CMakeLists.txt 2013-08-06 14:46:52.000000000 +0200 @@ -6,6 +6,9 @@ kde4_add_unit_test( parttest parttest.cpp ) target_link_libraries( parttest ${KDE4_KDECORE_LIBS} ${KDE4_KPARTS_LIBS} ${QT_QTGUI_LIBRARY} ${QT_QTTEST_LIBRARY} okularpart okularcore ) +kde4_add_unit_test( documenttest documenttest.cpp ) +target_link_libraries( documenttest ${KDE4_KDECORE_LIBS} ${KDE4_THREADWEAVER_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTTEST_LIBRARY} okularcore ) + kde4_add_unit_test( searchtest searchtest.cpp ) target_link_libraries( searchtest ${KDE4_KDECORE_LIBS} ${QT_QTGUI_LIBRARY} ${QT_QTTEST_LIBRARY} okularcore ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okular-4.10.97/tests/documenttest.cpp new/okular-4.11.0/tests/documenttest.cpp --- old/okular-4.10.97/tests/documenttest.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/okular-4.11.0/tests/documenttest.cpp 2013-08-06 14:46:52.000000000 +0200 @@ -0,0 +1,62 @@ +/*************************************************************************** + * Copyright (C) 2013 by Fabio D'Urso <[email protected]> * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + ***************************************************************************/ + +#include <qtest_kde.h> + +#include <threadweaver/ThreadWeaver.h> + +#include "../core/document.h" +#include "../core/generator.h" +#include "../core/observer.h" +#include "../core/rotationjob_p.h" +#include "../settings_core.h" + +class DocumentTest +: public QObject +{ + Q_OBJECT + + private slots: + void testCloseDuringRotationJob(); +}; + +// Test that we don't crash if the document is closed while a RotationJob +// is enqueued/running +void DocumentTest::testCloseDuringRotationJob() +{ + Okular::SettingsCore::instance( "documenttest" ); + Okular::Document *m_document = new Okular::Document( 0 ); + const QString testFile = KDESRCDIR "data/file1.pdf"; + const KMimeType::Ptr mime = KMimeType::findByPath( testFile ); + + Okular::DocumentObserver *dummyDocumentObserver = new Okular::DocumentObserver(); + m_document->addObserver( dummyDocumentObserver ); + + m_document->openDocument( testFile, KUrl(), mime ); + m_document->setRotation( 1 ); + + // Tell ThreadWeaver not to start any new job + ThreadWeaver::Weaver::instance()->suspend(); + + // Request a pixmap. A RotationJob will be enqueued but not started + Okular::PixmapRequest *pixmapReq = new Okular::PixmapRequest( + dummyDocumentObserver, 0, 100, 100, 1, Okular::PixmapRequest::NoFeature ); + m_document->requestPixmaps( QLinkedList<Okular::PixmapRequest*>() << pixmapReq ); + + // Delete the document + delete m_document; + + // Resume job processing and wait for the RotationJob to finish + ThreadWeaver::Weaver::instance()->resume(); + ThreadWeaver::Weaver::instance()->finish(); + qApp->processEvents(); +} + +QTEST_KDEMAIN( DocumentTest, GUI ) +#include "documenttest.moc" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okular-4.10.97/ui/annotationtools.cpp new/okular-4.11.0/ui/annotationtools.cpp --- old/okular-4.10.97/ui/annotationtools.cpp 2013-07-10 01:15:12.000000000 +0200 +++ new/okular-4.11.0/ui/annotationtools.cpp 2013-08-06 14:46:52.000000000 +0200 @@ -11,6 +11,7 @@ // qt / kde includes #include <qcolor.h> +#include <qcursor.h> #include <qevent.h> #include <qpainter.h> @@ -76,6 +77,11 @@ { } +QCursor AnnotatorEngine::cursor() const +{ + return Qt::CrossCursor; +} + SmoothPath::SmoothPath( const QLinkedList<Okular::NormalizedPoint> &points, const QPen &pen ) : points ( points ), pen ( pen ) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okular-4.10.97/ui/annotationtools.h new/okular-4.11.0/ui/annotationtools.h --- old/okular-4.10.97/ui/annotationtools.h 2013-07-10 01:15:12.000000000 +0200 +++ new/okular-4.11.0/ui/annotationtools.h 2013-08-06 14:46:52.000000000 +0200 @@ -53,6 +53,8 @@ static void decodeEvent( const QMouseEvent * mouseEvent, EventType * eventType, Button * button ); static void decodeEvent( const QTabletEvent * tabletEvent, EventType * eventType, Button * button ); + virtual QCursor cursor() const; + protected: PageViewItem * item() { return m_item; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okular-4.10.97/ui/pageview.cpp new/okular-4.11.0/ui/pageview.cpp --- old/okular-4.10.97/ui/pageview.cpp 2013-07-10 01:15:12.000000000 +0200 +++ new/okular-4.11.0/ui/pageview.cpp 2013-08-06 23:52:16.000000000 +0200 @@ -127,7 +127,6 @@ QPoint mouseGrabPos; QPoint mousePressPos; QPoint mouseSelectPos; - bool mouseMidZooming; int mouseMidLastY; bool mouseSelecting; QRect mouseSelectionRect; @@ -274,7 +273,6 @@ d->aViewMode = 0; d->zoomMode = PageView::ZoomFitWidth; d->zoomFactor = 1.0; - d->mouseMidZooming = false; d->mouseSelecting = false; d->mouseTextSelecting = false; d->mouseOnRect = false; @@ -1629,7 +1627,7 @@ e->accept(); // if performing a selection or dyn zooming, disable keys handling - if ( ( d->mouseSelecting && e->key() != Qt::Key_Escape ) || d->mouseMidZooming ) + if ( ( d->mouseSelecting && e->key() != Qt::Key_Escape ) || ( QApplication::mouseButtons () & Qt::MidButton ) ) return; // if viewport is moving, disable keys handling @@ -1808,7 +1806,7 @@ return; // if holding mouse mid button, perform zoom - if ( d->mouseMidZooming && (e->buttons() & Qt::MidButton) ) + if ( e->buttons() & Qt::MidButton ) { int mouseY = e->globalPos().y(); int deltaY = d->mouseMidLastY - mouseY; @@ -1854,10 +1852,7 @@ if ( d->annotator && d->annotator->active() ) { PageViewItem * pageItem = pickItemOnPoint( eventPos.x(), eventPos.y() ); - if (pageItem || d->annotator->annotating()) - setCursor( Qt::CrossCursor ); - else - setCursor( Qt::ForbiddenCursor ); + updateCursor( eventPos ); d->annotator->routeMouseEvent( e, pageItem ); return; } @@ -1983,7 +1978,7 @@ return; // if performing a selection or dyn zooming, disable mouse press - if ( d->mouseSelecting || d->mouseMidZooming || d->viewportMoveActive ) + if ( d->mouseSelecting || ( e->button() != Qt::MidButton && ( e->buttons() & Qt::MidButton) ) || d->viewportMoveActive ) return; // if the page is scrolling, stop it @@ -1996,7 +1991,6 @@ // if pressing mid mouse button while not doing other things, begin 'continuous zoom' mode if ( e->button() == Qt::MidButton ) { - d->mouseMidZooming = true; d->mouseMidLastY = e->globalPos().y(); setCursor( Qt::SizeVerCursor ); return; @@ -2226,9 +2220,8 @@ const QPoint eventPos = contentAreaPoint( e->pos() ); // handle mode indepent mid buttom zoom - if ( d->mouseMidZooming && (e->button() == Qt::MidButton) ) + if ( e->button() == Qt::MidButton ) { - d->mouseMidZooming = false; // request pixmaps since it was disabled during drag slotRequestVisiblePixmaps(); // the cursor may now be over a link.. update it @@ -3656,7 +3649,15 @@ { // detect the underlaying page (if present) PageViewItem * pageItem = pickItemOnPoint( p.x(), p.y() ); - if ( pageItem ) + + if ( d->annotator && d->annotator->active() ) + { + if ( pageItem || d->annotator->annotating() ) + setCursor( d->annotator->cursor() ); + else + setCursor( Qt::ForbiddenCursor ); + } + else if ( pageItem ) { double nX = pageItem->absToPageX(p.x()); double nY = pageItem->absToPageY(p.y()); @@ -3668,7 +3669,7 @@ setCursor( Qt::CrossCursor ); else if ( d->mouseAnn ) setCursor( Qt::ClosedHandCursor ); - else + else if ( Okular::Settings::mouseMode() == Okular::Settings::EnumMouseMode::Browse ) { const Okular::ObjectRect * linkobj = pageItem->page()->objectRect( Okular::ObjectRect::Action, nX, nY, pageItem->uncroppedWidth(), pageItem->uncroppedHeight() ); const Okular::ObjectRect * annotobj = pageItem->page()->objectRect( Okular::ObjectRect::OAnnotation, nX, nY, pageItem->uncroppedWidth(), pageItem->uncroppedHeight() ); @@ -3701,17 +3702,21 @@ setCursor( Qt::PointingHandCursor ); } } - } - else if ( Okular::Settings::mouseMode() == Okular::Settings::EnumMouseMode::Browse ) - { - setCursor( (d->annotator && d->annotator->active()) ? Qt::CrossCursor : Qt::OpenHandCursor ); + else + { + setCursor( Qt::OpenHandCursor ); + } } else { - setCursor( Qt::ArrowCursor ); + setCursor( Qt::OpenHandCursor ); } } } + else + { + setCursor( Qt::ArrowCursor ); + } } else { @@ -4091,7 +4096,7 @@ { // if requests are blocked (because raised by an unwanted event), exit if ( d->blockPixmapsRequest || d->viewportMoveActive || - d->mouseMidZooming ) + ( QApplication::mouseButtons () & Qt::MidButton ) ) return; // precalc view limits for intersecting with page coords inside the loop diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okular-4.10.97/ui/pageviewannotator.cpp new/okular-4.11.0/ui/pageviewannotator.cpp --- old/okular-4.10.97/ui/pageviewannotator.cpp 2013-07-10 01:15:12.000000000 +0200 +++ new/okular-4.11.0/ui/pageviewannotator.cpp 2013-08-06 14:46:52.000000000 +0200 @@ -630,6 +630,11 @@ return QList< Okular::Annotation* >() << ann; } + QCursor cursor() const + { + return Qt::IBeamCursor; + } + private: // data PageView * m_pageView; @@ -777,6 +782,11 @@ return active() && m_lockedItem; } +QCursor PageViewAnnotator::cursor() const +{ + return m_engine->cursor(); +} + QRect PageViewAnnotator::performRouteMouseOrTabletEvent(const AnnotatorEngine::EventType & eventType, const AnnotatorEngine::Button & button, const QPointF & pos, PageViewItem * item ) { @@ -1188,7 +1198,9 @@ } else if ( annotType == "squiggly" ) { - p.setPen( QPen( engineColor, 1, Qt::DotLine ) ); + QPen pen( engineColor, 1 ); + pen.setDashPattern( QVector<qreal>() << 1 << 1 ); + p.setPen( pen ); p.drawLine( 1, 13, 16, 13 ); p.drawLine( 2, 14, 15, 14 ); p.drawLine( 0, 20, 19, 20 ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/okular-4.10.97/ui/pageviewannotator.h new/okular-4.11.0/ui/pageviewannotator.h --- old/okular-4.10.97/ui/pageviewannotator.h 2013-07-10 01:15:12.000000000 +0200 +++ new/okular-4.11.0/ui/pageviewannotator.h 2013-08-06 14:46:52.000000000 +0200 @@ -70,6 +70,11 @@ bool active() const; // @return Are we currently annotating (using the selected tool)? bool annotating() const; + + // returns the preferred cursor for the current tool. call this only + // if active() == true + QCursor cursor() const; + QRect routeMouseEvent( QMouseEvent * event, PageViewItem * item ); QRect routeTabletEvent( QTabletEvent * event, PageViewItem * item, const QPoint & localOriginInGlobal ); QRect performRouteMouseOrTabletEvent( const AnnotatorEngine::EventType & eventType, const AnnotatorEngine::Button & button, -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
