summaryrefslogtreecommitdiff
path: root/src/Fl_grab.cxx
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2009-12-06 22:21:55 +0000
committerMatthias Melcher <fltk@matthiasm.com>2009-12-06 22:21:55 +0000
commitb2cffc688ea7abbddabc9ed23deea1921f59ac9d (patch)
tree74a50bdb133fd6b5af7c785541bcc46e2e8e9c15 /src/Fl_grab.cxx
parent1ea4b4573538f2d53960dd8a4ef4f35480d2f5f7 (diff)
Moved OS X code base to the more moder Cocoa toolkit thanks to the awesome work of Manolo Gouy (STR #2221). This is a big one! I tested all test applications under 32-bit autoconf and Xcode, and a few apps under 64bit intel. No PPC testing was done. Please verify this patch if you have the machine!
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@6951 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
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);