[gnome-shell] main, lightbox: Fix lightbox for zoomed windows
- From: Stefano Facchini <sfacchini src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] main, lightbox: Fix lightbox for zoomed windows
- Date: Wed, 15 Feb 2012 17:19:31 +0000 (UTC)
commit 0c2037875a9368134ae3c7b7b97e67033b8801d1
Author: Stefano Facchini <stefano facchini gmail com>
Date: Wed Feb 15 16:16:23 2012 +0100
main, lightbox: Fix lightbox for zoomed windows
The correct way to make an actor having the same size as another is
a ClutterBindConstraint. Connecting to 'allocation-changed' fails because
the allocation might not change even when 'width' and 'height' properties do.
This is the case of Main.uiGroup, used as parent container for zoomed
window clones.
In lightbox.js we bind also the position because in principle it could change,
even if currently only fullscreen lightboxes are used.
js/ui/lightbox.js | 20 ++++----------------
js/ui/main.js | 3 +++
2 files changed, 7 insertions(+), 16 deletions(-)
---
diff --git a/js/ui/lightbox.js b/js/ui/lightbox.js
index f8c8462..aa15160 100644
--- a/js/ui/lightbox.js
+++ b/js/ui/lightbox.js
@@ -1,5 +1,6 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+const Clutter = imports.gi.Clutter;
const Lang = imports.lang;
const Meta = imports.gi.Meta;
const St = imports.gi.St;
@@ -57,11 +58,10 @@ const Lightbox = new Lang.Class({
if (params.width && params.height) {
this.actor.width = params.width;
this.actor.height = params.height;
- this._allocationChangedSignalId = 0;
} else {
- this.actor.width = container.width;
- this.actor.height = container.height;
- this._allocationChangedSignalId = container.connect('allocation-changed', Lang.bind(this, this._allocationChanged));
+ let constraint = new Clutter.BindConstraint({ source: container,
+ coordinate: Clutter.BindCoordinate.ALL });
+ this.actor.add_constraint(constraint);
}
this._actorAddedSignalId = container.connect('actor-added', Lang.bind(this, this._actorAdded));
@@ -70,16 +70,6 @@ const Lightbox = new Lang.Class({
this._highlighted = null;
},
- _allocationChanged : function(container, box, flags) {
- Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this, function() {
- this.actor.width = this.width;
- this.actor.height = this.height;
- return false;
- }));
- this.width = this._container.width;
- this.height = this._container.height;
- },
-
_actorAdded : function(container, newChild) {
let children = this._container.get_children();
let myIndex = children.indexOf(this.actor);
@@ -187,8 +177,6 @@ const Lightbox = new Lang.Class({
* by destroying its container or by explicitly calling this.destroy().
*/
_onDestroy: function() {
- if (this._allocationChangedSignalId != 0)
- this._container.disconnect(this._allocationChangedSignalId);
this._container.disconnect(this._actorAddedSignalId);
this._container.disconnect(this._actorRemovedSignalId);
diff --git a/js/ui/main.js b/js/ui/main.js
index 6b7218b..6d8f4ac 100644
--- a/js/ui/main.js
+++ b/js/ui/main.js
@@ -187,6 +187,9 @@ function start() {
for (let i = 0; i < children.length; i++)
children[i].allocate_preferred_size(flags);
});
+ let constraint = new Clutter.BindConstraint({ source: global.stage,
+ coordinate: Clutter.BindCoordinate.SIZE });
+ uiGroup.add_constraint(constraint);
St.set_ui_root(global.stage, uiGroup);
global.window_group.reparent(uiGroup);
global.overlay_group.reparent(uiGroup);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]