┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrank Reininghaus <[email protected]>2009-12-09 18:38:54 +0000
committerFrank Reininghaus <[email protected]>2009-12-09 18:38:54 +0000
commitf5deeadebbb67b4b20eae13f55e0ef66f4127eea (patch)
tree04255f590e07c6916bb5aad92394ff1512ee076f
parent72280a5fdcb05c31f216d1d46de3b229deef21f8 (diff)
Rename Dolphin View's nameColumnRect member to visualRect.
This overrides QTreeView::visualRect, such that the "visual rect" matches the area used in indexAt. Fixes the problem that the selection loses items in the Details View when selecting new items with Shift+Keyboard. BUG: 217447 svn path=/trunk/KDE/kdebase/apps/; revision=1060716
-rw-r--r--src/dolphindetailsview.cpp30
-rw-r--r--src/dolphindetailsview.h3
2 files changed, 16 insertions, 17 deletions
diff --git a/src/dolphindetailsview.cpp b/src/dolphindetailsview.cpp
index bc1598541..1bf5f75e0 100644
--- a/src/dolphindetailsview.cpp
+++ b/src/dolphindetailsview.cpp
@@ -445,10 +445,22 @@ QModelIndex DolphinDetailsView::indexAt(const QPoint& point) const
// the blank portion of the name column counts as empty space
const QModelIndex index = QTreeView::indexAt(point);
const bool isAboveEmptySpace = !m_useDefaultIndexAt &&
- (index.column() == KDirModel::Name) && !nameColumnRect(index).contains(point);
+ (index.column() == KDirModel::Name) && !visualRect(index).contains(point);
return isAboveEmptySpace ? QModelIndex() : index;
}
+QRect DolphinDetailsView::visualRect(const QModelIndex& index) const
+{
+ QRect rect = QTreeView::visualRect(index);
+ const KFileItem item = m_controller->itemForIndex(index);
+ if (!item.isNull()) {
+ const int width = DolphinFileItemDelegate::nameColumnWidth(item.text(), viewOptions());
+ rect.setWidth(width);
+ }
+
+ return rect;
+}
+
void DolphinDetailsView::setSelection(const QRect& rect, QItemSelectionModel::SelectionFlags command)
{
// We must override setSelection() as Qt calls it internally and when this happens
@@ -791,7 +803,7 @@ void DolphinDetailsView::updateElasticBandSelection()
QModelIndex toggleIndexRangeBegin = QModelIndex();
do {
- QRect currIndexRect = nameColumnRect(currIndex);
+ QRect currIndexRect = visualRect(currIndex);
// Update some optimization info as we go.
const int cr = currIndexRect.right();
@@ -994,18 +1006,6 @@ void DolphinDetailsView::resizeColumns()
headerView->resizeSection(KDirModel::Name, columnWidth[KDirModel::Name]);
}
-QRect DolphinDetailsView::nameColumnRect(const QModelIndex& index) const
-{
- QRect rect = visualRect(index);
- const KFileItem item = m_controller->itemForIndex(index);
- if (!item.isNull()) {
- const int width = DolphinFileItemDelegate::nameColumnWidth(item.text(), viewOptions());
- rect.setWidth(width);
- }
-
- return rect;
-}
-
bool DolphinDetailsView::isAboveExpandingToggle(const QPoint& pos) const
{
// QTreeView offers no public API to get the information whether an index has an
@@ -1014,7 +1014,7 @@ bool DolphinDetailsView::isAboveExpandingToggle(const QPoint& pos) const
if (itemsExpandable()) {
const QModelIndex index = QTreeView::indexAt(pos);
if (index.isValid() && (index.column() == KDirModel::Name)) {
- QRect rect = nameColumnRect(index);
+ QRect rect = visualRect(index);
const int toggleSize = rect.height();
if (isRightToLeft()) {
rect.moveRight(rect.right());
diff --git a/src/dolphindetailsview.h b/src/dolphindetailsview.h
index f9a795560..30e126cd4 100644
--- a/src/dolphindetailsview.h
+++ b/src/dolphindetailsview.h
@@ -72,6 +72,7 @@ protected:
virtual void currentChanged(const QModelIndex& current, const QModelIndex& previous);
virtual bool eventFilter(QObject* watched, QEvent* event);
virtual QModelIndex indexAt (const QPoint& point) const;
+ virtual QRect visualRect(const QModelIndex& index) const;
virtual void setSelection(const QRect& rect, QItemSelectionModel::SelectionFlags command);
virtual void scrollTo(const QModelIndex& index, ScrollHint hint = EnsureVisible);
@@ -206,8 +207,6 @@ private:
*/
void resizeColumns();
- QRect nameColumnRect(const QModelIndex& index) const;
-
/**
* Returns true, if \a pos is within the expanding toggle of a tree.
*/