aboutsummaryrefslogtreecommitdiff
path: root/hildon/hildon-program.c
diff options
context:
space:
mode:
authorAlberto Garcia <agarcia@igalia.com>2009-10-01 16:05:48 +0200
committerAlberto Garcia <agarcia@igalia.com>2009-10-16 13:18:48 +0200
commit10e638236ccb70eb0a4f5c4790b13492ba0c8212 (patch)
tree6cca83e4d64b21969ee5bbb8c75d93e439a1b6e4 /hildon/hildon-program.c
parent2cb2e42f27f692269ac22648c67ab46975773a7b (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.c11
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);
}
}