Speeding up annotation
Robert Krawitz <rlk-FrUbXkNCsVf2fBVCVOL8/[email protected]> Sun, 5 Jan 2020 14:23:50 -0500 (EST)
| Newsgroups | gmane.comp.kde.kimdaba |
|---|---|
| Message-ID | <20200105192350.4C990423A75@localhost> |
I found one easy fix in the selection code after the annotations are changed. It's still very slow and may be worse than linear, but at least one real problem is cleaned up. Given where we are in the release cycle, I want more review before pushing it. -- Robert Krawitz <rlk-FrUbXkNCsVf2fBVCVOL8/[email protected]> *** MIT Engineers A Proud Tradition http://mitathletics.com *** Member of the League for Programming Freedom -- http://ProgFree.org Project lead for Gutenprint -- http://gimp-print.sourceforge.net "Linux doesn't dictate how I work, I dictate how Linux works." --Eric Crampton _______________________________________________ KPhotoAlbum mailing list [email protected] https://mail.kdab.com/mailman/listinfo/kphotoalbum
patch-annotation-selection.patch
(application/octet-stream, 1.5 KB)
diff --git a/ThumbnailView/ThumbnailWidget.cpp b/ThumbnailView/ThumbnailWidget.cpp
index 470d4da8..6ad0a696 100644
--- a/ThumbnailView/ThumbnailWidget.cpp
+++ b/ThumbnailView/ThumbnailWidget.cpp
@@ -34,6 +34,8 @@
#include <KLocalizedString>
#include <QScrollBar>
#include <QTimer>
+#include <QItemSelection>
+#include <QItemSelectionRange>
#include <math.h>
#include <qcursor.h>
#include <qfontmetrics.h>
@@ -410,8 +412,28 @@ void ThumbnailView::ThumbnailWidget::changeSingleSelection(const DB::FileName &f
void ThumbnailView::ThumbnailWidget::select(const DB::FileNameList &items)
{
- Q_FOREACH (const DB::FileName &fileName, items)
- selectionModel()->select(model()->fileNameToIndex(fileName), QItemSelectionModel::Select);
+ QItemSelection selection;
+ QModelIndex start;
+ QModelIndex end;
+ int count = 0;
+ Q_FOREACH (const DB::FileName &fileName, items) {
+ QModelIndex index = model()->fileNameToIndex(fileName);
+ if (count == 0) {
+ start = index;
+ end = index;
+ } else if (index.row() == end.row() + 1) {
+ end = index;
+ } else {
+ selection.merge(QItemSelection(start, end), QItemSelectionModel::Select);
+ start = index;
+ end = index;
+ }
+ count++;
+ }
+ if (count > 0) {
+ selection.merge(QItemSelection(start, end), QItemSelectionModel::Select);
+ }
+ selectionModel()->select(selection, QItemSelectionModel::Select);
}
bool ThumbnailView::ThumbnailWidget::isItemUnderCursorSelected() const