Hello community,

here is the log from the commit of package gwenview for openSUSE:Factory 
checked in at 2013-10-03 15:47:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gwenview (Old)
 and      /work/SRC/openSUSE:Factory/.gwenview.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gwenview"

Changes:
--------
--- /work/SRC/openSUSE:Factory/gwenview/gwenview.changes        2013-09-09 
11:07:26.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.gwenview.new/gwenview.changes   2013-10-03 
15:47:40.000000000 +0200
@@ -1,0 +2,7 @@
+Sat Sep 28 15:09:14 UTC 2013 - [email protected]
+
+- Update to 4.11.2
+   * KDE 4.11.2 bugfix release
+   * See http://www.kde.org/announcements/announce-4.11.2.php
+
+-------------------------------------------------------------------

Old:
----
  gwenview-4.11.1.tar.xz

New:
----
  gwenview-4.11.2.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gwenview.spec ++++++
--- /var/tmp/diff_new_pack.Z2SsaJ/_old  2013-10-03 15:47:41.000000000 +0200
+++ /var/tmp/diff_new_pack.Z2SsaJ/_new  2013-10-03 15:47:41.000000000 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           gwenview
-Version:        4.11.1
+Version:        4.11.2
 Release:        0
 Summary:        Simple Image Viewer for KDE
 License:        GPL-2.0+

++++++ gwenview-4.11.1.tar.xz -> gwenview-4.11.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gwenview-4.11.1/app/contextmanager.cpp 
new/gwenview-4.11.2/app/contextmanager.cpp
--- old/gwenview-4.11.1/app/contextmanager.cpp  2013-08-28 19:06:41.000000000 
+0200
+++ new/gwenview-4.11.2/app/contextmanager.cpp  2013-09-26 21:22:36.000000000 
+0200
@@ -80,7 +80,7 @@
     }
 };
 
-ContextManager::ContextManager(SortedDirModel* dirModel, QItemSelectionModel* 
selectionModel, QObject* parent)
+ContextManager::ContextManager(SortedDirModel* dirModel, QObject* parent)
 : QObject(parent)
 , d(new ContextManagerPrivate)
 {
@@ -94,7 +94,26 @@
     connect(d->mDirModel, SIGNAL(dataChanged(QModelIndex,QModelIndex)),
             SLOT(slotDirModelDataChanged(QModelIndex,QModelIndex)));
 
-    d->mSelectionModel = selectionModel;
+    /* HACK! In extended-selection mode, when the current index is removed,
+     * QItemSelectionModel selects the previous index if there is one, if not 
it
+     * selects the next index. This is not what we want: when the user removes
+     * an image, he expects to go to the next one, not the previous one.
+     *
+     * To overcome this, we must connect to the 
mDirModel.rowsAboutToBeRemoved()
+     * signal *before* QItemSelectionModel connects to it, so that our slot is
+     * called before QItemSelectionModel slot. This allows us to pick a new
+     * current index ourself, leaving QItemSelectionModel slot with nothing to
+     * do.
+     *
+     * This is the reason ContextManager creates a QItemSelectionModel itself:
+     * doing so ensures QItemSelectionModel cannot be connected to the
+     * mDirModel.rowsAboutToBeRemoved() signal before us.
+     */
+    connect(d->mDirModel, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)),
+            SLOT(slotRowsAboutToBeRemoved(QModelIndex,int,int)));
+
+    d->mSelectionModel = new QItemSelectionModel(d->mDirModel);
+
     connect(d->mSelectionModel, 
SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
             SLOT(slotSelectionChanged()));
     connect(d->mSelectionModel, 
SIGNAL(currentChanged(QModelIndex,QModelIndex)),
@@ -109,6 +128,11 @@
     delete d;
 }
 
+QItemSelectionModel* ContextManager::selectionModel() const
+{
+    return d->mSelectionModel;
+}
+
 void ContextManager::addItem(AbstractContextManagerItem* item)
 {
     d->mList << item;
@@ -215,4 +239,24 @@
     d->mQueuedSignals.clear();
 }
 
