diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2014-01-22 10:13:17 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-01-22 12:12:04 +0100 |
commit | a5c288ea5675a382edf0b3ecae42f461a22a7303 (patch) | |
tree | 0372827a96ea86aac3cdfd8b66db222ecb786c2a | |
parent | 9a9e7a8215d2d86fc57b8fa2e6370d9762cb2c74 (diff) |
QWindowsVistaStyle: Fixed position of menu gutter when using a custom widget action.
The gutter position was hardcoded to 28 which fits when drawing
on the QMenu with a left margin of 3. It became offset when drawing
on a custom widget with no margin. Calculate position relative
to margin for left to right.
[ChangeLog][QtWidgets][QMenu][Windows] Fixed position of menu gutter when using a custom widget action.
Task-number: QTBUG-36218
Change-Id: Ibb34a9fba2bab7257482b80d2e51e76a9755345c
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
-rw-r--r-- | src/widgets/styles/qwindowsvistastyle.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/widgets/styles/qwindowsvistastyle.cpp b/src/widgets/styles/qwindowsvistastyle.cpp index de819e95db..5827a01151 100644 --- a/src/widgets/styles/qwindowsvistastyle.cpp +++ b/src/widgets/styles/qwindowsvistastyle.cpp @@ -1236,7 +1236,7 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption case CE_MenuItem: if (const QStyleOptionMenuItem *menuitem = qstyleoption_cast<const QStyleOptionMenuItem *>(option)) { // windows always has a check column, regardless whether we have an icon or not - int checkcol = 28; + int checkcol = 25; { SIZE size; MARGINS margins; @@ -1244,11 +1244,13 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption MENU_POPUPCHECKBACKGROUND, MBI_HOT); pGetThemePartSize(theme.handle(), NULL, MENU_POPUPCHECK, 0, NULL,TS_TRUE, &size); pGetThemeMargins(theme.handle(), NULL, MENU_POPUPCHECK, 0, TMT_CONTENTMARGINS, NULL, &margins); - checkcol = qMax(menuitem->maxIconWidth, int(6 + size.cx + margins.cxLeftWidth + margins.cxRightWidth)); + checkcol = qMax(menuitem->maxIconWidth, int(3 + size.cx + margins.cxLeftWidth + margins.cxRightWidth)); } QRect rect = option->rect; //draw vertical menu line + if (option->direction == Qt::LeftToRight) + checkcol += rect.x(); QPoint p1 = QStyle::visualPos(option->direction, menuitem->rect, QPoint(checkcol, rect.top())); QPoint p2 = QStyle::visualPos(option->direction, menuitem->rect, QPoint(checkcol, rect.bottom())); QRect gutterRect(p1.x(), p1.y(), 3, p2.y() - p1.y() + 1); |