]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Improve drawing selected items in Compact/Details View and Places Panel
authorFrank Reininghaus <frank78ac@googlemail.com>
Thu, 3 Jul 2014 22:49:31 +0000 (00:49 +0200)
committerFrank Reininghaus <frank78ac@googlemail.com>
Thu, 3 Jul 2014 22:49:46 +0000 (00:49 +0200)
This commit removes the icon tinting for the selected item in Compact
and Details View, and extends the selection rectangle such that it
includes the icon area as well. The icon tinting can be disturbing, and
having a selection rectangle that only includes the text can look a bit
strange, especially in the Places Panel.

BUG: 304643
REVIEW: 119018
FIXED-IN: 4.14.0

src/kitemviews/kitemlistwidget.cpp
src/kitemviews/kitemlistwidget.h
src/kitemviews/kstandarditemlistwidget.cpp
src/kitemviews/kstandarditemlistwidget.h

index c261bf1d259a02e04005751f6fd2799395b1100e..e7d2951b9fa518866972ba0af9754203f6a0bb2c 100644 (file)
@@ -522,7 +522,7 @@ void KItemListWidget::drawItemStyleOption(QPainter* painter, QWidget* widget, QS
     viewItemOption.state = styleState;
     viewItemOption.viewItemPosition = QStyleOptionViewItemV4::OnlyOne;
     viewItemOption.showDecorationSelected = true;
-    viewItemOption.rect = textRect().toRect();
+    viewItemOption.rect = selectionRect().toRect();
     widget->style()->drawPrimitive(QStyle::PE_PanelItemViewItem, &viewItemOption, painter, widget);
 }
 
index a06bb5c9c7de95d1f8c52340caf8ee3dbe98428e..c086ee6d332e47055631a2e504e758325b9edc70 100644 (file)
@@ -163,6 +163,11 @@ public:
      */
     virtual QRectF textFocusRect() const;
 
+    /**
+     * @return Rectangle around which a selection box should be drawn if the item is selected.
+     */
+    virtual QRectF selectionRect() const = 0;
+
     /**
      * @return Rectangle for the selection-toggle that is used to select or deselect an item.
      *         Per default an empty rectangle is returned which means that no selection-toggle
index e0375480e02d401d15d096cec2a94b117215965d..998acc06655fd37932cfb2be3d087b4ebe05adfa 100644 (file)
@@ -494,6 +494,29 @@ QRectF KStandardItemListWidget::textFocusRect() const
     return m_textRect;
 }
 
+QRectF KStandardItemListWidget::selectionRect() const
+{
+    const_cast<KStandardItemListWidget*>(this)->triggerCacheRefreshing();
+
+    switch (m_layout) {
+    case IconsLayout:
+        return m_textRect;
+
+    case CompactLayout:
+    case DetailsLayout: {
+        const int padding = styleOption().padding;
+        QRectF adjustedIconRect = iconRect().adjusted(-padding, -padding, padding, padding);
+        return adjustedIconRect | m_textRect;
+    }
+
+    default:
+        Q_ASSERT(false);
+        break;
+    }
+
+    return m_textRect;
+}
+
 QRectF KStandardItemListWidget::expansionToggleRect() const
 {
     const_cast<KStandardItemListWidget*>(this)->triggerCacheRefreshing();
@@ -945,7 +968,7 @@ void KStandardItemListWidget::updatePixmapCache()
             KIconEffect::semiTransparent(m_pixmap);
         }
 
-        if (isSelected()) {
+        if (m_layout == IconsLayout && isSelected()) {
             const QColor color = palette().brush(QPalette::Normal, QPalette::Highlight).color();
             QImage image = m_pixmap.toImage();
             KIconEffect::colorize(image, color, 0.8f);
index 4f7a9136e0c52ecbbf883453a79400870dcf4b26..403794fc3e53ecee6172fb64944cc8a1e69130e6 100644 (file)
@@ -109,6 +109,7 @@ public:
     virtual QRectF iconRect() const;
     virtual QRectF textRect() const;
     virtual QRectF textFocusRect() const;
+    virtual QRectF selectionRect() const;
     virtual QRectF expansionToggleRect() const;
     virtual QRectF selectionToggleRect() const;
     virtual QPixmap createDragPixmap(const QStyleOptionGraphicsItem* option, QWidget* widget = 0);