mirror of
https://github.com/brl/mutter.git
synced 2024-11-25 01:20:42 -05:00
Preserve stacking order across restarts.
2007-04-15 Elijah Newren <newren gmail com> Preserve stacking order across restarts. * src/display.c (meta_display_unmanage_windows_for_screen): unmap windows in stacking order so that stacking is preserved upon shutdown * src/display.[ch] (meta_display_stack_cmp): * src/session.c (stack_cmp, save_state): rename stack_cmp() -> meta_display_stack_cmp() and move it to a different function so that it can be used in both session.c:save_state() and meta_display_unmanage_windows_for_screen() svn path=/trunk/; revision=3197
This commit is contained in:
parent
6de7271ab6
commit
3f7d729978
15
ChangeLog
15
ChangeLog
@ -1,3 +1,18 @@
|
||||
2007-04-15 Elijah Newren <newren gmail com>
|
||||
|
||||
Preserve stacking order across restarts.
|
||||
|
||||
* src/display.c (meta_display_unmanage_windows_for_screen):
|
||||
unmap windows in stacking order so that stacking is preserved upon
|
||||
shutdown
|
||||
|
||||
* src/display.[ch] (meta_display_stack_cmp):
|
||||
* src/session.c (stack_cmp, save_state):
|
||||
rename stack_cmp() -> meta_display_stack_cmp() and move it to a
|
||||
different function so that it can be used in both
|
||||
session.c:save_state() and
|
||||
meta_display_unmanage_windows_for_screen()
|
||||
|
||||
2007-04-15 Elijah Newren <newren gmail com>
|
||||
|
||||
Remove incorrect usage of window.h from menu.c. See #426791 &
|
||||
|
@ -4702,6 +4702,7 @@ meta_display_unmanage_windows_for_screen (MetaDisplay *display,
|
||||
GSList *winlist;
|
||||
|
||||
winlist = meta_display_list_windows (display);
|
||||
winlist = g_slist_sort (winlist, meta_display_stack_cmp);
|
||||
|
||||
/* Unmanage all windows */
|
||||
tmp = winlist;
|
||||
@ -4714,6 +4715,24 @@ meta_display_unmanage_windows_for_screen (MetaDisplay *display,
|
||||
g_slist_free (winlist);
|
||||
}
|
||||
|
||||
int
|
||||
meta_display_stack_cmp (const void *a,
|
||||
const void *b)
|
||||
{
|
||||
MetaWindow *aw = (void*) a;
|
||||
MetaWindow *bw = (void*) b;
|
||||
|
||||
if (aw->screen == bw->screen)
|
||||
return meta_stack_windows_cmp (aw->screen->stack, aw, bw);
|
||||
/* Then assume screens are stacked by number */
|
||||
else if (aw->screen->number < bw->screen->number)
|
||||
return -1;
|
||||
else if (aw->screen->number > bw->screen->number)
|
||||
return 1;
|
||||
else
|
||||
return 0; /* not reached in theory, if windows on same display */
|
||||
}
|
||||
|
||||
void
|
||||
meta_display_devirtualize_modifiers (MetaDisplay *display,
|
||||
MetaVirtualModifier modifiers,
|
||||
|
@ -416,6 +416,10 @@ void meta_display_unmanage_windows_for_screen (MetaDisplay *display,
|
||||
MetaScreen *screen,
|
||||
guint32 timestamp);
|
||||
|
||||
/* Utility function to compare the stacking of two windows */
|
||||
int meta_display_stack_cmp (const void *a,
|
||||
const void *b);
|
||||
|
||||
/* A given MetaWindow may have various X windows that "belong"
|
||||
* to it, such as the frame window.
|
||||
*/
|
||||
|
@ -801,24 +801,6 @@ decode_text_from_utf8 (const char *text)
|
||||
return g_string_free (str, FALSE);
|
||||
}
|
||||
|
||||
static int
|
||||
stack_cmp (const void *a,
|
||||
const void *b)
|
||||
{
|
||||
MetaWindow *aw = (void*) a;
|
||||
MetaWindow *bw = (void*) b;
|
||||
|
||||
if (aw->screen == bw->screen)
|
||||
return meta_stack_windows_cmp (aw->screen->stack, aw, bw);
|
||||
/* Then assume screens are stacked by number */
|
||||
else if (aw->screen->number < bw->screen->number)
|
||||
return -1;
|
||||
else if (aw->screen->number > bw->screen->number)
|
||||
return 1;
|
||||
else
|
||||
return 0; /* not reached in theory, if windows on same display */
|
||||
}
|
||||
|
||||
static void
|
||||
save_state (void)
|
||||
{
|
||||
@ -891,7 +873,7 @@ save_state (void)
|
||||
int stack_position;
|
||||
|
||||
windows = meta_display_list_windows (display_iter->data);
|
||||
windows = g_slist_sort (windows, stack_cmp);
|
||||
windows = g_slist_sort (windows, meta_display_stack_cmp);
|
||||
|
||||
stack_position = 0;
|
||||
tmp = windows;
|
||||
|
Loading…
Reference in New Issue
Block a user