From b039392f344f4d8b0a540c542f83e418349a7d4e Mon Sep 17 00:00:00 2001 From: Emmanuel Pescosta Date: Tue, 14 Aug 2012 22:02:24 +0200 Subject: [PATCH] Fix wrong text color in Places Group Header. Use QPalette::Window for base color and QPalette::WindowText for text color. Also changed m_roleColor color mixing to 60% (from 70%) -> Better visible color difference when base color is darker than text color. Also changed styleOption().palette.brush(group, role).color() to styleOption().palette.color(group, role) in KStandardItemListWidget -> should be more efficient. BUG: 303133 --- src/kitemviews/kitemlistgroupheader.cpp | 28 +++++++++++++++++-- src/kitemviews/kitemlistgroupheader.h | 6 ++++ src/kitemviews/kstandarditemlistwidget.cpp | 6 ++-- src/kitemviews/kstandarditemlistwidget.h | 2 +- src/panels/folders/foldersitemlistwidget.cpp | 2 +- src/panels/folders/foldersitemlistwidget.h | 2 +- .../places/placesitemlistgroupheader.cpp | 5 ++++ src/panels/places/placesitemlistgroupheader.h | 2 ++ src/panels/places/placesitemlistwidget.cpp | 2 +- src/panels/places/placesitemlistwidget.h | 2 +- 10 files changed, 46 insertions(+), 11 deletions(-) diff --git a/src/kitemviews/kitemlistgroupheader.cpp b/src/kitemviews/kitemlistgroupheader.cpp index 576d20b88..17c95a97c 100644 --- a/src/kitemviews/kitemlistgroupheader.cpp +++ b/src/kitemviews/kitemlistgroupheader.cpp @@ -180,10 +180,10 @@ void KItemListGroupHeader::updateCache() // Calculate the role- and line-color. No alphablending is used for // performance reasons. - const QColor c1 = m_styleOption.palette.text().color(); - const QColor c2 = m_styleOption.palette.base().color(); + const QColor c1 = textColor(); + const QColor c2 = baseColor(); m_separatorColor = mixedColor(c1, c2, 10); - m_roleColor = mixedColor(c1, c2, 70); + m_roleColor = mixedColor(c1, c2, 60); const int padding = qMax(1, m_styleOption.padding); const int horizontalMargin = qMax(2, m_styleOption.horizontalMargin); @@ -211,4 +211,26 @@ QColor KItemListGroupHeader::mixedColor(const QColor& c1, const QColor& c2, int (c1.blue() * c1Percent + c2.blue() * c2Percent) / 100); } +QPalette::ColorRole KItemListGroupHeader::normalTextColorRole() const +{ + return QPalette::Text; +} + +QPalette::ColorRole KItemListGroupHeader::normalBaseColorRole() const +{ + return QPalette::Window; +} + +QColor KItemListGroupHeader::textColor() const +{ + const QPalette::ColorGroup group = isActiveWindow() ? QPalette::Active : QPalette::Inactive; + return styleOption().palette.color(group, normalTextColorRole()); +} + +QColor KItemListGroupHeader::baseColor() const +{ + const QPalette::ColorGroup group = isActiveWindow() ? QPalette::Active : QPalette::Inactive; + return styleOption().palette.color(group, normalBaseColorRole()); +} + #include "kitemlistgroupheader.moc" diff --git a/src/kitemviews/kitemlistgroupheader.h b/src/kitemviews/kitemlistgroupheader.h index e19ab4871..1e8ed2cca 100644 --- a/src/kitemviews/kitemlistgroupheader.h +++ b/src/kitemviews/kitemlistgroupheader.h @@ -104,11 +104,17 @@ protected: /** @reimp */ virtual void resizeEvent(QGraphicsSceneResizeEvent* event); + virtual QPalette::ColorRole normalTextColorRole() const; + virtual QPalette::ColorRole normalBaseColorRole() const; + private: void updateCache(); static QColor mixedColor(const QColor& c1, const QColor& c2, int c1Percent = 50); + QColor textColor() const; + QColor baseColor() const; + private: bool m_dirtyCache; QByteArray m_role; diff --git a/src/kitemviews/kstandarditemlistwidget.cpp b/src/kitemviews/kstandarditemlistwidget.cpp index 69c5602c7..3a76f14a2 100644 --- a/src/kitemviews/kstandarditemlistwidget.cpp +++ b/src/kitemviews/kstandarditemlistwidget.cpp @@ -464,7 +464,7 @@ QFont KStandardItemListWidget::customizedFont(const QFont& baseFont) const return baseFont; } -QPalette::ColorRole KStandardItemListWidget::normalTextColorPalette() const +QPalette::ColorRole KStandardItemListWidget::normalTextColorRole() const { return QPalette::Text; } @@ -485,8 +485,8 @@ QColor KStandardItemListWidget::textColor() const } const QPalette::ColorGroup group = isActiveWindow() ? QPalette::Active : QPalette::Inactive; - const QPalette::ColorRole role = isSelected() ? QPalette::HighlightedText : normalTextColorPalette(); - return styleOption().palette.brush(group, role).color(); + const QPalette::ColorRole role = isSelected() ? QPalette::HighlightedText : normalTextColorRole(); + return styleOption().palette.color(group, role); } void KStandardItemListWidget::setOverlay(const QPixmap& overlay) diff --git a/src/kitemviews/kstandarditemlistwidget.h b/src/kitemviews/kstandarditemlistwidget.h index 462d83d0f..787722ddd 100644 --- a/src/kitemviews/kstandarditemlistwidget.h +++ b/src/kitemviews/kstandarditemlistwidget.h @@ -120,7 +120,7 @@ protected: */ virtual QFont customizedFont(const QFont& baseFont) const; - virtual QPalette::ColorRole normalTextColorPalette() const; + virtual QPalette::ColorRole normalTextColorRole() const; void setTextColor(const QColor& color); QColor textColor() const; diff --git a/src/panels/folders/foldersitemlistwidget.cpp b/src/panels/folders/foldersitemlistwidget.cpp index 513059204..b4f9a5be8 100644 --- a/src/panels/folders/foldersitemlistwidget.cpp +++ b/src/panels/folders/foldersitemlistwidget.cpp @@ -28,7 +28,7 @@ FoldersItemListWidget::~FoldersItemListWidget() { } -QPalette::ColorRole FoldersItemListWidget::normalTextColorPalette() const +QPalette::ColorRole FoldersItemListWidget::normalTextColorRole() const { return QPalette::WindowText; } diff --git a/src/panels/folders/foldersitemlistwidget.h b/src/panels/folders/foldersitemlistwidget.h index fa7b143ae..08d41b829 100644 --- a/src/panels/folders/foldersitemlistwidget.h +++ b/src/panels/folders/foldersitemlistwidget.h @@ -34,7 +34,7 @@ public: virtual ~FoldersItemListWidget(); protected: - virtual QPalette::ColorRole normalTextColorPalette() const; + virtual QPalette::ColorRole normalTextColorRole() const; }; #endif diff --git a/src/panels/places/placesitemlistgroupheader.cpp b/src/panels/places/placesitemlistgroupheader.cpp index 27d4c7917..ec7c4b18c 100644 --- a/src/panels/places/placesitemlistgroupheader.cpp +++ b/src/panels/places/placesitemlistgroupheader.cpp @@ -37,4 +37,9 @@ void PlacesItemListGroupHeader::paintSeparator(QPainter* painter, const QColor& Q_UNUSED(color); } +QPalette::ColorRole PlacesItemListGroupHeader::normalTextColorRole() const +{ + return QPalette::WindowText; +} + #include "placesitemlistgroupheader.moc" diff --git a/src/panels/places/placesitemlistgroupheader.h b/src/panels/places/placesitemlistgroupheader.h index fbcd116f1..1c2d5cc25 100644 --- a/src/panels/places/placesitemlistgroupheader.h +++ b/src/panels/places/placesitemlistgroupheader.h @@ -32,6 +32,8 @@ public: protected: virtual void paintSeparator(QPainter* painter, const QColor& color); + + virtual QPalette::ColorRole normalTextColorRole() const; }; #endif diff --git a/src/panels/places/placesitemlistwidget.cpp b/src/panels/places/placesitemlistwidget.cpp index 00f0fdab0..e33d1daf9 100644 --- a/src/panels/places/placesitemlistwidget.cpp +++ b/src/panels/places/placesitemlistwidget.cpp @@ -35,7 +35,7 @@ bool PlacesItemListWidget::isHidden() const return data().value("isHidden").toBool(); } -QPalette::ColorRole PlacesItemListWidget::normalTextColorPalette() const +QPalette::ColorRole PlacesItemListWidget::normalTextColorRole() const { return QPalette::WindowText; } diff --git a/src/panels/places/placesitemlistwidget.h b/src/panels/places/placesitemlistwidget.h index 93cd8f468..a2a88c1f0 100644 --- a/src/panels/places/placesitemlistwidget.h +++ b/src/panels/places/placesitemlistwidget.h @@ -36,7 +36,7 @@ public: protected: virtual bool isHidden() const; - virtual QPalette::ColorRole normalTextColorPalette() const; + virtual QPalette::ColorRole normalTextColorRole() const; }; #endif -- 2.47.3