diff options
author | Richard Hult <richard@imendio.com> | 2007-06-04 20:45:30 +0000 |
---|---|---|
committer | Richard Hult <rhult@src.gnome.org> | 2007-06-04 20:45:30 +0000 |
commit | 72469142a08b254d4345329fe0fb4746e9b6a186 (patch) | |
tree | 87a7c71b9f02253b871d60c775a4f097bf6691bf | |
parent | 60be3caaaaf0347e2736cc0bf200dd12f8b39ce1 (diff) | |
download | gdk-pixbuf-72469142a08b254d4345329fe0fb4746e9b6a186.tar.gz |
* gdk/quartz/gdkwindow-quartz.c: Implement simple versions of
2007-06-04 Richard Hult <richard@imendio.com>
* gdk/quartz/GdkQuartzWindow.c: * gdk/quartz/gdkwindow-quartz.c:
Implement simple versions of gdk_window_set_accept_focus and
gdk_window_set_focus_on_map.
svn path=/trunk/; revision=18038
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | gdk/quartz/GdkQuartzWindow.c | 3 | ||||
-rw-r--r-- | gdk/quartz/gdkwindow-quartz.c | 37 |
3 files changed, 43 insertions, 3 deletions
@@ -1,5 +1,11 @@ 2007-06-04 Richard Hult <richard@imendio.com> + * gdk/quartz/GdkQuartzWindow.c: * gdk/quartz/gdkwindow-quartz.c: + Implement simple versions of gdk_window_set_accept_focus and + gdk_window_set_focus_on_map. + +2007-06-04 Richard Hult <richard@imendio.com> + * gdk/quartz/gdkwindow-quartz.c: (gdk_window_raise), (gdk_window_raise): Implement. diff --git a/gdk/quartz/GdkQuartzWindow.c b/gdk/quartz/GdkQuartzWindow.c index 0004249ef..04fb48915 100644 --- a/gdk/quartz/GdkQuartzWindow.c +++ b/gdk/quartz/GdkQuartzWindow.c @@ -176,6 +176,9 @@ GdkWindowObject *private = (GdkWindowObject *)window; GdkWindowImplQuartz *impl = GDK_WINDOW_IMPL_QUARTZ (private->impl); + if (!private->accept_focus) + return NO; + /* FIXME: Is this right? If so, the switch shouldn't be needed. Need * this + some tweaking to the event/grab code to get menus * working... diff --git a/gdk/quartz/gdkwindow-quartz.c b/gdk/quartz/gdkwindow-quartz.c index 69b4c6cb5..fd01805f4 100644 --- a/gdk/quartz/gdkwindow-quartz.c +++ b/gdk/quartz/gdkwindow-quartz.c @@ -526,6 +526,9 @@ gdk_window_new (GdkWindow *parent, private->parent = (GdkWindowObject *)parent; + private->accept_focus = TRUE; + private->focus_on_map = TRUE; + if (attributes_mask & GDK_WA_X) private->x = attributes->x; else @@ -781,12 +784,16 @@ all_parents_shown (GdkWindowObject *private) return FALSE; } +/* Note: the raise argument is not really used, it doesn't seem + * possible to show a window without raising it? + */ static void show_window_internal (GdkWindow *window, gboolean raise) { GdkWindowObject *private; GdkWindowImplQuartz *impl; + gboolean focus_on_map; if (GDK_WINDOW_DESTROYED (window)) return; @@ -796,9 +803,21 @@ show_window_internal (GdkWindow *window, private = (GdkWindowObject *)window; impl = GDK_WINDOW_IMPL_QUARTZ (private->impl); + if (!GDK_WINDOW_IS_MAPPED (window)) + focus_on_map = private->focus_on_map; + else + focus_on_map = TRUE; + if (impl->toplevel) { - [impl->toplevel orderFront:nil]; + /* We should make the window not raise for !raise, but at least + * this will keep it from getting focused in that case. + */ + if (private->accept_focus && focus_on_map && raise) + [impl->toplevel makeKeyAndOrderFront:nil]; + else + [impl->toplevel orderFront:nil]; + [impl->view setNeedsDisplay:YES]; } else @@ -1617,7 +1636,13 @@ void gdk_window_set_accept_focus (GdkWindow *window, gboolean accept_focus) { - /* FIXME: Implement */ + GdkWindowObject *private; + + g_return_if_fail (GDK_IS_WINDOW (window)); + + private = (GdkWindowObject *)window; + + private->accept_focus = accept_focus != FALSE; } void @@ -1654,7 +1679,13 @@ void gdk_window_set_focus_on_map (GdkWindow *window, gboolean focus_on_map) { - /* FIXME: Implement */ + GdkWindowObject *private; + + g_return_if_fail (GDK_IS_WINDOW (window)); + + private = (GdkWindowObject *)window; + + private->focus_on_map = focus_on_map != FALSE; } void |