diff options
Diffstat (limited to 'src/plugins/coreplugin/manhattanstyle.cpp')
-rw-r--r-- | src/plugins/coreplugin/manhattanstyle.cpp | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/plugins/coreplugin/manhattanstyle.cpp b/src/plugins/coreplugin/manhattanstyle.cpp index 52074ffc57..9326552159 100644 --- a/src/plugins/coreplugin/manhattanstyle.cpp +++ b/src/plugins/coreplugin/manhattanstyle.cpp @@ -359,7 +359,7 @@ int ManhattanStyle::styleHint(StyleHint hint, const QStyleOption *option, const ret = true; break; case QStyle::SH_EtchDisabledText: - if (panelWidget(widget)) + if (panelWidget(widget) || qobject_cast<const QMenu *> (widget) ) ret = false; break; case QStyle::SH_ItemView_ArrowKeysNavigateIntoChildren: @@ -614,7 +614,7 @@ void ManhattanStyle::drawPrimitive(PrimitiveElement element, const QStyleOption void ManhattanStyle::drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const { - if (!panelWidget(widget)) + if (!panelWidget(widget) && !qobject_cast<const QMenu *>(widget)) return QProxyStyle::drawControl(element, option, painter, widget); switch (element) { @@ -645,6 +645,25 @@ void ManhattanStyle::drawControl(ControlElement element, const QStyleOption *opt } break; + case CE_MenuItem: + painter->save(); + if (const QStyleOptionMenuItem *mbi = qstyleoption_cast<const QStyleOptionMenuItem *>(option)) { + const bool enabled = mbi->state & State_Enabled; + QStyleOptionMenuItem item = *mbi; + item.rect = mbi->rect; + const QColor color = creatorTheme()->color(enabled + ? Theme::MenuItemTextColorNormal + : Theme::MenuItemTextColorDisabled); + if (color.isValid()) { + QPalette pal = mbi->palette; + pal.setBrush(QPalette::Text, color); + item.palette = pal; + } + QProxyStyle::drawControl(element, &item, painter, widget); + } + painter->restore(); + break; + case CE_MenuBarItem: painter->save(); if (const QStyleOptionMenuItem *mbi = qstyleoption_cast<const QStyleOptionMenuItem *>(option)) { |