[gnome-shell/workspace-thumbnails: 14/14] Handle changes in window position for workspace thumbnails
- From: Owen Taylor <otaylor src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/workspace-thumbnails: 14/14] Handle changes in window position for workspace thumbnails
- Date: Thu, 3 Feb 2011 04:51:09 +0000 (UTC)
commit 87ce301faaeaf04ba254a6a2a3026b3135118fac
Author: Owen W. Taylor <otaylor fishsoup net>
Date: Wed Feb 2 22:54:33 2011 -0500
Handle changes in window position for workspace thumbnails
Connect to the 'position-set' signal of MetaWindowActor and move
actors when the source windows move.
js/ui/workspaceThumbnail.js | 22 +++++++++++++++++-----
1 files changed, 17 insertions(+), 5 deletions(-)
---
diff --git a/js/ui/workspaceThumbnail.js b/js/ui/workspaceThumbnail.js
index 3d21d2c..47460fa 100644
--- a/js/ui/workspaceThumbnail.js
+++ b/js/ui/workspaceThumbnail.js
@@ -22,14 +22,16 @@ WindowClone.prototype = {
_init : function(realWindow) {
this.actor = new Clutter.Clone({ source: realWindow.get_texture(),
clip_to_allocation: true,
- reactive: true,
- x: realWindow.x,
- y: realWindow.y });
+ reactive: true });
this.actor._delegate = this;
this.realWindow = realWindow;
this.metaWindow = realWindow.meta_window;
this.metaWindow._delegate = this;
+ this._positionChangedId = this.realWindow.connect('position-changed',
+ Lang.bind(this, this._onPositionChanged));
+ this._onPositionChanged();
+
this.actor.connect('button-release-event',
Lang.bind(this, this._onButtonRelease));
@@ -58,10 +60,20 @@ WindowClone.prototype = {
this.actor.destroy();
},
+ _onPositionChanged: function() {
+ let rect = this.metaWindow.get_outer_rect();
+ this.actor.set_position(this.realWindow.x, this.realWindow.y);
+ },
+
_onDestroy: function() {
this.metaWindow._delegate = null;
this.actor._delegate = null;
+ if (this._positionChangedId != 0) {
+ this.realWindow.disconnect(this._positionChangedId);
+ this._positionChangedId = 0;
+ }
+
if (this.inDrag) {
this.emit('drag-end');
this.inDrag = false;
@@ -286,8 +298,8 @@ WorkspaceThumbnail.prototype = {
time);
return true;
} else if (source.shellWorkspaceLaunch) {
- this.metaWorkspace.activate(time);
- source.shellWorkspaceLaunch();
+ source.shellWorkspaceLaunch({ workspace: this.metaWorkspace,
+ timestamp: time });
return true;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]