implement some basic window management effects. #563844
svn path=/trunk/; revision=139
This commit is contained in:
parent
b3aaf2ced5
commit
85c22e484d
@ -8,6 +8,7 @@ const Tweener = imports.tweener.tweener;
|
|||||||
|
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
|
|
||||||
|
const WINDOW_ANIMATION_TIME = 0.25;
|
||||||
const SWITCH_ANIMATION_TIME = 0.5;
|
const SWITCH_ANIMATION_TIME = 0.5;
|
||||||
|
|
||||||
function WindowManager() {
|
function WindowManager() {
|
||||||
@ -20,20 +21,219 @@ WindowManager.prototype = {
|
|||||||
|
|
||||||
this._global = Shell.Global.get();
|
this._global = Shell.Global.get();
|
||||||
this._shellwm = this._global.window_manager;
|
this._shellwm = this._global.window_manager;
|
||||||
|
this._minimizing = [];
|
||||||
|
this._maximizing = [];
|
||||||
|
this._unmaximizing = [];
|
||||||
|
this._mapping = [];
|
||||||
|
this._destroying = [];
|
||||||
|
|
||||||
this._switchData = null;
|
this._switchData = null;
|
||||||
this._shellwm.connect('switch-workspace',
|
this._shellwm.connect('switch-workspace',
|
||||||
function(o, from, to, direction) {
|
function(o, from, to, direction) {
|
||||||
let actors = me._shellwm.get_switch_workspace_actors();
|
let actors = me._shellwm.get_switch_workspace_actors();
|
||||||
me.switchWorkspace(actors, from, to, direction);
|
me._switchWorkspace(actors, from, to, direction);
|
||||||
});
|
});
|
||||||
this._shellwm.connect('kill-switch-workspace',
|
this._shellwm.connect('kill-switch-workspace',
|
||||||
function(o) {
|
function(o) {
|
||||||
me.switchWorkspaceDone();
|
me._switchWorkspaceDone();
|
||||||
|
});
|
||||||
|
this._shellwm.connect('minimize',
|
||||||
|
function(o, actor) {
|
||||||
|
me._minimizeWindow(actor);
|
||||||
|
});
|
||||||
|
this._shellwm.connect('kill-minimize',
|
||||||
|
function(o, actor) {
|
||||||
|
me._minimizeWindowDone(actor);
|
||||||
|
});
|
||||||
|
this._shellwm.connect('maximize',
|
||||||
|
function(o, actor, tx, ty, tw, th) {
|
||||||
|
me._maximizeWindow(actor, tx, ty, tw, th);
|
||||||
|
});
|
||||||
|
this._shellwm.connect('kill-maximize',
|
||||||
|
function(o, actor) {
|
||||||
|
me._maximizeWindowDone(actor);
|
||||||
|
});
|
||||||
|
this._shellwm.connect('unmaximize',
|
||||||
|
function(o, actor, tx, ty, tw, th) {
|
||||||
|
me._unmaximizeWindow(actor, tx, ty, tw, th);
|
||||||
|
});
|
||||||
|
this._shellwm.connect('kill-unmaximize',
|
||||||
|
function(o, actor) {
|
||||||
|
me._unmaximizeWindowDone(actor);
|
||||||
|
});
|
||||||
|
this._shellwm.connect('map',
|
||||||
|
function(o, actor) {
|
||||||
|
me._mapWindow(actor);
|
||||||
|
});
|
||||||
|
this._shellwm.connect('kill-map',
|
||||||
|
function(o, actor) {
|
||||||
|
me._mapWindowDone(actor);
|
||||||
|
});
|
||||||
|
this._shellwm.connect('destroy',
|
||||||
|
function(o, actor) {
|
||||||
|
me._destroyWindow(actor);
|
||||||
|
});
|
||||||
|
this._shellwm.connect('kill-destroy',
|
||||||
|
function(o, actor) {
|
||||||
|
me._destroyWindowDone(actor);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
switchWorkspace : function(windows, from, to, direction) {
|
|
||||||
|
_minimizeWindow : function(actor) {
|
||||||
|
if (actor.get_window_type() != Meta.CompWindowType.NORMAL) {
|
||||||
|
this._shellwm.completed_minimize(actor);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
actor.set_scale(1.0, 1.0);
|
||||||
|
actor.move_anchor_point_from_gravity(Clutter.Gravity.CENTER);
|
||||||
|
|
||||||
|
/* scale window down to 0x0.
|
||||||
|
* maybe TODO: get icon geometry passed through and move the window towards it?
|
||||||
|
*/
|
||||||
|
this._minimizing.push(actor);
|
||||||
|
Tweener.addTween(actor,
|
||||||
|
{ scale_x: 0.0,
|
||||||
|
scale_y: 0.0,
|
||||||
|
time: WINDOW_ANIMATION_TIME,
|
||||||
|
transition: "easeOutQuad",
|
||||||
|
onComplete: this._minimizeWindowDone,
|
||||||
|
onCompleteScope: this,
|
||||||
|
onCompleteParams: [actor]
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
_minimizeWindowDone : function(actor) {
|
||||||
|
let idx = this._minimizing.indexOf(actor);
|
||||||
|
if (idx != -1) {
|
||||||
|
Tweener.removeTweens(actor);
|
||||||
|
actor.set_scale(1.0, 1.0);
|
||||||
|
actor.move_anchor_point_from_gravity(Clutter.Gravity.NORTH_WEST);
|
||||||
|
this._shellwm.completed_minimize(actor);
|
||||||
|
|
||||||
|
this._minimizing.splice(idx, 1);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_maximizeWindow : function(actor, target_x, target_y, target_width, target_height) {
|
||||||
|
if (actor.get_window_type() != Meta.CompWindowType.NORMAL) {
|
||||||
|
this._shellwm.completed_maximize(actor);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* this doesn't work very well, as simply scaling up the existing
|
||||||
|
* window contents doesn't produce anything like the same results as
|
||||||
|
* actually maximizing the window.
|
||||||
|
*/
|
||||||
|
let scale_x = target_width / actor.width;
|
||||||
|
let scale_y = target_height / actor.height;
|
||||||
|
let anchor_x = (actor.x - target_x) * actor.width/(target_width - actor.width);
|
||||||
|
let anchor_y = (actor.y - target_y) * actor.height/(target_height - actor.height);
|
||||||
|
|
||||||
|
actor.move_anchor_point(anchor_x, anchor_y);
|
||||||
|
|
||||||
|
this._maximizing.push(actor);
|
||||||
|
Tweener.addTween(actor,
|
||||||
|
{ scale_x: scale_x,
|
||||||
|
scale_y: scale_y,
|
||||||
|
time: WINDOW_ANIMATION_TIME,
|
||||||
|
transition: "easeOutQuad",
|
||||||
|
onComplete: this._maximizeWindowDone,
|
||||||
|
onCompleteScope: this,
|
||||||
|
onCompleteParams: [actor]
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
_maximizeWindowDone : function(actor) {
|
||||||
|
let idx = this._maximizing.indexOf(actor);
|
||||||
|
if (idx != -1) {
|
||||||
|
Tweener.removeTweens(actor);
|
||||||
|
actor.set_scale(1.0, 1.0);
|
||||||
|
actor.move_anchor_point_from_gravity(Clutter.Gravity.NORTH_WEST);
|
||||||
|
this._shellwm.completed_maximize(actor);
|
||||||
|
|
||||||
|
this._maximizing.splice(idx, 1);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_unmaximizeWindow : function(actor, target_x, target_y, target_width, target_height) {
|
||||||
|
this._shellwm.completed_unmaximize(actor);
|
||||||
|
},
|
||||||
|
|
||||||
|
_unmaximizeWindowDone : function(actor) {
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
_mapWindow : function(actor) {
|
||||||
|
if (actor.get_window_type() != Meta.CompWindowType.NORMAL) {
|
||||||
|
this._shellwm.completed_map(actor);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
actor.move_anchor_point_from_gravity(Clutter.Gravity.CENTER);
|
||||||
|
actor.set_scale(0.0, 0.0);
|
||||||
|
actor.show();
|
||||||
|
|
||||||
|
/* scale window up from 0x0 to normal size */
|
||||||
|
this._mapping.push(actor);
|
||||||
|
Tweener.addTween(actor,
|
||||||
|
{ scale_x: 1.0,
|
||||||
|
scale_y: 1.0,
|
||||||
|
time: WINDOW_ANIMATION_TIME,
|
||||||
|
transition: "easeOutQuad",
|
||||||
|
onComplete: this._mapWindowDone,
|
||||||
|
onCompleteScope: this,
|
||||||
|
onCompleteParams: [actor]
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
_mapWindowDone : function(actor) {
|
||||||
|
let idx = this._mapping.indexOf(actor);
|
||||||
|
if (idx != -1) {
|
||||||
|
Tweener.removeTweens(actor);
|
||||||
|
actor.set_scale(1.0, 1.0);
|
||||||
|
actor.move_anchor_point_from_gravity(Clutter.Gravity.NORTH_WEST);
|
||||||
|
this._shellwm.completed_map(actor);
|
||||||
|
|
||||||
|
this._mapping.splice(idx, 1);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_destroyWindow : function(actor) {
|
||||||
|
if (actor.get_window_type() != Meta.CompWindowType.NORMAL) {
|
||||||
|
this._shellwm.completed_destroy(actor);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
actor.move_anchor_point_from_gravity(Clutter.Gravity.CENTER);
|
||||||
|
|
||||||
|
/* anachronistic 'tv-like' effect - squash on y axis, leave x alone */
|
||||||
|
this._destroying.push(actor);
|
||||||
|
Tweener.addTween(actor,
|
||||||
|
{ scale_x: 1.0,
|
||||||
|
scale_y: 0.0,
|
||||||
|
time: WINDOW_ANIMATION_TIME,
|
||||||
|
transition: "easeOutQuad",
|
||||||
|
onComplete: this._destroyWindowDone,
|
||||||
|
onCompleteScope: this,
|
||||||
|
onCompleteParams: [actor]
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
_destroyWindowDone : function(actor) {
|
||||||
|
let idx = this._destroying.indexOf(actor);
|
||||||
|
if (idx != -1) {
|
||||||
|
this._shellwm.completed_destroy(actor);
|
||||||
|
Tweener.removeTweens(actor);
|
||||||
|
actor.set_scale(1.0, 1.0);
|
||||||
|
|
||||||
|
this._mapping.splice(idx, 1);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
_switchWorkspace : function(windows, from, to, direction) {
|
||||||
// If the overlay is active, it will do the transition itself
|
// If the overlay is active, it will do the transition itself
|
||||||
if (Main.overlayActive) {
|
if (Main.overlayActive) {
|
||||||
this._shellwm.completed_switch_workspace();
|
this._shellwm.completed_switch_workspace();
|
||||||
@ -96,7 +296,7 @@ WindowManager.prototype = {
|
|||||||
y: yDest,
|
y: yDest,
|
||||||
time: SWITCH_ANIMATION_TIME,
|
time: SWITCH_ANIMATION_TIME,
|
||||||
transition: "easeOutBack",
|
transition: "easeOutBack",
|
||||||
onComplete: this.switchWorkspaceDone
|
onComplete: this._switchWorkspaceDone
|
||||||
});
|
});
|
||||||
Tweener.addTween(switchData.inGroup,
|
Tweener.addTween(switchData.inGroup,
|
||||||
{ x: 0,
|
{ x: 0,
|
||||||
@ -106,7 +306,7 @@ WindowManager.prototype = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
switchWorkspaceDone : function() {
|
_switchWorkspaceDone : function() {
|
||||||
let switchData = this._switchData;
|
let switchData = this._switchData;
|
||||||
if (!switchData)
|
if (!switchData)
|
||||||
return;
|
return;
|
||||||
|
@ -46,7 +46,6 @@ static void gnome_shell_plugin_constructed (GObject *object);
|
|||||||
static void gnome_shell_plugin_dispose (GObject *object);
|
static void gnome_shell_plugin_dispose (GObject *object);
|
||||||
static void gnome_shell_plugin_finalize (GObject *object);
|
static void gnome_shell_plugin_finalize (GObject *object);
|
||||||
|
|
||||||
#ifdef NOT_YET
|
|
||||||
static void gnome_shell_plugin_minimize (MutterPlugin *plugin,
|
static void gnome_shell_plugin_minimize (MutterPlugin *plugin,
|
||||||
MutterWindow *actor);
|
MutterWindow *actor);
|
||||||
static void gnome_shell_plugin_maximize (MutterPlugin *plugin,
|
static void gnome_shell_plugin_maximize (MutterPlugin *plugin,
|
||||||
@ -65,7 +64,6 @@ static void gnome_shell_plugin_map (MutterPlugin *plugi
|
|||||||
MutterWindow *actor);
|
MutterWindow *actor);
|
||||||
static void gnome_shell_plugin_destroy (MutterPlugin *plugin,
|
static void gnome_shell_plugin_destroy (MutterPlugin *plugin,
|
||||||
MutterWindow *actor);
|
MutterWindow *actor);
|
||||||
#endif
|
|
||||||
|
|
||||||
static void gnome_shell_plugin_switch_workspace (MutterPlugin *plugin,
|
static void gnome_shell_plugin_switch_workspace (MutterPlugin *plugin,
|
||||||
const GList **actors,
|
const GList **actors,
|
||||||
@ -121,13 +119,11 @@ gnome_shell_plugin_class_init (GnomeShellPluginClass *klass)
|
|||||||
gobject_class->dispose = gnome_shell_plugin_dispose;
|
gobject_class->dispose = gnome_shell_plugin_dispose;
|
||||||
gobject_class->finalize = gnome_shell_plugin_finalize;
|
gobject_class->finalize = gnome_shell_plugin_finalize;
|
||||||
|
|
||||||
#ifdef NOT_YET
|
|
||||||
plugin_class->map = gnome_shell_plugin_map;
|
plugin_class->map = gnome_shell_plugin_map;
|
||||||
plugin_class->minimize = gnome_shell_plugin_minimize;
|
plugin_class->minimize = gnome_shell_plugin_minimize;
|
||||||
plugin_class->maximize = gnome_shell_plugin_maximize;
|
plugin_class->maximize = gnome_shell_plugin_maximize;
|
||||||
plugin_class->unmaximize = gnome_shell_plugin_unmaximize;
|
plugin_class->unmaximize = gnome_shell_plugin_unmaximize;
|
||||||
plugin_class->destroy = gnome_shell_plugin_destroy;
|
plugin_class->destroy = gnome_shell_plugin_destroy;
|
||||||
#endif
|
|
||||||
|
|
||||||
plugin_class->switch_workspace = gnome_shell_plugin_switch_workspace;
|
plugin_class->switch_workspace = gnome_shell_plugin_switch_workspace;
|
||||||
plugin_class->kill_effect = gnome_shell_plugin_kill_effect;
|
plugin_class->kill_effect = gnome_shell_plugin_kill_effect;
|
||||||
@ -212,6 +208,55 @@ get_shell_wm (void)
|
|||||||
return wm;
|
return wm;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gnome_shell_plugin_minimize (MutterPlugin *plugin,
|
||||||
|
MutterWindow *actor)
|
||||||
|
{
|
||||||
|
_shell_wm_minimize (get_shell_wm (),
|
||||||
|
actor);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gnome_shell_plugin_maximize (MutterPlugin *plugin,
|
||||||
|
MutterWindow *actor,
|
||||||
|
gint x,
|
||||||
|
gint y,
|
||||||
|
gint width,
|
||||||
|
gint height)
|
||||||
|
{
|
||||||
|
_shell_wm_maximize (get_shell_wm (),
|
||||||
|
actor, x, y, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gnome_shell_plugin_unmaximize (MutterPlugin *plugin,
|
||||||
|
MutterWindow *actor,
|
||||||
|
gint x,
|
||||||
|
gint y,
|
||||||
|
gint width,
|
||||||
|
gint height)
|
||||||
|
{
|
||||||
|
_shell_wm_unmaximize (get_shell_wm (),
|
||||||
|
actor, x, y, width, height);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gnome_shell_plugin_map (MutterPlugin *plugin,
|
||||||
|
MutterWindow *actor)
|
||||||
|
{
|
||||||
|
_shell_wm_map (get_shell_wm (),
|
||||||
|
actor);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gnome_shell_plugin_destroy (MutterPlugin *plugin,
|
||||||
|
MutterWindow *actor)
|
||||||
|
{
|
||||||
|
_shell_wm_destroy (get_shell_wm (),
|
||||||
|
actor);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gnome_shell_plugin_switch_workspace (MutterPlugin *plugin,
|
gnome_shell_plugin_switch_workspace (MutterPlugin *plugin,
|
||||||
const GList **actors,
|
const GList **actors,
|
||||||
|
@ -1 +1,2 @@
|
|||||||
VOID:INT,INT,INT
|
VOID:INT,INT,INT
|
||||||
|
VOID:OBJECT,INT,INT,INT,INT
|
||||||
|
226
src/shell-wm.c
226
src/shell-wm.c
@ -14,7 +14,6 @@ struct _ShellWM {
|
|||||||
/* Signals */
|
/* Signals */
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
#ifdef NOT_YET
|
|
||||||
MINIMIZE,
|
MINIMIZE,
|
||||||
KILL_MINIMIZE,
|
KILL_MINIMIZE,
|
||||||
MAXIMIZE,
|
MAXIMIZE,
|
||||||
@ -25,7 +24,6 @@ enum
|
|||||||
KILL_MAP,
|
KILL_MAP,
|
||||||
DESTROY,
|
DESTROY,
|
||||||
KILL_DESTROY,
|
KILL_DESTROY,
|
||||||
#endif
|
|
||||||
SWITCH_WORKSPACE,
|
SWITCH_WORKSPACE,
|
||||||
KILL_SWITCH_WORKSPACE,
|
KILL_SWITCH_WORKSPACE,
|
||||||
|
|
||||||
@ -61,6 +59,96 @@ shell_wm_class_init (ShellWMClass *klass)
|
|||||||
|
|
||||||
gobject_class->finalize = shell_wm_finalize;
|
gobject_class->finalize = shell_wm_finalize;
|
||||||
|
|
||||||
|
shell_wm_signals[MINIMIZE] =
|
||||||
|
g_signal_new ("minimize",
|
||||||
|
G_TYPE_FROM_CLASS (klass),
|
||||||
|
G_SIGNAL_RUN_LAST,
|
||||||
|
0,
|
||||||
|
NULL, NULL,
|
||||||
|
g_cclosure_marshal_VOID__OBJECT,
|
||||||
|
G_TYPE_NONE, 1,
|
||||||
|
MUTTER_TYPE_COMP_WINDOW);
|
||||||
|
shell_wm_signals[KILL_MINIMIZE] =
|
||||||
|
g_signal_new ("kill-minimize",
|
||||||
|
G_TYPE_FROM_CLASS (klass),
|
||||||
|
G_SIGNAL_RUN_LAST,
|
||||||
|
0,
|
||||||
|
NULL, NULL,
|
||||||
|
g_cclosure_marshal_VOID__OBJECT,
|
||||||
|
G_TYPE_NONE, 1,
|
||||||
|
MUTTER_TYPE_COMP_WINDOW);
|
||||||
|
shell_wm_signals[MAXIMIZE] =
|
||||||
|
g_signal_new ("maximize",
|
||||||
|
G_TYPE_FROM_CLASS (klass),
|
||||||
|
G_SIGNAL_RUN_LAST,
|
||||||
|
0,
|
||||||
|
NULL, NULL,
|
||||||
|
_shell_marshal_VOID__OBJECT_INT_INT_INT_INT,
|
||||||
|
G_TYPE_NONE, 5,
|
||||||
|
MUTTER_TYPE_COMP_WINDOW, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT);
|
||||||
|
shell_wm_signals[KILL_MAXIMIZE] =
|
||||||
|
g_signal_new ("kill-maximize",
|
||||||
|
G_TYPE_FROM_CLASS (klass),
|
||||||
|
G_SIGNAL_RUN_LAST,
|
||||||
|
0,
|
||||||
|
NULL, NULL,
|
||||||
|
g_cclosure_marshal_VOID__OBJECT,
|
||||||
|
G_TYPE_NONE, 1,
|
||||||
|
MUTTER_TYPE_COMP_WINDOW);
|
||||||
|
shell_wm_signals[UNMAXIMIZE] =
|
||||||
|
g_signal_new ("unmaximize",
|
||||||
|
G_TYPE_FROM_CLASS (klass),
|
||||||
|
G_SIGNAL_RUN_LAST,
|
||||||
|
0,
|
||||||
|
NULL, NULL,
|
||||||
|
_shell_marshal_VOID__OBJECT_INT_INT_INT_INT,
|
||||||
|
G_TYPE_NONE, 1,
|
||||||
|
MUTTER_TYPE_COMP_WINDOW, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT);
|
||||||
|
shell_wm_signals[KILL_UNMAXIMIZE] =
|
||||||
|
g_signal_new ("kill-unmaximize",
|
||||||
|
G_TYPE_FROM_CLASS (klass),
|
||||||
|
G_SIGNAL_RUN_LAST,
|
||||||
|
0,
|
||||||
|
NULL, NULL,
|
||||||
|
g_cclosure_marshal_VOID__OBJECT,
|
||||||
|
G_TYPE_NONE, 1,
|
||||||
|
MUTTER_TYPE_COMP_WINDOW);
|
||||||
|
shell_wm_signals[MAP] =
|
||||||
|
g_signal_new ("map",
|
||||||
|
G_TYPE_FROM_CLASS (klass),
|
||||||
|
G_SIGNAL_RUN_LAST,
|
||||||
|
0,
|
||||||
|
NULL, NULL,
|
||||||
|
g_cclosure_marshal_VOID__OBJECT,
|
||||||
|
G_TYPE_NONE, 1,
|
||||||
|
MUTTER_TYPE_COMP_WINDOW);
|
||||||
|
shell_wm_signals[KILL_MAP] =
|
||||||
|
g_signal_new ("kill-map",
|
||||||
|
G_TYPE_FROM_CLASS (klass),
|
||||||
|
G_SIGNAL_RUN_LAST,
|
||||||
|
0,
|
||||||
|
NULL, NULL,
|
||||||
|
g_cclosure_marshal_VOID__OBJECT,
|
||||||
|
G_TYPE_NONE, 1,
|
||||||
|
MUTTER_TYPE_COMP_WINDOW);
|
||||||
|
shell_wm_signals[DESTROY] =
|
||||||
|
g_signal_new ("destroy",
|
||||||
|
G_TYPE_FROM_CLASS (klass),
|
||||||
|
G_SIGNAL_RUN_LAST,
|
||||||
|
0,
|
||||||
|
NULL, NULL,
|
||||||
|
g_cclosure_marshal_VOID__OBJECT,
|
||||||
|
G_TYPE_NONE, 1,
|
||||||
|
MUTTER_TYPE_COMP_WINDOW);
|
||||||
|
shell_wm_signals[KILL_DESTROY] =
|
||||||
|
g_signal_new ("kill-destroy",
|
||||||
|
G_TYPE_FROM_CLASS (klass),
|
||||||
|
G_SIGNAL_RUN_LAST,
|
||||||
|
0,
|
||||||
|
NULL, NULL,
|
||||||
|
g_cclosure_marshal_VOID__OBJECT,
|
||||||
|
G_TYPE_NONE, 1,
|
||||||
|
MUTTER_TYPE_COMP_WINDOW);
|
||||||
shell_wm_signals[SWITCH_WORKSPACE] =
|
shell_wm_signals[SWITCH_WORKSPACE] =
|
||||||
g_signal_new ("switch-workspace",
|
g_signal_new ("switch-workspace",
|
||||||
G_TYPE_FROM_CLASS (klass),
|
G_TYPE_FROM_CLASS (klass),
|
||||||
@ -148,29 +236,149 @@ shell_wm_completed_switch_workspace (ShellWM *wm)
|
|||||||
shell_wm_set_switch_workspace_actors (wm, NULL);
|
shell_wm_set_switch_workspace_actors (wm, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* shell_wm_completed_minimize
|
||||||
|
* @wm: the ShellWM
|
||||||
|
* @actor: the MutterWindow actor
|
||||||
|
*
|
||||||
|
* The plugin must call this when it has completed a window minimize effect.
|
||||||
|
**/
|
||||||
|
void
|
||||||
|
shell_wm_completed_minimize (ShellWM *wm,
|
||||||
|
MutterWindow *actor)
|
||||||
|
{
|
||||||
|
mutter_plugin_effect_completed (wm->plugin,
|
||||||
|
actor,
|
||||||
|
MUTTER_PLUGIN_MINIMIZE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* shell_wm_completed_maximize
|
||||||
|
* @wm: the ShellWM
|
||||||
|
* @actor: the MutterWindow actor
|
||||||
|
*
|
||||||
|
* The plugin must call this when it has completed a window maximize effect.
|
||||||
|
**/
|
||||||
|
void
|
||||||
|
shell_wm_completed_maximize (ShellWM *wm,
|
||||||
|
MutterWindow *actor)
|
||||||
|
{
|
||||||
|
mutter_plugin_effect_completed (wm->plugin,
|
||||||
|
actor,
|
||||||
|
MUTTER_PLUGIN_MAXIMIZE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* shell_wm_completed_unmaximize
|
||||||
|
* @wm: the ShellWM
|
||||||
|
* @actor: the MutterWindow actor
|
||||||
|
*
|
||||||
|
* The plugin must call this when it has completed a window unmaximize effect.
|
||||||
|
**/
|
||||||
|
void
|
||||||
|
shell_wm_completed_unmaximize (ShellWM *wm,
|
||||||
|
MutterWindow *actor)
|
||||||
|
{
|
||||||
|
mutter_plugin_effect_completed (wm->plugin,
|
||||||
|
actor,
|
||||||
|
MUTTER_PLUGIN_UNMAXIMIZE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* shell_wm_completed_map
|
||||||
|
* @wm: the ShellWM
|
||||||
|
* @actor: the MutterWindow actor
|
||||||
|
*
|
||||||
|
* The plugin must call this when it has completed a window map effect.
|
||||||
|
**/
|
||||||
|
void
|
||||||
|
shell_wm_completed_map (ShellWM *wm,
|
||||||
|
MutterWindow *actor)
|
||||||
|
{
|
||||||
|
mutter_plugin_effect_completed (wm->plugin,
|
||||||
|
actor,
|
||||||
|
MUTTER_PLUGIN_MAP);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* shell_wm_completed_destroy
|
||||||
|
* @wm: the ShellWM
|
||||||
|
* @actor: the MutterWindow actor
|
||||||
|
*
|
||||||
|
* The plugin must call this when it has completed a window destroy effect.
|
||||||
|
**/
|
||||||
|
void
|
||||||
|
shell_wm_completed_destroy (ShellWM *wm,
|
||||||
|
MutterWindow *actor)
|
||||||
|
{
|
||||||
|
mutter_plugin_effect_completed (wm->plugin,
|
||||||
|
actor,
|
||||||
|
MUTTER_PLUGIN_DESTROY);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_shell_wm_kill_effect (ShellWM *wm,
|
_shell_wm_kill_effect (ShellWM *wm,
|
||||||
MutterWindow *actor,
|
MutterWindow *actor,
|
||||||
gulong events)
|
gulong events)
|
||||||
{
|
{
|
||||||
#ifdef NOT_YET
|
|
||||||
if (events & MUTTER_PLUGIN_MINIMIZE)
|
if (events & MUTTER_PLUGIN_MINIMIZE)
|
||||||
g_signal_emit (wm, shell_wm_signals[KILL_MINIMIZE], 0);
|
g_signal_emit (wm, shell_wm_signals[KILL_MINIMIZE], 0, actor);
|
||||||
if (events & MUTTER_PLUGIN_MAXIMIZE)
|
if (events & MUTTER_PLUGIN_MAXIMIZE)
|
||||||
g_signal_emit (wm, shell_wm_signals[KILL_MAXIMIZE], 0);
|
g_signal_emit (wm, shell_wm_signals[KILL_MAXIMIZE], 0, actor);
|
||||||
if (events & MUTTER_PLUGIN_UNMAXIMIZE)
|
if (events & MUTTER_PLUGIN_UNMAXIMIZE)
|
||||||
g_signal_emit (wm, shell_wm_signals[KILL_UNMAXIMIZE], 0);
|
g_signal_emit (wm, shell_wm_signals[KILL_UNMAXIMIZE], 0, actor);
|
||||||
if (events & MUTTER_PLUGIN_MAP)
|
if (events & MUTTER_PLUGIN_MAP)
|
||||||
g_signal_emit (wm, shell_wm_signals[KILL_MAP], 0);
|
g_signal_emit (wm, shell_wm_signals[KILL_MAP], 0, actor);
|
||||||
if (events & MUTTER_PLUGIN_DESTROY)
|
if (events & MUTTER_PLUGIN_DESTROY)
|
||||||
g_signal_emit (wm, shell_wm_signals[KILL_DESTROY], 0);
|
g_signal_emit (wm, shell_wm_signals[KILL_DESTROY], 0, actor);
|
||||||
#endif
|
|
||||||
if (events & MUTTER_PLUGIN_SWITCH_WORKSPACE)
|
if (events & MUTTER_PLUGIN_SWITCH_WORKSPACE)
|
||||||
g_signal_emit (wm, shell_wm_signals[KILL_SWITCH_WORKSPACE], 0);
|
g_signal_emit (wm, shell_wm_signals[KILL_SWITCH_WORKSPACE], 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
_shell_wm_minimize (ShellWM *wm,
|
||||||
|
MutterWindow *actor)
|
||||||
|
{
|
||||||
|
g_signal_emit (wm, shell_wm_signals[MINIMIZE], 0, actor);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
_shell_wm_maximize (ShellWM *wm,
|
||||||
|
MutterWindow *actor,
|
||||||
|
int target_x,
|
||||||
|
int target_y,
|
||||||
|
int target_width,
|
||||||
|
int target_height)
|
||||||
|
{
|
||||||
|
g_signal_emit (wm, shell_wm_signals[MAXIMIZE], 0, actor, target_x, target_y, target_width, target_height);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
_shell_wm_unmaximize (ShellWM *wm,
|
||||||
|
MutterWindow *actor,
|
||||||
|
int target_x,
|
||||||
|
int target_y,
|
||||||
|
int target_width,
|
||||||
|
int target_height)
|
||||||
|
{
|
||||||
|
g_signal_emit (wm, shell_wm_signals[UNMAXIMIZE], 0, actor, target_x, target_y, target_width, target_height);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
_shell_wm_map (ShellWM *wm,
|
||||||
|
MutterWindow *actor)
|
||||||
|
{
|
||||||
|
g_signal_emit (wm, shell_wm_signals[MAP], 0, actor);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
_shell_wm_destroy (ShellWM *wm,
|
||||||
|
MutterWindow *actor)
|
||||||
|
{
|
||||||
|
g_signal_emit (wm, shell_wm_signals[DESTROY], 0, actor);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* shell_wm_new:
|
* shell_wm_new:
|
||||||
* @plugin: the #MutterPlugin
|
* @plugin: the #MutterPlugin
|
||||||
|
@ -27,12 +27,22 @@ GType shell_wm_get_type (void) G_GNUC_CONST;
|
|||||||
ShellWM *shell_wm_new (MutterPlugin *plugin);
|
ShellWM *shell_wm_new (MutterPlugin *plugin);
|
||||||
|
|
||||||
GList *shell_wm_get_switch_workspace_actors (ShellWM *wm);
|
GList *shell_wm_get_switch_workspace_actors (ShellWM *wm);
|
||||||
|
|
||||||
|
void shell_wm_completed_minimize (ShellWM *wm,
|
||||||
|
MutterWindow *actor);
|
||||||
|
void shell_wm_completed_maximize (ShellWM *wm,
|
||||||
|
MutterWindow *actor);
|
||||||
|
void shell_wm_completed_unmaximize (ShellWM *wm,
|
||||||
|
MutterWindow *actor);
|
||||||
|
void shell_wm_completed_map (ShellWM *wm,
|
||||||
|
MutterWindow *actor);
|
||||||
|
void shell_wm_completed_destroy (ShellWM *wm,
|
||||||
|
MutterWindow *actor);
|
||||||
void shell_wm_completed_switch_workspace (ShellWM *wm);
|
void shell_wm_completed_switch_workspace (ShellWM *wm);
|
||||||
|
|
||||||
|
|
||||||
/* These forward along the different effects from GnomeShellPlugin */
|
/* These forward along the different effects from GnomeShellPlugin */
|
||||||
|
|
||||||
#ifdef NOT_YET
|
|
||||||
void _shell_wm_minimize (ShellWM *wm,
|
void _shell_wm_minimize (ShellWM *wm,
|
||||||
MutterWindow *actor);
|
MutterWindow *actor);
|
||||||
void _shell_wm_maximize (ShellWM *wm,
|
void _shell_wm_maximize (ShellWM *wm,
|
||||||
@ -51,7 +61,6 @@ void _shell_wm_map (ShellWM *wm,
|
|||||||
MutterWindow *actor);
|
MutterWindow *actor);
|
||||||
void _shell_wm_destroy (ShellWM *wm,
|
void _shell_wm_destroy (ShellWM *wm,
|
||||||
MutterWindow *actor);
|
MutterWindow *actor);
|
||||||
#endif
|
|
||||||
|
|
||||||
void _shell_wm_switch_workspace (ShellWM *wm,
|
void _shell_wm_switch_workspace (ShellWM *wm,
|
||||||
const GList **actors,
|
const GList **actors,
|
||||||
|
Loading…
Reference in New Issue
Block a user