Add a stack-freeze feature to CWindow.

Wed May 24 14:36:42 2006  Søren Sandmann  <sandmann@redhat.com>

        * src/c-window.c (meta_comp_window_{freeze,thaw}_stack: Add a
        stack-freeze feature to CWindow.

        * src/c-screen.c (meta_comp_screen_restack): Don't restack if the
        window is frozen.
This commit is contained in:
Søren Sandmann 2006-05-24 18:38:54 +00:00 committed by Søren Sandmann Pedersen
parent 7d2f0bf1fe
commit ca3236f76c
5 changed files with 44 additions and 7 deletions

View File

@ -1,3 +1,11 @@
Wed May 24 14:36:42 2006 Søren Sandmann <sandmann@redhat.com>
* src/c-window.c (meta_comp_window_{freeze,thaw}_stack: Add a
stack-freeze feature to CWindow.
* src/c-screen.c (meta_comp_screen_restack): Don't restack if the
window is frozen.
Wed May 24 13:09:49 2006 Søren Sandmann <sandmann@redhat.com> Wed May 24 13:09:49 2006 Søren Sandmann <sandmann@redhat.com>
* src/c-window.c: Fix compilation in the non-composited case. * src/c-window.c: Fix compilation in the non-composited case.

View File

@ -414,12 +414,16 @@ meta_comp_screen_restack (MetaCompScreen *info,
Window window, Window window,
Window above_this) Window above_this)
{ {
MetaCompWindow *comp_window = find_comp_window (info, window);
MetaCompWindow *above_comp_window = find_comp_window (info, above_this);
CmNode *window_node = find_node (info, window); CmNode *window_node = find_node (info, window);
CmNode *above_node = find_node (info, above_this); CmNode *above_node = find_node (info, above_this);
#if 0 if ((comp_window && meta_comp_window_stack_frozen (comp_window)) ||
g_print ("restack %lx over %lx \n", window, above_this); (above_comp_window && meta_comp_window_stack_frozen (above_comp_window)))
#endif {
return;
}
#if 0 #if 0
dump_stacking_order (info->stacker->children); dump_stacking_order (info->stacker->children);

View File

@ -51,6 +51,8 @@ struct _MetaCompWindow
gboolean animation_in_progress; gboolean animation_in_progress;
gboolean hide_after_animation; gboolean hide_after_animation;
int stack_freeze_count;
}; };
static Window static Window
@ -191,7 +193,6 @@ meta_comp_window_hide (MetaCompWindow *comp_window)
return; return;
} }
g_print ("hide %p\n", comp_window->node);
cm_drawable_node_set_viewable (CM_DRAWABLE_NODE (comp_window->node), FALSE); cm_drawable_node_set_viewable (CM_DRAWABLE_NODE (comp_window->node), FALSE);
} }
@ -981,3 +982,21 @@ meta_compositor_minimize (MetaCompositor *compositor,
g_idle_add (run_animation_01, info); g_idle_add (run_animation_01, info);
} }
#endif #endif
void
meta_comp_window_freeze_stack (MetaCompWindow *comp_window)
{
comp_window->stack_freeze_count++;
}
void
meta_comp_window_thaw_stack (MetaCompWindow *comp_window)
{
comp_window->stack_freeze_count--;
}
gboolean
meta_comp_window_stack_frozen (MetaCompWindow *comp_window)
{
return comp_window->stack_freeze_count > 0;
}

View File

@ -45,6 +45,11 @@ void meta_comp_window_shrink (MetaCompWindow *comp_window,
MetaEffect *effect); MetaEffect *effect);
void meta_comp_window_unshrink (MetaCompWindow *comp_window, void meta_comp_window_unshrink (MetaCompWindow *comp_window,
MetaEffect *effect); MetaEffect *effect);
void meta_comp_window_restack (MetaCompWindow *comp_window,
MetaCompWindow *above);
void meta_comp_window_freeze_stack (MetaCompWindow *comp_window);
void meta_comp_window_thaw_stack (MetaCompWindow *comp_window);
gboolean meta_comp_window_stack_frozen (MetaCompWindow *comp_window);
#if 0 #if 0
void meta_comp_window_set_explode (MetaCompWindow *comp_window, void meta_comp_window_set_explode (MetaCompWindow *comp_window,

View File

@ -143,6 +143,7 @@ do_effect (MetaEffect *effect,
MetaCompWindow *window = MetaCompWindow *window =
meta_comp_screen_lookup_window (screen, effect->u.minimize.window->frame->xwindow); meta_comp_screen_lookup_window (screen, effect->u.minimize.window->frame->xwindow);
meta_comp_window_freeze_stack (window);
meta_comp_window_set_updates (window, FALSE); meta_comp_window_set_updates (window, FALSE);
meta_comp_window_explode (window, effect); meta_comp_window_explode (window, effect);
break; break;