Make it possible to use mini and small size on mac without widget
We need to add the styleoption when evaluating the small and mini size hints. Change-Id: I00f8709912aa2202caef4dbdeaebb5d67cc9a9b4 Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
This commit is contained in:
parent
b0bc4f3279
commit
020196d16b
@ -104,8 +104,9 @@ public:
|
|||||||
|
|
||||||
enum WidgetSizePolicy { SizeSmall, SizeLarge, SizeMini, SizeDefault
|
enum WidgetSizePolicy { SizeSmall, SizeLarge, SizeMini, SizeDefault
|
||||||
};
|
};
|
||||||
|
|
||||||
static void setWidgetSizePolicy(const QWidget *w, WidgetSizePolicy policy);
|
static void setWidgetSizePolicy(const QWidget *w, WidgetSizePolicy policy);
|
||||||
static WidgetSizePolicy widgetSizePolicy(const QWidget *w);
|
static WidgetSizePolicy widgetSizePolicy(const QWidget *w, const QStyleOption *opt = 0);
|
||||||
|
|
||||||
QPixmap standardPixmap(StandardPixmap sp, const QStyleOption *opt,
|
QPixmap standardPixmap(StandardPixmap sp, const QStyleOption *opt,
|
||||||
const QWidget *widget = 0) const;
|
const QWidget *widget = 0) const;
|
||||||
|
@ -430,11 +430,7 @@ void drawTabBase(QPainter *p, const QStyleOptionTabBarBaseV2 *tbb, const QWidget
|
|||||||
|
|
||||||
static int getControlSize(const QStyleOption *option, const QWidget *widget)
|
static int getControlSize(const QStyleOption *option, const QWidget *widget)
|
||||||
{
|
{
|
||||||
if (option) {
|
switch (QMacStyle::widgetSizePolicy(widget, option)) {
|
||||||
if (option->state & (QStyle::State_Small | QStyle::State_Mini))
|
|
||||||
return (option->state & QStyle::State_Mini) ? QAquaSizeMini : QAquaSizeSmall;
|
|
||||||
} else if (widget) {
|
|
||||||
switch (QMacStyle::widgetSizePolicy(widget)) {
|
|
||||||
case QMacStyle::SizeSmall:
|
case QMacStyle::SizeSmall:
|
||||||
return QAquaSizeSmall;
|
return QAquaSizeSmall;
|
||||||
case QMacStyle::SizeMini:
|
case QMacStyle::SizeMini:
|
||||||
@ -442,7 +438,6 @@ static int getControlSize(const QStyleOption *option, const QWidget *widget)
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return QAquaSizeLarge;
|
return QAquaSizeLarge;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1607,7 +1602,7 @@ void QMacStylePrivate::getSliderInfo(QStyle::ComplexControl cc, const QStyleOpti
|
|||||||
tdi->reserved = 0;
|
tdi->reserved = 0;
|
||||||
tdi->filler1 = 0;
|
tdi->filler1 = 0;
|
||||||
bool isScrollbar = (cc == QStyle::CC_ScrollBar);
|
bool isScrollbar = (cc == QStyle::CC_ScrollBar);
|
||||||
switch (aquaSizeConstrain(0, needToRemoveMe)) {
|
switch (aquaSizeConstrain(slider, needToRemoveMe)) {
|
||||||
case QAquaSizeUnknown:
|
case QAquaSizeUnknown:
|
||||||
case QAquaSizeLarge:
|
case QAquaSizeLarge:
|
||||||
if (isScrollbar)
|
if (isScrollbar)
|
||||||
@ -2924,7 +2919,7 @@ void QMacStyle::setWidgetSizePolicy(const QWidget *widget, WidgetSizePolicy poli
|
|||||||
wadget->setAttribute(Qt::WA_MacMiniSize, policy == SizeMini);
|
wadget->setAttribute(Qt::WA_MacMiniSize, policy == SizeMini);
|
||||||
}
|
}
|
||||||
|
|
||||||
QMacStyle::WidgetSizePolicy QMacStyle::widgetSizePolicy(const QWidget *widget)
|
QMacStyle::WidgetSizePolicy QMacStyle::widgetSizePolicy(const QWidget *widget, const QStyleOption *opt)
|
||||||
{
|
{
|
||||||
while (widget) {
|
while (widget) {
|
||||||
if (widget->testAttribute(Qt::WA_MacMiniSize)) {
|
if (widget->testAttribute(Qt::WA_MacMiniSize)) {
|
||||||
@ -2936,6 +2931,12 @@ QMacStyle::WidgetSizePolicy QMacStyle::widgetSizePolicy(const QWidget *widget)
|
|||||||
}
|
}
|
||||||
widget = widget->parentWidget();
|
widget = widget->parentWidget();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (opt && opt->state & State_Mini)
|
||||||
|
return SizeMini;
|
||||||
|
else if (opt && opt->state & State_Small)
|
||||||
|
return SizeSmall;
|
||||||
|
|
||||||
return SizeDefault;
|
return SizeDefault;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5007,7 +5008,7 @@ void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex
|
|||||||
if (cc == CC_ScrollBar) {
|
if (cc == CC_ScrollBar) {
|
||||||
const int scrollBarLength = (slider->orientation == Qt::Horizontal)
|
const int scrollBarLength = (slider->orientation == Qt::Horizontal)
|
||||||
? slider->rect.width() : slider->rect.height();
|
? slider->rect.width() : slider->rect.height();
|
||||||
const QMacStyle::WidgetSizePolicy sizePolicy = widgetSizePolicy(widget);
|
const QMacStyle::WidgetSizePolicy sizePolicy = widgetSizePolicy(widget, opt);
|
||||||
if (scrollBarLength < scrollButtonsCutoffSize(thumbIndicatorCutoff, sizePolicy))
|
if (scrollBarLength < scrollButtonsCutoffSize(thumbIndicatorCutoff, sizePolicy))
|
||||||
tdi.attributes &= ~kThemeTrackShowThumb;
|
tdi.attributes &= ~kThemeTrackShowThumb;
|
||||||
if (scrollBarLength < scrollButtonsCutoffSize(scrollButtonsCutoff, sizePolicy))
|
if (scrollBarLength < scrollButtonsCutoffSize(scrollButtonsCutoff, sizePolicy))
|
||||||
@ -5615,7 +5616,7 @@ QStyle::SubControl QMacStyle::hitTestComplexControl(ComplexControl cc,
|
|||||||
// exclude them from the hit test.
|
// exclude them from the hit test.
|
||||||
const int scrollBarLength = (sb->orientation == Qt::Horizontal)
|
const int scrollBarLength = (sb->orientation == Qt::Horizontal)
|
||||||
? sb->rect.width() : sb->rect.height();
|
? sb->rect.width() : sb->rect.height();
|
||||||
if (scrollBarLength < scrollButtonsCutoffSize(scrollButtonsCutoff, widgetSizePolicy(widget)))
|
if (scrollBarLength < scrollButtonsCutoffSize(scrollButtonsCutoff, widgetSizePolicy(widget, opt)))
|
||||||
sbi.enableState = kThemeTrackNothingToScroll;
|
sbi.enableState = kThemeTrackNothingToScroll;
|
||||||
|
|
||||||
sbi.viewsize = sb->pageStep;
|
sbi.viewsize = sb->pageStep;
|
||||||
@ -6272,7 +6273,7 @@ QSize QMacStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt,
|
|||||||
case CT_ScrollBar :
|
case CT_ScrollBar :
|
||||||
// Make sure that the scroll bar is large enough to display the thumb indicator.
|
// Make sure that the scroll bar is large enough to display the thumb indicator.
|
||||||
if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(opt)) {
|
if (const QStyleOptionSlider *slider = qstyleoption_cast<const QStyleOptionSlider *>(opt)) {
|
||||||
const int minimumSize = scrollButtonsCutoffSize(thumbIndicatorCutoff, widgetSizePolicy(widget));
|
const int minimumSize = scrollButtonsCutoffSize(thumbIndicatorCutoff, widgetSizePolicy(widget, opt));
|
||||||
if (slider->orientation == Qt::Horizontal)
|
if (slider->orientation == Qt::Horizontal)
|
||||||
sz = sz.expandedTo(QSize(minimumSize, sz.height()));
|
sz = sz.expandedTo(QSize(minimumSize, sz.height()));
|
||||||
else
|
else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user