Windows styles: Scale hardcoded-values according to DPI.
Factor out functions to return the fixed values and scale those. Task-number: QTBUG-38993 Task-number: QTBUG-38858 Change-Id: I59c70a206eae76bf08bc2aeb5cda5a740cd3d6dc Reviewed-by: Alessandro Portale <alessandro.portale@digia.com>bb10
parent
176bd1edfa
commit
585cef5f90
|
|
@ -355,6 +355,57 @@ int QWindowsStylePrivate::pixelMetricFromSystemDp(QStyle::PixelMetric pm, const
|
|||
return QWindowsStylePrivate::InvalidMetric;
|
||||
}
|
||||
|
||||
int QWindowsStylePrivate::fixedPixelMetric(QStyle::PixelMetric pm)
|
||||
{
|
||||
switch (pm) {
|
||||
case QStyle::PM_ToolBarItemSpacing:
|
||||
return 0;
|
||||
case QStyle::PM_ButtonDefaultIndicator:
|
||||
case QStyle::PM_ButtonShiftHorizontal:
|
||||
case QStyle::PM_ButtonShiftVertical:
|
||||
case QStyle::PM_MenuHMargin:
|
||||
case QStyle::PM_MenuVMargin:
|
||||
case QStyle::PM_ToolBarItemMargin:
|
||||
return 1;
|
||||
break;
|
||||
case QStyle::PM_DockWidgetSeparatorExtent:
|
||||
return 4;
|
||||
#ifndef QT_NO_TABBAR
|
||||
case QStyle::PM_TabBarTabShiftHorizontal:
|
||||
return 0;
|
||||
case QStyle::PM_TabBarTabShiftVertical:
|
||||
return 2;
|
||||
#endif
|
||||
|
||||
#ifndef QT_NO_SLIDER
|
||||
case QStyle::PM_SliderLength:
|
||||
return 11;
|
||||
#endif // QT_NO_SLIDER
|
||||
|
||||
#ifndef QT_NO_MENU
|
||||
case QStyle::PM_MenuBarHMargin:
|
||||
case QStyle::PM_MenuBarVMargin:
|
||||
case QStyle::PM_MenuBarPanelWidth:
|
||||
return 0;
|
||||
case QStyle::PM_SmallIconSize:
|
||||
return 16;
|
||||
case QStyle::PM_LargeIconSize:
|
||||
return 32;
|
||||
case QStyle::PM_DockWidgetTitleMargin:
|
||||
return 2;
|
||||
case QStyle::PM_DockWidgetTitleBarButtonMargin:
|
||||
case QStyle::PM_DockWidgetFrameWidth:
|
||||
return 4;
|
||||
|
||||
#endif // QT_NO_MENU
|
||||
case QStyle::PM_ToolBarHandleExtent:
|
||||
return 10;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return QWindowsStylePrivate::InvalidMetric;
|
||||
}
|
||||
|
||||
/*!
|
||||
\reimp
|
||||
*/
|
||||
|
|
@ -364,29 +415,13 @@ int QWindowsStyle::pixelMetric(PixelMetric pm, const QStyleOption *opt, const QW
|
|||
if (ret != QWindowsStylePrivate::InvalidMetric)
|
||||
return ret / QWindowsStylePrivate::devicePixelRatio(widget);
|
||||
|
||||
ret = QWindowsStylePrivate::fixedPixelMetric(pm);
|
||||
if (ret != QWindowsStylePrivate::InvalidMetric)
|
||||
return int(QStyleHelper::dpiScaled(ret));
|
||||
|
||||
ret = 0;
|
||||
|
||||
switch (pm) {
|
||||
case PM_ToolBarItemSpacing:
|
||||
break;
|
||||
case PM_ButtonDefaultIndicator:
|
||||
case PM_ButtonShiftHorizontal:
|
||||
case PM_ButtonShiftVertical:
|
||||
case PM_MenuHMargin:
|
||||
case PM_MenuVMargin:
|
||||
case PM_ToolBarItemMargin:
|
||||
ret = 1;
|
||||
break;
|
||||
case PM_DockWidgetSeparatorExtent:
|
||||
ret = int(QStyleHelper::dpiScaled(4.));
|
||||
break;
|
||||
#ifndef QT_NO_TABBAR
|
||||
case PM_TabBarTabShiftHorizontal:
|
||||
break;
|
||||
case PM_TabBarTabShiftVertical:
|
||||
ret = 2;
|
||||
break;
|
||||
#endif
|
||||
case PM_MaximumDragDistance:
|
||||
ret = QCommonStyle::pixelMetric(PM_MaximumDragDistance);
|
||||
if (ret == -1)
|
||||
|
|
@ -394,10 +429,6 @@ int QWindowsStyle::pixelMetric(PixelMetric pm, const QStyleOption *opt, const QW
|
|||
break;
|
||||
|
||||
#ifndef QT_NO_SLIDER
|
||||
case PM_SliderLength:
|
||||
ret = int(QStyleHelper::dpiScaled(11.));
|
||||
break;
|
||||
|
||||
// Returns the number of pixels to use for the business part of the
|
||||
// slider (i.e., the non-tickmark portion). The remaining space is shared
|
||||
// equally between the tickmark regions.
|
||||
|
|
@ -427,43 +458,14 @@ int QWindowsStyle::pixelMetric(PixelMetric pm, const QStyleOption *opt, const QW
|
|||
break;
|
||||
#endif // QT_NO_SLIDER
|
||||
|
||||
#ifndef QT_NO_MENU
|
||||
case PM_MenuBarHMargin:
|
||||
case PM_MenuBarVMargin:
|
||||
case PM_MenuBarPanelWidth:
|
||||
break;
|
||||
|
||||
case PM_SmallIconSize:
|
||||
ret = int(QStyleHelper::dpiScaled(16.));
|
||||
break;
|
||||
|
||||
case PM_LargeIconSize:
|
||||
ret = int(QStyleHelper::dpiScaled(32.));
|
||||
break;
|
||||
|
||||
case PM_IconViewIconSize:
|
||||
ret = proxy()->pixelMetric(PM_LargeIconSize, opt, widget);
|
||||
break;
|
||||
|
||||
case PM_DockWidgetTitleMargin:
|
||||
ret = int(QStyleHelper::dpiScaled(2.));
|
||||
break;
|
||||
case PM_DockWidgetTitleBarButtonMargin:
|
||||
ret = int(QStyleHelper::dpiScaled(4.));
|
||||
break;
|
||||
case PM_DockWidgetFrameWidth:
|
||||
ret = 4;
|
||||
break;
|
||||
break;
|
||||
|
||||
#endif // QT_NO_MENU
|
||||
case PM_SplitterWidth:
|
||||
ret = qMax(4, QApplication::globalStrut().width());
|
||||
ret = qMax(int(QStyleHelper::dpiScaled(4)), QApplication::globalStrut().width());
|
||||
break;
|
||||
|
||||
case PM_ToolBarHandleExtent:
|
||||
ret = int(QStyleHelper::dpiScaled(10.));
|
||||
break;
|
||||
default:
|
||||
ret = QCommonStyle::pixelMetric(pm, opt, widget);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -72,6 +72,7 @@ public:
|
|||
|
||||
QWindowsStylePrivate();
|
||||
static int pixelMetricFromSystemDp(QStyle::PixelMetric pm, const QStyleOption *option = 0, const QWidget *widget = 0);
|
||||
static int fixedPixelMetric(QStyle::PixelMetric pm);
|
||||
static int devicePixelRatio(const QWidget *widget = 0)
|
||||
{ return widget ? widget->devicePixelRatio() : QWindowsStylePrivate::appDevicePixelRatio(); }
|
||||
|
||||
|
|
|
|||
|
|
@ -2192,7 +2192,7 @@ QRect QWindowsVistaStyle::subControlRect(ComplexControl control, const QStyleOpt
|
|||
const int height = tb->rect.height();
|
||||
const int width = tb->rect.width();
|
||||
int buttonWidth = GetSystemMetrics(SM_CXSIZE) / QWindowsStylePrivate::devicePixelRatio(widget)
|
||||
- 4;
|
||||
- int(QStyleHelper::dpiScaled(4));
|
||||
|
||||
const int frameWidth = proxy()->pixelMetric(PM_MdiSubWindowFrameWidth, option, widget);
|
||||
const bool sysmenuHint = (tb->titleBarFlags & Qt::WindowSystemMenuHint) != 0;
|
||||
|
|
@ -2265,28 +2265,36 @@ QStyle::SubControl QWindowsVistaStyle::hitTestComplexControl(ComplexControl cont
|
|||
return QWindowsXPStyle::hitTestComplexControl(control, option, pos, widget);
|
||||
}
|
||||
|
||||
int QWindowsVistaStylePrivate::fixedPixelMetric(QStyle::PixelMetric pm)
|
||||
{
|
||||
switch (pm) {
|
||||
case QStyle::PM_DockWidgetTitleBarButtonMargin:
|
||||
return 5;
|
||||
case QStyle::PM_ScrollBarSliderMin:
|
||||
return 18;
|
||||
case QStyle::PM_MenuHMargin:
|
||||
case QStyle::PM_MenuVMargin:
|
||||
return 0;
|
||||
case QStyle::PM_MenuPanelWidth:
|
||||
return 3;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return QWindowsVistaStylePrivate::InvalidMetric;
|
||||
}
|
||||
|
||||
/*!
|
||||
\internal
|
||||
*/
|
||||
int QWindowsVistaStyle::pixelMetric(PixelMetric metric, const QStyleOption *option, const QWidget *widget) const
|
||||
{
|
||||
if (!QWindowsVistaStylePrivate::useVista()) {
|
||||
if (!QWindowsVistaStylePrivate::useVista())
|
||||
return QWindowsStyle::pixelMetric(metric, option, widget);
|
||||
}
|
||||
switch (metric) {
|
||||
|
||||
case PM_DockWidgetTitleBarButtonMargin:
|
||||
return int(QStyleHelper::dpiScaled(5.));
|
||||
case PM_ScrollBarSliderMin:
|
||||
return int(QStyleHelper::dpiScaled(18.));
|
||||
case PM_MenuHMargin:
|
||||
case PM_MenuVMargin:
|
||||
return 0;
|
||||
case PM_MenuPanelWidth:
|
||||
return 3;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
int ret = QWindowsStylePrivate::fixedPixelMetric(metric);
|
||||
if (ret != QWindowsStylePrivate::InvalidMetric)
|
||||
return int(QStyleHelper::dpiScaled(ret));
|
||||
|
||||
return QWindowsXPStyle::pixelMetric(metric, option, widget);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -171,6 +171,7 @@ class QWindowsVistaStylePrivate : public QWindowsXPStylePrivate
|
|||
public:
|
||||
QWindowsVistaStylePrivate();
|
||||
~QWindowsVistaStylePrivate();
|
||||
static int fixedPixelMetric(QStyle::PixelMetric pm);
|
||||
static inline bool useVista();
|
||||
bool transitionsEnabled() const;
|
||||
|
||||
|
|
|
|||
|
|
@ -3507,7 +3507,7 @@ QRect QWindowsXPStyle::subControlRect(ComplexControl cc, const QStyleOptionCompl
|
|||
const bool isToolTitle = false;
|
||||
const int height = tb->rect.height();
|
||||
const int width = tb->rect.width();
|
||||
const int buttonMargin = 4;
|
||||
const int buttonMargin = int(QStyleHelper::dpiScaled(4));
|
||||
int buttonHeight = GetSystemMetrics(SM_CYSIZE) / QWindowsStylePrivate::devicePixelRatio(widget)
|
||||
- buttonMargin;
|
||||
int buttonWidth = GetSystemMetrics(SM_CXSIZE) / QWindowsStylePrivate::devicePixelRatio(widget)
|
||||
|
|
|
|||
|
|
@ -385,6 +385,7 @@ public:
|
|||
{ cleanup(); }
|
||||
|
||||
static int pixelMetricFromSystemDp(QStyle::PixelMetric pm, const QStyleOption *option = 0, const QWidget *widget = 0);
|
||||
static int fixedPixelMetric(QStyle::PixelMetric pm, const QStyleOption *option = 0, const QWidget *widget = 0);
|
||||
|
||||
static HWND winId(const QWidget *widget);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue