[mutter] compositor: add support for unminimize compositor effects
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] compositor: add support for unminimize compositor effects
- Date: Sat, 26 Jul 2014 15:26:56 +0000 (UTC)
commit cd84317346c7eea04b195be9c669bd9fa1eb2544
Author: Cosimo Cecchi <cosimo endlessm com>
Date: Thu Jun 13 18:01:17 2013 -0700
compositor: add support for unminimize compositor effects
https://bugzilla.gnome.org/show_bug.cgi?id=733789
doc/reference/meta-sections.txt | 1 +
src/compositor/meta-plugin-manager.c | 9 +++++++++
src/compositor/meta-plugin-manager.h | 1 +
src/compositor/meta-plugin.c | 7 +++++++
src/compositor/meta-window-actor.c | 17 +++++++++++++++--
src/meta/meta-plugin.h | 13 +++++++++++++
6 files changed, 46 insertions(+), 2 deletions(-)
---
diff --git a/doc/reference/meta-sections.txt b/doc/reference/meta-sections.txt
index 5952f0a..66fb446 100644
--- a/doc/reference/meta-sections.txt
+++ b/doc/reference/meta-sections.txt
@@ -300,6 +300,7 @@ MetaPluginVersion
META_PLUGIN_DECLARE
meta_plugin_switch_workspace_completed
meta_plugin_minimize_completed
+meta_plugin_unminimize_completed
meta_plugin_maximize_completed
meta_plugin_unmaximize_completed
meta_plugin_map_completed
diff --git a/src/compositor/meta-plugin-manager.c b/src/compositor/meta-plugin-manager.c
index d36c289..eb68497 100644
--- a/src/compositor/meta-plugin-manager.c
+++ b/src/compositor/meta-plugin-manager.c
@@ -170,6 +170,15 @@ meta_plugin_manager_event_simple (MetaPluginManager *plugin_mgr,
klass->minimize (plugin, actor);
}
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:
if (klass->map)
{
diff --git a/src/compositor/meta-plugin-manager.h b/src/compositor/meta-plugin-manager.h
index c425d82..3baa0a8 100644
--- a/src/compositor/meta-plugin-manager.h
+++ b/src/compositor/meta-plugin-manager.h
@@ -35,6 +35,7 @@
#define META_PLUGIN_MAP (1<<3)
#define META_PLUGIN_DESTROY (1<<4)
#define META_PLUGIN_SWITCH_WORKSPACE (1<<5)
+#define META_PLUGIN_UNMINIMIZE (1<<6)
#define META_PLUGIN_ALL_EFFECTS (~0)
diff --git a/src/compositor/meta-plugin.c b/src/compositor/meta-plugin.c
index 8d71e69..170fa69 100644
--- a/src/compositor/meta-plugin.c
+++ b/src/compositor/meta-plugin.c
@@ -111,6 +111,13 @@ meta_plugin_minimize_completed (MetaPlugin *plugin,
}
void
+meta_plugin_unminimize_completed (MetaPlugin *plugin,
+ MetaWindowActor *actor)
+{
+ meta_plugin_window_effect_completed (plugin, actor, META_PLUGIN_UNMINIMIZE);
+}
+
+void
meta_plugin_maximize_completed (MetaPlugin *plugin,
MetaWindowActor *actor)
{
diff --git a/src/compositor/meta-window-actor.c b/src/compositor/meta-window-actor.c
index 4f1e238..b30faf7 100644
--- a/src/compositor/meta-window-actor.c
+++ b/src/compositor/meta-window-actor.c
@@ -84,6 +84,7 @@ struct _MetaWindowActorPrivate
* might be dubious, but we have to at least handle it correctly.
*/
gint minimize_in_progress;
+ gint unminimize_in_progress;
gint maximize_in_progress;
gint unmaximize_in_progress;
gint map_in_progress;
@@ -1008,6 +1009,9 @@ start_simple_effect (MetaWindowActor *self,
case META_PLUGIN_MINIMIZE:
counter = &priv->minimize_in_progress;
break;
+ case META_PLUGIN_UNMINIMIZE:
+ counter = &priv->unminimize_in_progress;
+ break;
case META_PLUGIN_MAP:
counter = &priv->map_in_progress;
break;
@@ -1078,6 +1082,16 @@ meta_window_actor_effect_completed (MetaWindowActor *self,
}
}
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:
/*
* 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;
break;
case META_COMP_EFFECT_UNMINIMIZE:
- /* FIXME: should have META_PLUGIN_UNMINIMIZE */
- event = META_PLUGIN_MAP;
+ event = META_PLUGIN_UNMINIMIZE;
break;
case META_COMP_EFFECT_NONE:
break;
diff --git a/src/meta/meta-plugin.h b/src/meta/meta-plugin.h
index 55887b4..3e840d7 100644
--- a/src/meta/meta-plugin.h
+++ b/src/meta/meta-plugin.h
@@ -95,6 +95,15 @@ struct _MetaPluginClass
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:
* @actor: a #MetaWindowActor
* @x: target X coordinate
@@ -373,6 +382,10 @@ meta_plugin_minimize_completed (MetaPlugin *plugin,
MetaWindowActor *actor);
void
+meta_plugin_unminimize_completed (MetaPlugin *plugin,
+ MetaWindowActor *actor);
+
+void
meta_plugin_maximize_completed (MetaPlugin *plugin,
MetaWindowActor *actor);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]