diff options
author | Sergey Udaltsov <svu@gnome.org> | 2009-10-12 20:28:55 +0000 |
---|---|---|
committer | Sergey Udaltsov <svu@gnome.org> | 2009-10-12 20:28:55 +0000 |
commit | c4a650f9a9dd8e672ddecb5fbd96dccf35931484 (patch) | |
tree | c1d616eedb77bf1dd8103d305c1afda5681dd084 | |
parent | 9ea4cbefa5cfeac7f8b77a17380d682bf8741d16 (diff) | |
download | libxklavier-c4a650f9a9dd8e672ddecb5fbd96dccf35931484.tar.gz |
handling for transient windows, group derived from the parent window. By Paul Sokolovsky
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | libxklavier/xklavier_toplevel.c | 16 |
2 files changed, 22 insertions, 0 deletions
@@ -1,3 +1,9 @@ +2009-10-12 svu + + * libxklavier/xklavier_toplevel.c: using transient property for smart + handling of the popup windows (for the per-window layout scenario). + Nice idea by Paul Sokolovsky + 2009-09-30 svu * libxklavier/xklavier_evt.c: ignore BadDrawable error, diff --git a/libxklavier/xklavier_toplevel.c b/libxklavier/xklavier_toplevel.c index e48de9d..651dc1a 100644 --- a/libxklavier/xklavier_toplevel.c +++ b/libxklavier/xklavier_toplevel.c @@ -114,6 +114,22 @@ xkl_engine_add_toplevel_window(XklEngine * engine, Window toplevel_win, g_signal_lookup("new-toplevel-window", xkl_engine_get_type()); g_signal_emitv(params, signal_id, 0, &rv); default_group_to_use = g_value_get_int(&rv); + + if (default_group_to_use == -1) { + Window transient_for = 0; + if (XGetTransientForHint(xkl_engine_get_display(engine), toplevel_win, &transient_for)) { + if (transient_for) { + XklState trans_state; + gboolean have_state = + xkl_engine_get_toplevel_window_state(engine, + transient_for, + &trans_state); + if (have_state) { + default_group_to_use = trans_state.group; + } + } + } + } if (default_group_to_use == -1) default_group_to_use = |