compositor: add support for unminimize compositor effects

https://bugzilla.gnome.org/show_bug.cgi?id=733789
This commit is contained in:
Cosimo Cecchi 2013-06-13 18:01:17 -07:00 committed by Cosimo Cecchi
parent 4f55e16fe9
commit cd84317346
6 changed files with 46 additions and 2 deletions

View File

@ -300,6 +300,7 @@ MetaPluginVersion
META_PLUGIN_DECLARE META_PLUGIN_DECLARE
meta_plugin_switch_workspace_completed meta_plugin_switch_workspace_completed
meta_plugin_minimize_completed meta_plugin_minimize_completed
meta_plugin_unminimize_completed
meta_plugin_maximize_completed meta_plugin_maximize_completed
meta_plugin_unmaximize_completed meta_plugin_unmaximize_completed
meta_plugin_map_completed meta_plugin_map_completed

View File

@ -170,6 +170,15 @@ meta_plugin_manager_event_simple (MetaPluginManager *plugin_mgr,
klass->minimize (plugin, actor); klass->minimize (plugin, actor);
} }
break; break;
case META_PLUGIN_UNMINIMIZE:
if (klass->unminimize)
{
retval = TRUE;
meta_plugin_manager_kill_window_effects (plugin_mgr,
actor);
klass->unminimize (plugin, actor);
}
break;
case META_PLUGIN_MAP: case META_PLUGIN_MAP:
if (klass->map) if (klass->map)
{ {

View File

@ -35,6 +35,7 @@
#define META_PLUGIN_MAP (1<<3) #define META_PLUGIN_MAP (1<<3)
#define META_PLUGIN_DESTROY (1<<4) #define META_PLUGIN_DESTROY (1<<4)
#define META_PLUGIN_SWITCH_WORKSPACE (1<<5) #define META_PLUGIN_SWITCH_WORKSPACE (1<<5)
#define META_PLUGIN_UNMINIMIZE (1<<6)
#define META_PLUGIN_ALL_EFFECTS (~0) #define META_PLUGIN_ALL_EFFECTS (~0)

View File

@ -110,6 +110,13 @@ meta_plugin_minimize_completed (MetaPlugin *plugin,
meta_plugin_window_effect_completed (plugin, actor, META_PLUGIN_MINIMIZE); meta_plugin_window_effect_completed (plugin, actor, META_PLUGIN_MINIMIZE);
} }
void
meta_plugin_unminimize_completed (MetaPlugin *plugin,
MetaWindowActor *actor)
{
meta_plugin_window_effect_completed (plugin, actor, META_PLUGIN_UNMINIMIZE);
}
void void
meta_plugin_maximize_completed (MetaPlugin *plugin, meta_plugin_maximize_completed (MetaPlugin *plugin,
MetaWindowActor *actor) MetaWindowActor *actor)

View File

@ -84,6 +84,7 @@ struct _MetaWindowActorPrivate
* might be dubious, but we have to at least handle it correctly. * might be dubious, but we have to at least handle it correctly.
*/ */
gint minimize_in_progress; gint minimize_in_progress;
gint unminimize_in_progress;
gint maximize_in_progress; gint maximize_in_progress;
gint unmaximize_in_progress; gint unmaximize_in_progress;
gint map_in_progress; gint map_in_progress;
@ -1008,6 +1009,9 @@ start_simple_effect (MetaWindowActor *self,
case META_PLUGIN_MINIMIZE: case META_PLUGIN_MINIMIZE:
counter = &priv->minimize_in_progress; counter = &priv->minimize_in_progress;
break; break;
case META_PLUGIN_UNMINIMIZE:
counter = &priv->unminimize_in_progress;
break;
case META_PLUGIN_MAP: case META_PLUGIN_MAP:
counter = &priv->map_in_progress; counter = &priv->map_in_progress;
break; break;
@ -1078,6 +1082,16 @@ meta_window_actor_effect_completed (MetaWindowActor *self,
} }
} }
break; break;
case META_PLUGIN_UNMINIMIZE:
{
priv->unminimize_in_progress--;
if (priv->unminimize_in_progress < 0)
{
g_warning ("Error in unminimize accounting.");
priv->unminimize_in_progress = 0;
}
}
break;
case META_PLUGIN_MAP: case META_PLUGIN_MAP:
/* /*
* Make sure that the actor is at the correct place in case * Make sure that the actor is at the correct place in case
@ -1243,8 +1257,7 @@ meta_window_actor_show (MetaWindowActor *self,
event = META_PLUGIN_MAP; event = META_PLUGIN_MAP;
break; break;
case META_COMP_EFFECT_UNMINIMIZE: case META_COMP_EFFECT_UNMINIMIZE:
/* FIXME: should have META_PLUGIN_UNMINIMIZE */ event = META_PLUGIN_UNMINIMIZE;
event = META_PLUGIN_MAP;
break; break;
case META_COMP_EFFECT_NONE: case META_COMP_EFFECT_NONE:
break; break;

View File

@ -94,6 +94,15 @@ struct _MetaPluginClass
void (*minimize) (MetaPlugin *plugin, void (*minimize) (MetaPlugin *plugin,
MetaWindowActor *actor); MetaWindowActor *actor);
/**
* MetaPluginClass::unminimize:
* @actor: a #MetaWindowActor
*
* Virtual function called when the window represented by @actor is unminimized.
*/
void (*unminimize) (MetaPlugin *plugin,
MetaWindowActor *actor);
/** /**
* MetaPluginClass::maximize: * MetaPluginClass::maximize:
* @actor: a #MetaWindowActor * @actor: a #MetaWindowActor
@ -372,6 +381,10 @@ void
meta_plugin_minimize_completed (MetaPlugin *plugin, meta_plugin_minimize_completed (MetaPlugin *plugin,
MetaWindowActor *actor); MetaWindowActor *actor);
void
meta_plugin_unminimize_completed (MetaPlugin *plugin,
MetaWindowActor *actor);
void void
meta_plugin_maximize_completed (MetaPlugin *plugin, meta_plugin_maximize_completed (MetaPlugin *plugin,
MetaWindowActor *actor); MetaWindowActor *actor);