| Top |
At a high-level, a window is not-visible or visible. When a
window is added (with meta_compositor_add_window()) it is not visible.
meta_compositor_show_window() indicates a transition from not-visible to
visible. Some of the reasons for this:
Window newly created
Window is unminimized
Window is moved to the current desktop
Window was made sticky
meta_compositor_hide_window() indicates that the window has transitioned from visible to not-visible. Some reasons include:
Window was destroyed
Window is minimized
Window is moved to a different desktop
Window no longer sticky.
Note that combinations are possible - a window might have first
been minimized and then moved to a different desktop. The 'effect' parameter
to meta_compositor_show_window() and meta_compositor_hide_window() is a hint
as to the appropriate effect to show the user and should not
be considered to be indicative of a state change.
When the active workspace is changed, meta_compositor_switch_workspace() is
called first, then meta_compositor_show_window() and
meta_compositor_hide_window() are called individually for each window
affected, with an effect of META_COMP_EFFECT_NONE.
If hiding windows will affect the switch workspace animation, the
compositor needs to delay hiding the windows until the switch
workspace animation completes.
meta_compositor_maximize_window() and meta_compositor_unmaximize_window()
are transitions within the visible state. The window is resized __before__
the call, so it may be necessary to readjust the display based on the
old_rect to start the animation.
There's two containers in the stage that are used to place window actors, here are listed in the order in which they are painted:
window group, accessible with meta_get_window_group_for_screen()
top window group, accessible with meta_get_top_window_group_for_screen()
Mutter will place actors representing windows in the window group, except for override-redirect windows (ie. popups and menus) which will be placed in the top window group.
void meta_compositor_manage_screen (MetaCompositor *compositor,MetaScreen *screen);
void meta_compositor_unmanage_screen (MetaCompositor *compositor,MetaScreen *screen);
void meta_compositor_window_shape_changed (MetaCompositor *compositor,MetaWindow *window);
gboolean meta_compositor_process_event (MetaCompositor *compositor,XEvent *event,MetaWindow *window);
gboolean meta_compositor_filter_keybinding (MetaCompositor *compositor,MetaScreen *screen,MetaKeyBinding *binding);
void meta_compositor_add_window (MetaCompositor *compositor,MetaWindow *window);
void meta_compositor_remove_window (MetaCompositor *compositor,MetaWindow *window);
void meta_compositor_show_window (MetaCompositor *compositor,MetaWindow *window,MetaCompEffect effect);
void meta_compositor_hide_window (MetaCompositor *compositor,MetaWindow *window,MetaCompEffect effect);
void meta_compositor_switch_workspace (MetaCompositor *compositor,MetaScreen *screen,MetaWorkspace *from,MetaWorkspace *to,MetaMotionDirection direction);
void meta_compositor_maximize_window (MetaCompositor *compositor,MetaWindow *window,MetaRectangle *old_rect,MetaRectangle *new_rect);
void meta_compositor_unmaximize_window (MetaCompositor *compositor,MetaWindow *window,MetaRectangle *old_rect,MetaRectangle *new_rect);
void meta_compositor_sync_window_geometry (MetaCompositor *compositor,MetaWindow *window,gboolean did_placement);
void meta_compositor_set_updates_frozen (MetaCompositor *compositor,MetaWindow *window,gboolean updates_frozen);
void meta_compositor_queue_frame_drawn (MetaCompositor *compositor,MetaWindow *window,gboolean no_delay_frame);
void meta_compositor_sync_stack (MetaCompositor *compositor,MetaScreen *screen,GList *stack);
void meta_compositor_sync_screen_size (MetaCompositor *compositor,MetaScreen *screen,guint width,guint height);
void meta_compositor_flash_screen (MetaCompositor *compositor,MetaScreen *screen);
ClutterActor *
meta_get_window_group_for_screen (MetaScreen *screen);
ClutterActor *
meta_get_top_window_group_for_screen (MetaScreen *screen);
void
meta_disable_unredirect_for_screen (MetaScreen *screen);
Disables unredirection, can be usefull in situations where having unredirected windows is undesireable like when recording a video.
void
meta_enable_unredirect_for_screen (MetaScreen *screen);
Enables unredirection which reduces the overhead for apps like games.
void meta_set_stage_input_region (MetaScreen *screen,XserverRegion region);
Indicates the appropriate effect to show the user for
meta_compositor_show_window() and meta_compositor_hide_window()
|
The window is newly created (also used for a window that was previously on a different workspace and is changed to become visible on the active workspace.) |
||
|
The window should be shown as unminimizing from its icon geometry. |
||
|
The window is being destroyed |
||
|
The window should be shown as minimizing to its icon geometry. |
||
|
No effect, the window should be shown or hidden immediately. |