diff --git a/ChangeLog b/ChangeLog index 9fea01cc2..c9bb39f46 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2002-11-22 Havoc Pennington + + * src/window.c (meta_window_change_workspace): patch from + Hidetoshi Tajima to move a window's transients when moving + the window between workspaces. #98900 + +2002-11-21 Havoc Pennington + + * src/display.c (meta_display_open): init ret_to to + RevertToPointerRoot out of sheer paranoia; don't want no + RevertToNone in my code! + 2002-11-21 Havoc Pennington * src/window.c (update_initial_workspace): delete diff --git a/src/display.c b/src/display.c index d9b23f7a0..8198276e4 100644 --- a/src/display.c +++ b/src/display.c @@ -528,7 +528,7 @@ meta_display_open (const char *name) meta_error_trap_push (display); focus = None; - ret_to = RevertToNone; + ret_to = RevertToPointerRoot; XGetInputFocus (display->xdisplay, &focus, &ret_to); /* Force a new FocusIn (does this work?) */ diff --git a/src/window.c b/src/window.c index 397daf91c..0f2d63dbf 100644 --- a/src/window.c +++ b/src/window.c @@ -2960,9 +2960,9 @@ meta_window_focus (MetaWindow *window, } } -void -meta_window_change_workspace (MetaWindow *window, - MetaWorkspace *workspace) +static void +meta_window_change_workspace_without_transients (MetaWindow *window, + MetaWorkspace *workspace) { GList *next; @@ -2997,6 +2997,23 @@ meta_window_change_workspace (MetaWindow *window, g_assert (window->workspaces->next == NULL); } +static void +change_workspace_foreach (MetaWindow *window, + void *data) +{ + meta_window_change_workspace_without_transients (window, data); +} + +void +meta_window_change_workspace (MetaWindow *window, + MetaWorkspace *workspace) +{ + meta_window_change_workspace_without_transients (window, workspace); + + meta_window_foreach_transient (window, change_workspace_foreach, + workspace); +} + void meta_window_stick (MetaWindow *window) {