summaryrefslogtreecommitdiff
path: root/src/Fl_grab.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/Fl_grab.cxx')
-rw-r--r--src/Fl_grab.cxx18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/Fl_grab.cxx b/src/Fl_grab.cxx
index b16ee536f..b6d49f8a5 100644
--- a/src/Fl_grab.cxx
+++ b/src/Fl_grab.cxx
@@ -48,7 +48,12 @@ extern HWND fl_capture;
#ifdef __APPLE__
// MacOS Carbon does not seem to have a mechanism to grab the mouse pointer
-extern WindowRef fl_capture;
+#ifdef __APPLE_COCOA__
+extern void MACsetkeywindow(void *nsw);
+extern void *fl_capture;
+#else
+extern Window fl_capture;
+#endif
#endif
void Fl::grab(Fl_Window* win) {
@@ -58,8 +63,13 @@ void Fl::grab(Fl_Window* win) {
SetActiveWindow(fl_capture = fl_xid(first_window()));
SetCapture(fl_capture);
#elif defined(__APPLE__)
- fl_capture = fl_xid( first_window() );
- SetUserFocusWindow( fl_capture );
+#ifdef __APPLE_COCOA__
+ fl_capture = Fl_X::i(first_window())->xid;
+ MACsetkeywindow(fl_capture);
+#else
+ fl_capture = fl_xid( first_window() );
+ SetUserFocusWindow( fl_capture );
+#endif
#else
XGrabPointer(fl_display,
fl_xid(first_window()),
@@ -87,7 +97,9 @@ void Fl::grab(Fl_Window* win) {
ReleaseCapture();
#elif defined(__APPLE__)
fl_capture = 0;
+#ifndef __APPLE_COCOA__
SetUserFocusWindow( (WindowRef)kUserFocusAuto );
+#endif
#else
XUngrabKeyboard(fl_display, fl_event_time);
XUngrabPointer(fl_display, fl_event_time);