diff options
Diffstat (limited to 'src/plugins/platforms/cocoa')
| -rw-r--r-- | src/plugins/platforms/cocoa/qnsview.mm | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm index a6d96df0fbb..b00e6375e1a 100644 --- a/src/plugins/platforms/cocoa/qnsview.mm +++ b/src/plugins/platforms/cocoa/qnsview.mm @@ -269,6 +269,23 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QNSViewMenuHelper); qCDebug(lcQpaWindow) << "Done moving" << self << "to" << self.window; } +// QWindow::setParent() promises that the child window will be clipped +// to its parent, which we rely on in e.g. Qt Widgets when a native window +// is added to a scroll area. We try to be smart and only enable clipping +// if we have potential child QWindows that rely on this behavior. +// FIXME: Be even smarter, and only consider QWindow based subviews, +// in a way that also includes foreign windows. + +- (void)didAddSubview:(NSView *)subview +{ + self.clipsToBounds = YES; +} + +- (void)willRemoveSubview:(NSView *)subview +{ + self.clipsToBounds = self.subviews.count > 1; +} + // ---------------------------------------------------------------------------- - (QWindow *)topLevelWindow |
