67 lines
2.1 KiB
Diff
67 lines
2.1 KiB
Diff
From 0cc169ec53f5eb50e6f1e77c2f73f4631561d574 Mon Sep 17 00:00:00 2001
|
|
From: Jeff Young <jeff@rokeby.ie>
|
|
Date: Tue, 9 Jan 2018 12:04:20 +0000
|
|
Subject: [PATCH 1/1] Backport OSX disabled-window fixes from master.
|
|
|
|
Also adds ReparentQuasiModal() which is required for Kicad
|
|
quasi-modal dialogs.
|
|
---
|
|
src/osx/cocoa/dialog.mm | 12 ++++++++++++
|
|
src/osx/cocoa/window.mm | 13 ++++++++++++-
|
|
2 files changed, 24 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/src/osx/cocoa/dialog.mm b/src/osx/cocoa/dialog.mm
|
|
index 8b1e48f1b4..c6b508013e 100644
|
|
--- a/src/osx/cocoa/dialog.mm
|
|
+++ b/src/osx/cocoa/dialog.mm
|
|
@@ -44,3 +44,15 @@
|
|
[NSApp endSheet: GetWXWindow()];
|
|
[GetWXWindow() orderOut:GetWXWindow()];
|
|
}
|
|
+
|
|
+void wxDialog::ReparentQuasiModal()
|
|
+{
|
|
+ wxTopLevelWindow* parent = static_cast<wxTopLevelWindow*>(wxGetTopLevelParent(GetParent()));
|
|
+
|
|
+ wxASSERT_MSG(parent, "QuasiModal dialogs require a parent.");
|
|
+
|
|
+ NSWindow* parentWindow = parent->GetWXWindow();
|
|
+ NSWindow* theWindow = GetWXWindow();
|
|
+
|
|
+ [parentWindow addChildWindow:theWindow ordered:NSWindowAbove];
|
|
+}
|
|
diff --git a/src/osx/cocoa/window.mm b/src/osx/cocoa/window.mm
|
|
index ede8ebf778..2366d65d6b 100644
|
|
--- a/src/osx/cocoa/window.mm
|
|
+++ b/src/osx/cocoa/window.mm
|
|
@@ -863,6 +863,15 @@ - (BOOL) canBecomeKeyView
|
|
return NO;
|
|
}
|
|
|
|
+- (NSView *)hitTest:(NSPoint)aPoint;
|
|
+{
|
|
+ wxWidgetCocoaImpl* viewimpl = (wxWidgetCocoaImpl* ) wxWidgetImpl::FindFromWXWidget( self );
|
|
+ if ( viewimpl && viewimpl->GetWXPeer() && !viewimpl->GetWXPeer()->IsEnabled() )
|
|
+ return nil;
|
|
+
|
|
+ return [super hitTest:aPoint];
|
|
+}
|
|
+
|
|
@end // wxNSView
|
|
|
|
// We need to adopt NSTextInputClient protocol in order to interpretKeyEvents: to work.
|
|
@@ -985,7 +994,9 @@ void wxOSX_mouseEvent(NSView* self, SEL _cmd, NSEvent *event)
|
|
if (impl == NULL)
|
|
return;
|
|
|
|
- impl->mouseEvent(event, self, _cmd);
|
|
+ // We shouldn't let disabled windows get mouse events.
|
|
+ if (impl->GetWXPeer()->IsEnabled())
|
|
+ impl->mouseEvent(event, self, _cmd);
|
|
}
|
|
|
|
void wxOSX_cursorUpdate(NSView* self, SEL _cmd, NSEvent *event)
|
|
--
|
|
2.14.3 (Apple Git-98)
|
|
|