[gnome-shell] Reorganize stage in terms of a UI Group actor and everything else
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] Reorganize stage in terms of a UI Group actor and everything else
- Date: Thu, 6 May 2010 21:18:46 +0000 (UTC)
commit 62afd2ffa3c6f924740c2ad4d75c4fb276144351
Author: Joseph Scheuhammer <clown utoronto ca>
Date: Thu May 6 17:18:10 2010 -0400
Reorganize stage in terms of a UI Group actor and everything else
In preparation for adding magnification, "uiGroup.patch", organizes the stage
along the following lines:
Stage
*Magnifier
UI group
Window group
Chrome group
Overlay group
Alt tab
App display
Chrome
...
This allows a magnifier actor to clone and magnify the UI group. The magnifier
is a sibling of the UI Group in this stage oraganization -- see the next patch,
"Magnifier.patch".
js/ui/altTab.js | 2 +-
js/ui/appDisplay.js | 2 +-
js/ui/chrome.js | 2 +-
js/ui/dnd.js | 3 ++-
js/ui/lookingGlass.js | 4 ++--
js/ui/main.js | 7 +++++++
js/ui/panel.js | 2 +-
js/ui/runDialog.js | 2 +-
js/ui/workspaceSwitcherPopup.js | 3 ++-
9 files changed, 18 insertions(+), 9 deletions(-)
---
diff --git a/js/ui/altTab.js b/js/ui/altTab.js
index eeeedc8..dd5e75a 100644
--- a/js/ui/altTab.js
+++ b/js/ui/altTab.js
@@ -54,7 +54,7 @@ AltTabPopup.prototype = {
// the switcher appears underneath the current pointer location
this._disableHover();
- global.stage.add_actor(this.actor);
+ Main.uiGroup.add_actor(this.actor);
},
_getPreferredWidth: function (actor, forHeight, alloc) {
diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js
index 5397e18..a68feb3 100644
--- a/js/ui/appDisplay.js
+++ b/js/ui/appDisplay.js
@@ -616,7 +616,7 @@ AppIconMenu.prototype = {
}));
source.actor.connect('destroy', Lang.bind(this, function () { this.actor.destroy(); }));
- global.stage.add_actor(this.actor);
+ Main.uiGroup.add_actor(this.actor);
},
_getPreferredWidth: function(actor, forHeight, alloc) {
diff --git a/js/ui/chrome.js b/js/ui/chrome.js
index 04f7bce..e386a4e 100644
--- a/js/ui/chrome.js
+++ b/js/ui/chrome.js
@@ -35,7 +35,7 @@ Chrome.prototype = {
_init: function() {
// The group itself has zero size so it doesn't interfere with DND
this.actor = new Shell.GenericContainer({ width: 0, height: 0 });
- global.stage.add_actor(this.actor);
+ Main.uiGroup.add_actor(this.actor);
this.actor.connect('allocate', Lang.bind(this, this._allocated));
this._inFullscreen = false;
diff --git a/js/ui/dnd.js b/js/ui/dnd.js
index 2132165..4a7c3eb 100644
--- a/js/ui/dnd.js
+++ b/js/ui/dnd.js
@@ -6,6 +6,7 @@ const St = imports.gi.St;
const Lang = imports.lang;
const Signals = imports.signals;
const Tweener = imports.ui.tweener;
+const Main = imports.ui.main;
const Params = imports.misc.params;
@@ -22,7 +23,7 @@ function _getEventHandlerActor() {
eventHandlerActor = new Clutter.Rectangle();
eventHandlerActor.width = 0;
eventHandlerActor.height = 0;
- global.stage.add_actor(eventHandlerActor);
+ Main.uiGroup.add_actor(eventHandlerActor);
// We connect to 'event' rather than 'captured-event' because the capturing phase doesn't happen
// when you've grabbed the pointer.
eventHandlerActor.connect('event',
diff --git a/js/ui/lookingGlass.js b/js/ui/lookingGlass.js
index a2c4970..aed4085 100644
--- a/js/ui/lookingGlass.js
+++ b/js/ui/lookingGlass.js
@@ -257,7 +257,7 @@ Inspector.prototype = {
eventHandler.connect('notify::allocation', Lang.bind(this, function () {
eventHandler.x = primary.x + Math.floor((primary.width - eventHandler.width) / 2);
}));
- global.stage.add_actor(eventHandler);
+ Main.uiGroup.add_actor(eventHandler);
let displayText = new St.Label();
eventHandler.add(displayText, { expand: true });
@@ -471,7 +471,7 @@ LookingGlass.prototype = {
Lang.bind(this, this._updateFont));
this._updateFont();
- global.stage.add_actor(this.actor);
+ Main.uiGroup.add_actor(this.actor);
let toolbar = new St.BoxLayout({ name: "Toolbar" });
this.actor.add_actor(toolbar);
diff --git a/js/ui/main.js b/js/ui/main.js
index be92604..0b453c0 100644
--- a/js/ui/main.js
+++ b/js/ui/main.js
@@ -45,6 +45,7 @@ let recorder = null;
let shellDBusService = null;
let modalCount = 0;
let modalActorFocusStack = [];
+let uiGroup = null;
let _errorLogStack = [];
let _startDate;
@@ -105,6 +106,12 @@ function start() {
getRunDialog().open();
});
+ // Set up stage hierarchy to group all UI actors under one container.
+ uiGroup = new Clutter.Group();
+ global.window_group.reparent(uiGroup);
+ global.overlay_group.reparent(uiGroup);
+ global.stage.add_actor(uiGroup);
+
placesManager = new PlaceDisplay.PlacesManager();
overview = new Overview.Overview();
chrome = new Chrome.Chrome();
diff --git a/js/ui/panel.js b/js/ui/panel.js
index 914cacc..f002139 100644
--- a/js/ui/panel.js
+++ b/js/ui/panel.js
@@ -605,7 +605,7 @@ Panel.prototype = {
transition: 'linear',
onUpdate: function() { ripple.opacity = 255 * Math.sqrt(ripple._opacity); },
onComplete: function() { ripple.destroy(); } });
- global.stage.add_actor(ripple);
+ Main.uiGroup.add_actor(ripple);
},
_onHotCornerEntered : function() {
diff --git a/js/ui/runDialog.js b/js/ui/runDialog.js
index 1139dbc..a0a319c 100644
--- a/js/ui/runDialog.js
+++ b/js/ui/runDialog.js
@@ -213,7 +213,7 @@ RunDialog.prototype = {
// hidden then show it in show()
this._group = new Clutter.Group({ visible: false,
x: 0, y: 0 });
- global.stage.add_actor(this._group);
+ Main.uiGroup.add_actor(this._group);
let lightbox = new Lightbox.Lightbox(this._group, true);
diff --git a/js/ui/workspaceSwitcherPopup.js b/js/ui/workspaceSwitcherPopup.js
index 274c7dd..cd41d83 100644
--- a/js/ui/workspaceSwitcherPopup.js
+++ b/js/ui/workspaceSwitcherPopup.js
@@ -5,6 +5,7 @@ const Lang = imports.lang;
const Mainloop = imports.mainloop;
const Shell = imports.gi.Shell;
const St = imports.gi.St;
+const Main = imports.ui.main;
const Tweener = imports.ui.tweener;
@@ -25,7 +26,7 @@ WorkspaceSwitcherPopup.prototype = {
y: 0,
width: global.screen_width,
height: global.screen_height });
- global.stage.add_actor(this.actor);
+ Main.uiGroup.add_actor(this.actor);
this._scaleWidth = global.screen_width / global.screen_height;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]