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>
This commit is contained in:
parent
9a9e7a8215
commit
a5c288ea56
@ -1236,7 +1236,7 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption
|
|||||||
case CE_MenuItem:
|
case CE_MenuItem:
|
||||||
if (const QStyleOptionMenuItem *menuitem = qstyleoption_cast<const QStyleOptionMenuItem *>(option)) {
|
if (const QStyleOptionMenuItem *menuitem = qstyleoption_cast<const QStyleOptionMenuItem *>(option)) {
|
||||||
// windows always has a check column, regardless whether we have an icon or not
|
// windows always has a check column, regardless whether we have an icon or not
|
||||||
int checkcol = 28;
|
int checkcol = 25;
|
||||||
{
|
{
|
||||||
SIZE size;
|
SIZE size;
|
||||||
MARGINS margins;
|
MARGINS margins;
|
||||||
@ -1244,11 +1244,13 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption
|
|||||||
MENU_POPUPCHECKBACKGROUND, MBI_HOT);
|
MENU_POPUPCHECKBACKGROUND, MBI_HOT);
|
||||||
pGetThemePartSize(theme.handle(), NULL, MENU_POPUPCHECK, 0, NULL,TS_TRUE, &size);
|
pGetThemePartSize(theme.handle(), NULL, MENU_POPUPCHECK, 0, NULL,TS_TRUE, &size);
|
||||||
pGetThemeMargins(theme.handle(), NULL, MENU_POPUPCHECK, 0, TMT_CONTENTMARGINS, NULL, &margins);
|
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;
|
QRect rect = option->rect;
|
||||||
|
|
||||||
//draw vertical menu line
|
//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 p1 = QStyle::visualPos(option->direction, menuitem->rect, QPoint(checkcol, rect.top()));
|
||||||
QPoint p2 = QStyle::visualPos(option->direction, menuitem->rect, QPoint(checkcol, rect.bottom()));
|
QPoint p2 = QStyle::visualPos(option->direction, menuitem->rect, QPoint(checkcol, rect.bottom()));
|
||||||
QRect gutterRect(p1.x(), p1.y(), 3, p2.y() - p1.y() + 1);
|
QRect gutterRect(p1.x(), p1.y(), 3, p2.y() - p1.y() + 1);
|
||||||
|
Loading…
Reference in New Issue
Block a user