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 /gdk/quartz/gdkwindow-quartz.c | |
parent | 60be3caaaaf0347e2736cc0bf200dd12f8b39ce1 (diff) | |
download | gtk+-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
Diffstat (limited to 'gdk/quartz/gdkwindow-quartz.c')
-rw-r--r-- | gdk/quartz/gdkwindow-quartz.c | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/gdk/quartz/gdkwindow-quartz.c b/gdk/quartz/gdkwindow-quartz.c index 69b4c6cb56..fd01805f41 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 |