+void Gwenview::ContextManager::slotRowsAboutToBeRemoved(const QModelIndex& 
/*parent*/, int start, int end)
+{
+    QModelIndex oldCurrent = d->mSelectionModel->currentIndex();
+    if (oldCurrent.row() < start || oldCurrent.row() > end) {
+        // currentIndex has not been removed
+        return;
+    }
+    QModelIndex newCurrent;
+    if (end + 1 < d->mDirModel->rowCount()) {
+        newCurrent = d->mDirModel->index(end + 1, 0);
+    } else if (start > 0) {
+        newCurrent = d->mDirModel->index(start - 1, 0);
+    } else {
+        // No index we can select, nothing to do
+        return;
+    }
+    d->mSelectionModel->select(oldCurrent, QItemSelectionModel::Deselect);
+    d->mSelectionModel->setCurrentIndex(newCurrent, 
QItemSelectionModel::Select);
+}
+
 } // namespace
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gwenview-4.11.1/app/contextmanager.h 
new/gwenview-4.11.2/app/contextmanager.h
--- old/gwenview-4.11.1/app/contextmanager.h    2013-06-28 19:36:02.000000000 
+0200
+++ new/gwenview-4.11.2/app/contextmanager.h    2013-09-26 21:22:36.000000000 
+0200
@@ -47,7 +47,7 @@
 {
     Q_OBJECT
 public:
-    ContextManager(SortedDirModel*, QItemSelectionModel*, QObject* parent);
+    ContextManager(SortedDirModel*, QObject* parent);
 
     ~ContextManager();
 
@@ -65,6 +65,8 @@
 
     SortedDirModel* dirModel() const;
 
+    QItemSelectionModel* selectionModel() const;
+
 Q_SIGNALS:
     void selectionChanged();
     void selectionDataChanged();
@@ -75,6 +77,7 @@
     void slotSelectionChanged();
     void slotCurrentChanged(const QModelIndex&);
     void emitQueuedSignals();
+    void slotRowsAboutToBeRemoved(const QModelIndex& /*parent*/, int start, 
int end);
 
 private:
     ContextManagerPrivate* const d;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gwenview-4.11.1/app/mainwindow.cpp 
new/gwenview-4.11.2/app/mainwindow.cpp
--- old/gwenview-4.11.1/app/mainwindow.cpp      2013-08-28 19:06:41.000000000 
+0200
+++ new/gwenview-4.11.2/app/mainwindow.cpp      2013-09-26 21:22:36.000000000 
+0200
@@ -268,9 +268,11 @@
 
     void setupThumbnailView(QWidget* parent)
     {
+        Q_ASSERT(mContextManager);
         mBrowseMainPage = new BrowseMainPage(parent, q->actionCollection(), 
mGvCore);
 
         mThumbnailView = mBrowseMainPage->thumbnailView();
+        mThumbnailView->setSelectionModel(mContextManager->selectionModel());
         mUrlNavigator = mBrowseMainPage->urlNavigator();
 
         mDocumentInfoProvider = new DocumentInfoProvider(mDirModel);
@@ -279,7 +281,7 @@
         mThumbnailViewHelper = new ThumbnailViewHelper(mDirModel, 
q->actionCollection());
         mThumbnailView->setThumbnailViewHelper(mThumbnailViewHelper);
 
-        mThumbnailBarSelectionModel = new 
KLinkItemSelectionModel(mThumbnailBarModel, mThumbnailView->selectionModel(), 
q);
+        mThumbnailBarSelectionModel = new 
KLinkItemSelectionModel(mThumbnailBarModel, mContextManager->selectionModel(), 
q);
 
         // Connect thumbnail view
         connect(mThumbnailView, SIGNAL(indexActivated(QModelIndex)),
@@ -485,12 +487,11 @@
         edit->addAction(action->objectName(), action);
     }
 
-    void setupContextManager()
+    void setupContextManagerItems()
     {
+        Q_ASSERT(mContextManager);
         KActionCollection* actionCollection = q->actionCollection();
 
-        mContextManager = new ContextManager(mDirModel, 
mThumbnailView->selectionModel(), q);
-
         // Create context manager items
         FolderViewContextManagerItem* folderViewItem = new 
FolderViewContextManagerItem(mContextManager);
         mContextManager->addItem(folderViewItem);
@@ -886,6 +887,7 @@
     d->q = this;
     d->mCurrentMainPageId = StartMainPageId;
     d->mDirModel = new SortedDirModel(this);
+    d->mContextManager = new ContextManager(d->mDirModel, this);
     d->setupThumbnailBarModel();
     d->mGvCore = new GvCore(this, d->mDirModel);
     d->mPreloader = new Preloader(this);
@@ -896,7 +898,7 @@
     d->setupWidgets();
     d->setupActions();
     d->setupUndoActions();
-    d->setupContextManager();
+    d->setupContextManagerItems();
     d->setupFullScreenContent();
     d->updateActions();
     updatePreviousNextActions();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gwenview-4.11.1/lib/thumbnailview/thumbnailview.cpp 
new/gwenview-4.11.2/lib/thumbnailview/thumbnailview.cpp
--- old/gwenview-4.11.1/lib/thumbnailview/thumbnailview.cpp     2013-08-28 
19:06:41.000000000 +0200
+++ new/gwenview-4.11.2/lib/thumbnailview/thumbnailview.cpp     2013-09-26 
21:22:36.000000000 +0200
@@ -493,18 +493,6 @@
         d->mThumbnailProvider->removeItems(itemList);
     }
 
-    // Update current index if it is among the deleted rows
-    const int row = currentIndex().row();
-    if (start <= row && row <= end) {
-        QModelIndex index;
-        if (end < model()->rowCount() - 1) {
-            index = model()->index(end + 1, 0);
-        } else if (start > 0) {
-            index = model()->index(start - 1, 0);
-        }
-        setCurrentIndex(index);
-    }
-
     // Removing rows might make new images visible, make sure their thumbnail
     // is generated
     d->mScheduledThumbnailGenerationTimer.start();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gwenview-4.11.1/lib/version.h 
new/gwenview-4.11.2/lib/version.h
--- old/gwenview-4.11.1/lib/version.h   2013-08-28 19:06:41.000000000 +0200
+++ new/gwenview-4.11.2/lib/version.h   2013-09-26 21:22:36.000000000 +0200
@@ -33,6 +33,6 @@
 https://bugs.kde.org/editversions.cgi?product=gwenview
 
 */
-#define GWENVIEW_VERSION "4.11.0"
+#define GWENVIEW_VERSION "4.11.2"
 
 #endif /* VERSION_H */

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to