diff options
| author | Peter Penz <[email protected]> | 2011-12-06 21:15:36 +0100 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2011-12-06 21:17:01 +0100 |
| commit | 9d5d18739fde76f2d606a4cc9f1e7cc442faa7e0 (patch) | |
| tree | 6079793840ce5b98c061c64552a20122f843773f /src/kitemviews/kitemlistwidget.cpp | |
| parent | 9135ff953740f27686e3c5e11dce5b8cae6cd0d0 (diff) | |
Selection and current item fixes
- Remember selection + current item when switching view-modes
- Fix the current item indicator alignment for selections
- Set the item as current item when the selection toggle has
been clicked
Diffstat (limited to 'src/kitemviews/kitemlistwidget.cpp')
| -rw-r--r-- | src/kitemviews/kitemlistwidget.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/kitemviews/kitemlistwidget.cpp b/src/kitemviews/kitemlistwidget.cpp index 24840724c..687367adb 100644 --- a/src/kitemviews/kitemlistwidget.cpp +++ b/src/kitemviews/kitemlistwidget.cpp @@ -121,11 +121,22 @@ void KItemListWidget::paint(QPainter* painter, const QStyleOptionGraphicsItem* o if (isCurrent()) { QStyleOptionViewItemV4 viewItemOption; viewItemOption.initFrom(widget); - viewItemOption.rect = textRect().toRect(); + + const QRect iconBounds = iconRect().toRect(); + const QRect textBounds = textRect().toRect(); + if (iconBounds.bottom() >= textBounds.top()) { + viewItemOption.rect = textBounds; + } else { + // See KItemListWidget::drawItemStyleOption(): The selection rectangle + // gets decreased. + viewItemOption.rect = textBounds.adjusted(1, 1, -1, -1); + } + viewItemOption.state = QStyle::State_Enabled | QStyle::State_Item; if (m_selected) { viewItemOption.state |= QStyle::State_Selected; } + viewItemOption.viewItemPosition = QStyleOptionViewItemV4::OnlyOne; style()->drawPrimitive(QStyle::PE_FrameFocusRect, &viewItemOption, painter, widget); } @@ -428,17 +439,14 @@ void KItemListWidget::drawItemStyleOption(QPainter* painter, QWidget* widget, QS viewItemOption.state = styleState; viewItemOption.viewItemPosition = QStyleOptionViewItemV4::OnlyOne; - const bool drawMerged = (iconBounds.top() == textBounds.top() && - iconBounds.bottom() == textBounds.bottom()); - - if (drawMerged) { + if (iconBounds.bottom() >= textBounds.top()) { viewItemOption.rect = iconBounds | textBounds; widget->style()->drawPrimitive(QStyle::PE_PanelItemViewItem, &viewItemOption, painter, widget); } else { viewItemOption.rect = iconBounds; widget->style()->drawPrimitive(QStyle::PE_PanelItemViewItem, &viewItemOption, painter, widget); - viewItemOption.rect = textBounds.adjusted(2, 2, -2, -2); + viewItemOption.rect = textBounds.adjusted(1, 1, -1, -1); widget->style()->drawPrimitive(QStyle::PE_PanelItemViewItem, &viewItemOption, painter, widget); } } |
