diff --git a/share/qtcreator/themes/dark.creatortheme b/share/qtcreator/themes/dark.creatortheme index 14f10164755..1a92bb54fbf 100644 --- a/share/qtcreator/themes/dark.creatortheme +++ b/share/qtcreator/themes/dark.creatortheme @@ -12,13 +12,16 @@ selectedBackground=46ffffff normalBackground=ff333333 alternateBackground=ff515151 error=ffff0000 +textColorLink=ff007af4 +textColorLinkVisited=ffa57aff +backgroundColorDisabled=ff444444 [Colors] BackgroundColorAlternate=alternateBackground BackgroundColorDark=shadowBackground BackgroundColorHover=hoverBackground BackgroundColorNormal=normalBackground -BackgroundColorDisabled=ff444444 +BackgroundColorDisabled=backgroundColorDisabled BackgroundColorSelected=selectedBackground BadgeLabelBackgroundColorChecked=normalBackground BadgeLabelBackgroundColorUnchecked=selectedBackground @@ -112,8 +115,8 @@ SplitterColor=ff313131 TextColorDisabled=textDisabled TextColorError=ffff4040 TextColorHighlight=ffff0000 -TextColorLink=ff007af4 -TextColorLinkVisited=ffa57aff +TextColorLink=textColorLink +TextColorLinkVisited=textColorLinkVisited TextColorNormal=text TodoItemTextColor=ff000000 ToggleButtonBackgroundColor=shadowBackground @@ -177,6 +180,26 @@ ProjectExplorer_TaskWarn_TextMarkColor=ffffff40 ClangCodeModel_Error_TextMarkColor=ffff882f ClangCodeModel_Warning_TextMarkColor=ffceff40 +PaletteWindow=normalBackground +PaletteWindowText=text +PaletteBase=normalBackground +PaletteAlternateBase=alternateBackground +PaletteButton=shadowBackground +PaletteBrightText=ffff0000 +PaletteText=text +PaletteButtonText=text +PaletteToolTipBase=selectedBackground +PaletteHighlight=selectedBackground +PaletteDark=shadowBackground +PaletteHighlightedText=ffffffff +PaletteToolTipText=text +PaletteLink=textColorLink +PaletteLinkVisited=textColorLinkVisited +PaletteWindowDisabled=backgroundColorDisabled +PaletteWindowTextDisabled=textDisabled +PaletteBaseDisabled=backgroundColorDisabled +PaletteTextDisabled=textDisabled + [Flags] ComboBoxDrawTextShadow=false DerivePaletteFromTheme=true diff --git a/share/qtcreator/themes/flat-dark.creatortheme b/share/qtcreator/themes/flat-dark.creatortheme index 1944ca040b4..bf2b98e8341 100644 --- a/share/qtcreator/themes/flat-dark.creatortheme +++ b/share/qtcreator/themes/flat-dark.creatortheme @@ -17,13 +17,16 @@ normalBackground=ff2E2F30 alternateBackground=ff353637 error=ffe41e25 splitter=ff06080A +textColorLink=ff007af4 +textColorLinkVisited=ffa57aff +backgroundColorDisabled=ff444444 [Colors] BackgroundColorAlternate=alternateBackground BackgroundColorDark=shadowBackground BackgroundColorHover=hoverBackground BackgroundColorNormal=normalBackground -BackgroundColorDisabled=ff444444 +BackgroundColorDisabled=backgroundColorDisabled BackgroundColorSelected=selectedBackground BadgeLabelBackgroundColorChecked=ffe0e0e0 BadgeLabelBackgroundColorUnchecked=ff808080 @@ -117,8 +120,8 @@ SplitterColor=splitter TextColorDisabled=textDisabled TextColorError=ffff4040 TextColorHighlight=ffff0000 -TextColorLink=ff007af4 -TextColorLinkVisited=ffa57aff +TextColorLink=textColorLink +TextColorLinkVisited=textColorLinkVisited TextColorNormal=text TodoItemTextColor=text ToggleButtonBackgroundColor=shadowBackground @@ -182,6 +185,26 @@ ProjectExplorer_TaskWarn_TextMarkColor=ffffff40 ClangCodeModel_Error_TextMarkColor=ffff882f ClangCodeModel_Warning_TextMarkColor=ffceff40 +PaletteWindow=normalBackground +PaletteWindowText=text +PaletteBase=normalBackground +PaletteAlternateBase=alternateBackground +PaletteButton=shadowBackground +PaletteBrightText=ffff0000 +PaletteText=text +PaletteButtonText=text +PaletteToolTipBase=selectedBackground +PaletteHighlight=selectedBackground +PaletteDark=shadowBackground +PaletteHighlightedText=ffffffff +PaletteToolTipText=text +PaletteLink=textColorLink +PaletteLinkVisited=textColorLinkVisited +PaletteWindowDisabled=backgroundColorDisabled +PaletteWindowTextDisabled=textDisabled +PaletteBaseDisabled=backgroundColorDisabled +PaletteTextDisabled=textDisabled + [Flags] ComboBoxDrawTextShadow=false DerivePaletteFromTheme=true diff --git a/src/libs/utils/theme/theme.cpp b/src/libs/utils/theme/theme.cpp index 7195cab29d3..90037dee7c8 100644 --- a/src/libs/utils/theme/theme.cpp +++ b/src/libs/utils/theme/theme.cpp @@ -192,8 +192,9 @@ void Theme::readSettings(QSettings &settings) for (int i = 0, total = e.keyCount(); i < total; ++i) { const QString key = QLatin1String(e.key(i)); if (!settings.contains(key)) { - qWarning("Theme \"%s\" misses color setting for key \"%s\".", - qPrintable(d->fileName), qPrintable(key)); + if (i < PaletteWindow || i > PaletteShadowDisabled) + qWarning("Theme \"%s\" misses color setting for key \"%s\".", + qPrintable(d->fileName), qPrintable(key)); continue; } d->colors[i] = readNamedColor(settings.value(key).toString()); @@ -253,27 +254,64 @@ QPalette Theme::palette() const if (!flag(DerivePaletteFromTheme)) return pal; - // FIXME: introduce some more color roles for this + const static struct { + Color themeColor; + QPalette::ColorRole paletteColorRole; + QPalette::ColorGroup paletteColorGroup; + bool setColorRoleAsBrush; + } mapping[] = { + { PaletteWindow, QPalette::Window, QPalette::All, false}, + { PaletteWindowDisabled, QPalette::Window, QPalette::Disabled, false}, + { PaletteWindowText, QPalette::WindowText, QPalette::All, true}, + { PaletteWindowTextDisabled, QPalette::WindowText, QPalette::Disabled, true}, + { PaletteBase, QPalette::Base, QPalette::All, false}, + { PaletteBaseDisabled, QPalette::Base, QPalette::Disabled, false}, + { PaletteAlternateBase, QPalette::AlternateBase, QPalette::All, false}, + { PaletteAlternateBaseDisabled, QPalette::AlternateBase, QPalette::Disabled, false}, + { PaletteToolTipBase, QPalette::ToolTipBase, QPalette::All, true}, + { PaletteToolTipBaseDisabled, QPalette::ToolTipBase, QPalette::Disabled, true}, + { PaletteToolTipText, QPalette::ToolTipText, QPalette::All, false}, + { PaletteToolTipTextDisabled, QPalette::ToolTipText, QPalette::Disabled, false}, + { PaletteText, QPalette::Text, QPalette::All, true}, + { PaletteTextDisabled, QPalette::Text, QPalette::Disabled, true}, + { PaletteButton, QPalette::Button, QPalette::All, false}, + { PaletteButtonDisabled, QPalette::Button, QPalette::Disabled, false}, + { PaletteButtonText, QPalette::ButtonText, QPalette::All, true}, + { PaletteButtonTextDisabled, QPalette::ButtonText, QPalette::Disabled, true}, + { PaletteBrightText, QPalette::BrightText, QPalette::All, false}, + { PaletteBrightTextDisabled, QPalette::BrightText, QPalette::Disabled, false}, + { PaletteHighlight, QPalette::Highlight, QPalette::All, true}, + { PaletteHighlightDisabled, QPalette::Highlight, QPalette::Disabled, true}, + { PaletteHighlightedText, QPalette::HighlightedText, QPalette::All, true}, + { PaletteHighlightedTextDisabled, QPalette::HighlightedText, QPalette::Disabled, true}, + { PaletteLink, QPalette::Link, QPalette::All, false}, + { PaletteLinkDisabled, QPalette::Link, QPalette::Disabled, false}, + { PaletteLinkVisited, QPalette::LinkVisited, QPalette::All, false}, + { PaletteLinkVisitedDisabled, QPalette::LinkVisited, QPalette::Disabled, false}, + { PaletteLight, QPalette::Light, QPalette::All, false}, + { PaletteLightDisabled, QPalette::Light, QPalette::Disabled, false}, + { PaletteMidlight, QPalette::Midlight, QPalette::All, false}, + { PaletteMidlightDisabled, QPalette::Midlight, QPalette::Disabled, false}, + { PaletteDark, QPalette::Dark, QPalette::All, false}, + { PaletteDarkDisabled, QPalette::Dark, QPalette::Disabled, false}, + { PaletteMid, QPalette::Mid, QPalette::All, false}, + { PaletteMidDisabled, QPalette::Mid, QPalette::Disabled, false}, + { PaletteShadow, QPalette::Shadow, QPalette::All, false}, + { PaletteShadowDisabled, QPalette::Shadow, QPalette::Disabled, false} + }; + + for (auto entry: mapping) { + const QColor themeColor = color(entry.themeColor); + // Use original color if color is not defined in theme. + if (themeColor.isValid()) { + if (entry.setColorRoleAsBrush) + // TODO: Find out why sometimes setBrush is used + pal.setBrush(entry.paletteColorGroup, entry.paletteColorRole, themeColor); + else + pal.setColor(entry.paletteColorGroup, entry.paletteColorRole, themeColor); + } + } - pal.setColor(QPalette::Window, color(Theme::BackgroundColorNormal)); - pal.setBrush(QPalette::WindowText, color(Theme::TextColorNormal)); - pal.setColor(QPalette::Base, color(Theme::BackgroundColorNormal)); - pal.setColor(QPalette::AlternateBase, color(Theme::BackgroundColorAlternate)); - pal.setColor(QPalette::Button, color(Theme::BackgroundColorDark)); - pal.setColor(QPalette::BrightText, Qt::red); - pal.setBrush(QPalette::Text, color(Theme::TextColorNormal)); - pal.setBrush(QPalette::ButtonText, color(Theme::TextColorNormal)); - pal.setBrush(QPalette::ToolTipBase, color(Theme::BackgroundColorSelected)); - pal.setColor(QPalette::Highlight, color(Theme::BackgroundColorSelected)); - pal.setColor(QPalette::Dark, color(Theme::BackgroundColorDark)); - pal.setColor(QPalette::HighlightedText, Qt::white); - pal.setColor(QPalette::ToolTipText, color(Theme::TextColorNormal)); - pal.setColor(QPalette::Link, color(Theme::TextColorLink)); - pal.setColor(QPalette::LinkVisited, color(Theme::TextColorLinkVisited)); - pal.setColor(QPalette::Disabled, QPalette::Window, color(Theme::BackgroundColorDisabled)); - pal.setBrush(QPalette::Disabled, QPalette::WindowText, color(Theme::TextColorDisabled)); - pal.setColor(QPalette::Disabled, QPalette::Base, color(Theme::BackgroundColorDisabled)); - pal.setBrush(QPalette::Disabled, QPalette::Text, color(Theme::TextColorDisabled)); return pal; } diff --git a/src/libs/utils/theme/theme.h b/src/libs/utils/theme/theme.h index 2c608b2483d..9358f11d282 100644 --- a/src/libs/utils/theme/theme.h +++ b/src/libs/utils/theme/theme.h @@ -125,6 +125,52 @@ public: TreeViewArrowColorNormal, TreeViewArrowColorSelected, + /* Palette for QPalette */ + + PaletteWindow, + PaletteWindowText, + PaletteBase, + PaletteAlternateBase, + PaletteToolTipBase, + PaletteToolTipText, + PaletteText, + PaletteButton, + PaletteButtonText, + PaletteBrightText, + PaletteHighlight, + PaletteHighlightedText, + PaletteLink, + PaletteLinkVisited, + + PaletteLight, + PaletteMidlight, + PaletteDark, + PaletteMid, + PaletteShadow, + + PaletteWindowDisabled, + PaletteBackgroundDisabled, + PaletteWindowTextDisabled, + PaletteForegroundDisabled, + PaletteBaseDisabled, + PaletteAlternateBaseDisabled, + PaletteToolTipBaseDisabled, + PaletteToolTipTextDisabled, + PaletteTextDisabled, + PaletteButtonDisabled, + PaletteButtonTextDisabled, + PaletteBrightTextDisabled, + PaletteHighlightDisabled, + PaletteHighlightedTextDisabled, + PaletteLinkDisabled, + PaletteLinkVisitedDisabled, + + PaletteLightDisabled, + PaletteMidlightDisabled, + PaletteDarkDisabled, + PaletteMidDisabled, + PaletteShadowDisabled, + /* Icons */ IconsBaseColor,