From a2ec8cc939828d768ed6a070e5a1c51337eeb9eb Mon Sep 17 00:00:00 2001 From: Jens Bache-Wiig <jbache@trolltech.com> Date: Mon, 1 Mar 2010 14:51:48 +0100 Subject: [PATCH] Fix missing tabfocus with manhattanstyle I added a new focus rect for combo boxes with manhattan style. To reduce the visual impact I follow the same policy we use on windows where we do not show the focus rect unless it is called upon by tabfocus. --- src/plugins/coreplugin/manhattanstyle.cpp | 30 ++++++++----------- src/plugins/coreplugin/navigationwidget.cpp | 1 + .../miniprojecttargetselector.cpp | 1 + 3 files changed, 14 insertions(+), 18 deletions(-) diff --git a/src/plugins/coreplugin/manhattanstyle.cpp b/src/plugins/coreplugin/manhattanstyle.cpp index 2aa2c82aaa3..e4baf812353 100644 --- a/src/plugins/coreplugin/manhattanstyle.cpp +++ b/src/plugins/coreplugin/manhattanstyle.cpp @@ -475,6 +475,17 @@ void ManhattanStyle::drawPrimitive(PrimitiveElement element, const QStyleOption QColor lighter(255, 255, 255, 37); painter->fillRect(rect, lighter); } + if (option->state & State_HasFocus && (option->state & State_KeyboardFocusChange)) { + QColor highlight = option->palette.highlight().color(); + highlight.setAlphaF(0.4); + painter->setPen(QPen(highlight.lighter(), 1)); + highlight.setAlphaF(0.3); + painter->setBrush(highlight); + painter->setRenderHint(QPainter::Antialiasing); + QRectF rect = option->rect; + rect.translate(0.5, 0.5); + painter->drawRoundedRect(rect.adjusted(2, 2, -3, -3), 2, 2); + } } } break; @@ -819,24 +830,6 @@ void ManhattanStyle::drawComplexControl(ComplexControl control, const QStyleOpti drawPrimitive(PE_PanelButtonTool, &tool, painter, widget); } - if (toolbutton->state & State_HasFocus) { - QStyleOptionFocusRect fr; - fr.QStyleOption::operator=(*toolbutton); - fr.rect.adjust(3, 3, -3, -3); - if (toolbutton->features & QStyleOptionToolButton::MenuButtonPopup) - fr.rect.adjust(0, 0, -pixelMetric(QStyle::PM_MenuButtonIndicator, - toolbutton, widget), 0); - QPen oldPen = painter->pen(); - QColor focusColor = Utils::StyleHelper::panelTextColor(); - focusColor.setAlpha(120); - QPen outline(focusColor, 1); - outline.setStyle(Qt::DotLine); - painter->setPen(outline); - QRect r = option->rect.adjusted(2, 2, -2, -2); - painter->drawRect(r); - painter->setPen(oldPen); - } - QStyleOptionToolButton label = *toolbutton; label.palette = panelPalette(option->palette, lightColored(widget)); @@ -938,6 +931,7 @@ void ManhattanStyle::drawComplexControl(ComplexControl control, const QStyleOpti } else { drawPrimitive(PE_IndicatorArrowDown, &arrowOpt, painter, widget); } + painter->restore(); } break; diff --git a/src/plugins/coreplugin/navigationwidget.cpp b/src/plugins/coreplugin/navigationwidget.cpp index 8ba5e69fde5..044c2e139ba 100644 --- a/src/plugins/coreplugin/navigationwidget.cpp +++ b/src/plugins/coreplugin/navigationwidget.cpp @@ -376,6 +376,7 @@ NavigationSubWidget::NavigationSubWidget(NavigationWidget *parentWidget) m_navigationComboBox = new NavComboBox(this); m_navigationComboBox->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); + m_navigationComboBox->setFocusPolicy(Qt::TabFocus); m_navigationComboBox->setMinimumContentsLength(0); m_navigationWidget = 0; diff --git a/src/plugins/projectexplorer/miniprojecttargetselector.cpp b/src/plugins/projectexplorer/miniprojecttargetselector.cpp index 180a4ed724d..31b33d56737 100644 --- a/src/plugins/projectexplorer/miniprojecttargetselector.cpp +++ b/src/plugins/projectexplorer/miniprojecttargetselector.cpp @@ -385,6 +385,7 @@ MiniProjectTargetSelector::MiniProjectTargetSelector(QAction *targetSelectorActi bar->setFixedHeight(panelHeight); m_projectsBox = new QComboBox; + m_projectsBox->setFocusPolicy(Qt::TabFocus); f.setBold(false); m_projectsBox->setFont(f); m_projectsBox->ensurePolished(); -- GitLab