mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-11-08 22:45:43 +00:00
63 lines
2.2 KiB
Diff
63 lines
2.2 KiB
Diff
|
From e340844bd614add505a39a3a6b915632476f6305 Mon Sep 17 00:00:00 2001
|
||
|
From: Gabriel de Dietrich <gabriel.dietrich-de@nokia.com>
|
||
|
Date: Tue, 15 Feb 2011 11:19:26 +0100
|
||
|
Subject: [PATCH] Fix crash in KPackageKit
|
||
|
|
||
|
QTreeViewPrivate::itemHeight() may refer to an invalid QModelIndex
|
||
|
after calling QTreeView::indexRowSizeHint().
|
||
|
|
||
|
Same thing inside QTreeView::indexRowSizeHint(), since
|
||
|
QHeaderView::count() will call
|
||
|
QAbstractItemViewPrivate::executePostedLayout() which may invalidate
|
||
|
all the QModelIndex.
|
||
|
|
||
|
Reviewed-by: Olivier
|
||
|
Task-number: QTBUG-16292
|
||
|
---
|
||
|
src/gui/itemviews/qtreeview.cpp | 11 ++++++-----
|
||
|
1 files changed, 6 insertions(+), 5 deletions(-)
|
||
|
|
||
|
diff --git a/src/gui/itemviews/qtreeview.cpp b/src/gui/itemviews/qtreeview.cpp
|
||
|
index f1f3236..c0573bb 100644
|
||
|
--- a/src/gui/itemviews/qtreeview.cpp
|
||
|
+++ b/src/gui/itemviews/qtreeview.cpp
|
||
|
@@ -2753,6 +2753,7 @@ int QTreeView::indexRowSizeHint(const QModelIndex &index) const
|
||
|
|
||
|
int start = -1;
|
||
|
int end = -1;
|
||
|
+ int indexRow = index.row();
|
||
|
int count = d->header->count();
|
||
|
bool emptyHeader = (count == 0);
|
||
|
QModelIndex parent = index.parent();
|
||
|
@@ -2789,7 +2790,7 @@ int QTreeView::indexRowSizeHint(const QModelIndex &index) const
|
||
|
int logicalColumn = emptyHeader ? column : d->header->logicalIndex(column);
|
||
|
if (d->header->isSectionHidden(logicalColumn))
|
||
|
continue;
|
||
|
- QModelIndex idx = d->model->index(index.row(), logicalColumn, parent);
|
||
|
+ QModelIndex idx = d->model->index(indexRow, logicalColumn, parent);
|
||
|
if (idx.isValid()) {
|
||
|
QWidget *editor = d->editorForIndex(idx).editor;
|
||
|
if (editor && d->persistent.contains(editor)) {
|
||
|
@@ -3224,14 +3225,14 @@ int QTreeViewPrivate::itemHeight(int item) const
|
||
|
if (viewItems.isEmpty())
|
||
|
return 0;
|
||
|
const QModelIndex &index = viewItems.at(item).index;
|
||
|
+ if (!index.isValid())
|
||
|
+ return 0;
|
||
|
int height = viewItems.at(item).height;
|
||
|
- if (height <= 0 && index.isValid()) {
|
||
|
+ if (height <= 0) {
|
||
|
height = q_func()->indexRowSizeHint(index);
|
||
|
viewItems[item].height = height;
|
||
|
}
|
||
|
- if (!index.isValid() || height < 0)
|
||
|
- return 0;
|
||
|
- return height;
|
||
|
+ return qMax(height, 0);
|
||
|
}
|
||
|
|
||
|
|
||
|
--
|
||
|
1.6.1
|
||
|
|