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]

Reply via email to