QMacStyle: CE_Splitter is HITheme-free
Change-Id: I96a5ba5d685d1b8f95fd11489e4e95096d0fa9a4 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>bb10
parent
86821094a9
commit
1e905927f0
|
|
@ -237,6 +237,19 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QIndeterminateProgressIndicator);
|
|||
|
||||
@end
|
||||
|
||||
@interface QT_MANGLE_NAMESPACE(QVerticalSplitView) : NSSplitView
|
||||
- (BOOL)isVertical;
|
||||
@end
|
||||
|
||||
QT_NAMESPACE_ALIAS_OBJC_CLASS(QVerticalSplitView);
|
||||
|
||||
@implementation QVerticalSplitView
|
||||
- (BOOL)isVertical
|
||||
{
|
||||
return YES;
|
||||
}
|
||||
@end
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
// The following constants are used for adjusting the size
|
||||
|
|
@ -1916,6 +1929,12 @@ NSView *QMacStylePrivate::cocoaControl(CocoaControl widget) const
|
|||
// at construction time, and it cannot be changed later.
|
||||
bv = [[NSSlider alloc] initWithFrame:NSMakeRect(0, 0, 20, 200)];
|
||||
break;
|
||||
case SplitView_Horizontal:
|
||||
bv = [[NSSplitView alloc] init];
|
||||
break;
|
||||
case SplitView_Vertical:
|
||||
bv = [[QVerticalSplitView alloc] init];
|
||||
break;
|
||||
case TextField:
|
||||
bv = [[NSTextField alloc] init];
|
||||
break;
|
||||
|
|
@ -4465,13 +4484,16 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
|
|||
break;
|
||||
}
|
||||
case CE_Splitter:
|
||||
if (opt->rect.width() > 1 && opt->rect.height() > 1){
|
||||
HIThemeSplitterDrawInfo sdi;
|
||||
sdi.version = qt_mac_hitheme_version;
|
||||
sdi.state = tds;
|
||||
sdi.adornment = kHIThemeSplitterAdornmentMetal;
|
||||
CGRect cgRect = opt->rect.toCGRect();
|
||||
HIThemeDrawPaneSplitter(&cgRect, &sdi, cg, kHIThemeOrientationNormal);
|
||||
if (opt->rect.width() > 1 && opt->rect.height() > 1) {
|
||||
const bool isVertical = !(opt->state & QStyle::State_Horizontal);
|
||||
// Qt refers to the layout orientation, while Cocoa refers to the divider's.
|
||||
const auto ct = isVertical ? QMacStylePrivate::SplitView_Horizontal : QMacStylePrivate::SplitView_Vertical;
|
||||
const auto cw = QMacStylePrivate::CocoaControl(ct, QStyleHelper::SizeLarge);
|
||||
auto *sv = static_cast<NSSplitView *>(d->cocoaControl(cw));
|
||||
sv.frame = opt->rect.toCGRect();
|
||||
d->drawNSViewInRect(cw, sv, opt->rect, p, w != nullptr, ^(CGContextRef ctx, const CGRect &rect) {
|
||||
[sv drawDividerInRect:rect];
|
||||
});
|
||||
} else {
|
||||
QPen oldPen = p->pen();
|
||||
p->setPen(opt->palette.dark().color());
|
||||
|
|
|
|||
|
|
@ -196,6 +196,8 @@ public:
|
|||
Scroller_Vertical,
|
||||
Slider_Horizontal,
|
||||
Slider_Vertical,
|
||||
SplitView_Horizontal,
|
||||
SplitView_Vertical,
|
||||
Stepper, // QSpinBox buttons
|
||||
TextField
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue