]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kitemlistwidget.cpp
Merge branch 'master' into kf6
[dolphin.git] / src / kitemviews / kitemlistwidget.cpp
index 2c8ef70a57bfd8cff26801aea329480e8b39bc66..fb985ba23c67f4cdb9fc419887806e2c2f795129 100644 (file)
@@ -105,13 +105,23 @@ void KItemListWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem *o
     Q_UNUSED(option)
 
     if (m_alternateBackground) {
-        const QColor backgroundColor = m_styleOption.palette.color(QPalette::AlternateBase);
+        QColor backgroundColor = m_styleOption.palette.color(QPalette::AlternateBase);
+        if (!widget->hasFocus()) {
+            QColor baseColor = m_styleOption.palette.color(QPalette::Base);
+            if (baseColor.lightnessF() > 0.5) {
+                // theme seems light
+                backgroundColor = backgroundColor.lighter(101);
+            } else {
+                // theme seems dark
+                backgroundColor = backgroundColor.darker(101);
+            }
+        }
         const QRectF backgroundRect(0, 0, size().width(), size().height());
         painter->fillRect(backgroundRect, backgroundColor);
     }
 
     if (m_selected && m_editedRole.isEmpty()) {
-        const QStyle::State activeState(isActiveWindow() ? QStyle::State_Active : 0);
+        const QStyle::State activeState(isActiveWindow() && widget->hasFocus() ? QStyle::State_Active : 0);
         drawItemStyleOption(painter, widget, activeState | QStyle::State_Enabled | QStyle::State_Selected | QStyle::State_Item);
     }
 
@@ -120,7 +130,7 @@ void KItemListWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem *o
         initStyleOption(&focusRectOption);
         focusRectOption.rect = textFocusRect().toRect();
         focusRectOption.state = QStyle::State_Enabled | QStyle::State_Item | QStyle::State_KeyboardFocusChange;
-        if (m_selected) {
+        if (m_selected && widget->hasFocus()) {
             focusRectOption.state |= QStyle::State_Selected;
         }
 
@@ -135,8 +145,8 @@ void KItemListWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem *o
             m_hoverCache->fill(Qt::transparent);
 
             QPainter pixmapPainter(m_hoverCache);
-            const QStyle::State activeState(isActiveWindow() ? QStyle::State_Active : 0);
-            drawItemStyleOption(&pixmapPainter, widget, activeState | QStyle::State_Enabled | QStyle::State_MouseOver | QStyle::State_Item);
+            const QStyle::State activeState(isActiveWindow() && widget->hasFocus() ? QStyle::State_Active | QStyle::State_Enabled : 0);
+            drawItemStyleOption(&pixmapPainter, widget, activeState | QStyle::State_MouseOver | QStyle::State_Item);
         }
 
         const qreal opacity = painter->opacity();
@@ -604,3 +614,5 @@ void KItemListWidget::drawItemStyleOption(QPainter *painter, QWidget *widget, QS
     viewItemOption.rect = selectionRect().toRect();
     style()->drawPrimitive(QStyle::PE_PanelItemViewItem, &viewItemOption, painter, widget);
 }
+
+#include "moc_kitemlistwidget.cpp"