diff options
author | Alberto Garcia <agarcia@igalia.com> | 2009-10-01 16:05:48 +0200 |
---|---|---|
committer | Alberto Garcia <agarcia@igalia.com> | 2009-10-16 13:18:48 +0200 |
commit | 10e638236ccb70eb0a4f5c4790b13492ba0c8212 (patch) | |
tree | 6cca83e4d64b21969ee5bbb8c75d93e439a1b6e4 /hildon/hildon-program.c | |
parent | 2cb2e42f27f692269ac22648c67ab46975773a7b (diff) |
Check all windows in a HildonProgram to know if it's topmost or not
Fixes: NB#125548 (HildonProgram notify::is-topmost is not working
properly with stacks)
Diffstat (limited to 'hildon/hildon-program.c')
-rw-r--r-- | hildon/hildon-program.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/hildon/hildon-program.c b/hildon/hildon-program.c index 33205f0..6a75549 100644 --- a/hildon/hildon-program.c +++ b/hildon/hildon-program.c @@ -82,6 +82,7 @@ #include <config.h> #endif +#include <gdk/gdkx.h> #include <X11/Xatom.h> #include "hildon-program.h" @@ -151,7 +152,6 @@ hildon_program_init (HildonProgram *self) priv->killable = FALSE; priv->window_count = 0; priv->is_topmost = FALSE; - priv->window_group = GDK_WINDOW_XID (gdk_display_get_default_group (gdk_display_get_default())); priv->common_menu = NULL; priv->common_app_menu = NULL; priv->common_toolbar = NULL; @@ -366,7 +366,14 @@ hildon_program_update_top_most (HildonProgram *program) if (wm_hints) { - is_topmost = (wm_hints->window_group == priv->window_group); + GSList *iter; + for (iter = priv->windows ; iter && !is_topmost; iter = iter->next) + { + GdkWindow *gdkwin = GTK_WIDGET (iter->data)->window; + GdkWindow *group = gdkwin ? gdk_window_get_group (gdkwin) : NULL; + if (group) + is_topmost = wm_hints->window_group == GDK_WINDOW_XID (group); + } XFree (wm_hints); } } |