]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Very interesting bug in Qt in which I will debug. For now, and since we need to relea...
authorRafael Fernández López <ereslibre@kde.org>
Fri, 14 Dec 2007 19:20:47 +0000 (19:20 +0000)
committerRafael Fernández López <ereslibre@kde.org>
Fri, 14 Dec 2007 19:20:47 +0000 (19:20 +0000)
is that when you select by dragging with a rect a set of items, say (1, 2, 3) and you Ctrl+drag another set (5,6) the (1,2,3) selection is lost. If you do the same, that
is: select (1, 2, 3), now Ctrl+click on (4), it is not lost. Now, ctrl+drag another set (5, 6), the selection lost is (4). So we can say that the selection lost is the
last one done.

This is only a workaround and should be removed when fixed on Qt (I am going to debug it on Qt, to see where the fail is).

This workaround does not only fix KCategorizedView, but QListView also.

CCMAIL: peter.penz@gmx.at

svn path=/trunk/KDE/kdebase/apps/; revision=748545

src/kcategorizedview.cpp

index 6590c4b2ac99095147add4275863abb12945d921..152573214d32a1f0c129315218886ae4b21433ef 100644 (file)
 // Qt 4.4, so that this workaround can be skipped.
 #define DOLPHIN_DRAGANDDROP
 
+// By defining KDE_WORKAROUND_FOR_QT_VIEW_BUG we save the selection being held
+// before mousePressEvent happens. On Qt there is something clearing the last
+// selection made, what make it impossible to save our very last selection.
+#define KDE_WORKAROUND_FOR_QT_VIEW_BUG
+
 KCategorizedView::Private::Private(KCategorizedView *listView)
     : listView(listView)
     , categoryDrawer(0)
@@ -1038,7 +1043,13 @@ void KCategorizedView::mousePressEvent(QMouseEvent *event)
                                                             horizontalOffset());
     }
 
+#ifdef KDE_WORKAROUND_FOR_QT_VIEW_BUG
+    QItemSelection prevSelection = selectionModel()->selection();
+#endif
     QListView::mousePressEvent(event);
+#ifdef KDE_WORKAROUND_FOR_QT_VIEW_BUG
+    selectionModel()->select(prevSelection, QItemSelectionModel::Select);
+#endif
 
     viewport()->update(d->categoryVisualRect(d->hoveredCategory));
 }