calendar: Use AlignConstraint to center the popup
This fixes warnings like: (mutter:12238): Clutter-WARNING **: The actor 'calendarPopup' is currently inside an allocation cycle; calling clutter_actor_queue_relayout() is not recommended https://bugzilla.gnome.org/show_bug.cgi?id=637829
This commit is contained in:
parent
24f1e87813
commit
dd0f721694
@ -977,6 +977,9 @@ function CalendarPopup() {
|
|||||||
CalendarPopup.prototype = {
|
CalendarPopup.prototype = {
|
||||||
_init: function() {
|
_init: function() {
|
||||||
let panelActor = Main.panel.actor;
|
let panelActor = Main.panel.actor;
|
||||||
|
let alignConstraint = new Clutter.AlignConstraint({ source: panelActor,
|
||||||
|
align_axis: Clutter.AlignAxis.X_AXIS,
|
||||||
|
factor: 0.5 });
|
||||||
|
|
||||||
this.actor = new St.Bin({ name: 'calendarPopup' });
|
this.actor = new St.Bin({ name: 'calendarPopup' });
|
||||||
|
|
||||||
@ -988,7 +991,7 @@ CalendarPopup.prototype = {
|
|||||||
Main.chrome.addActor(this.actor, { visibleInOverview: true,
|
Main.chrome.addActor(this.actor, { visibleInOverview: true,
|
||||||
affectsStruts: false });
|
affectsStruts: false });
|
||||||
this.actor.y = (panelActor.y + panelActor.height - this.actor.height);
|
this.actor.y = (panelActor.y + panelActor.height - this.actor.height);
|
||||||
this.calendar.actor.connect('notify::width', Lang.bind(this, this._centerPopup));
|
this.actor.add_constraint(alignConstraint);
|
||||||
},
|
},
|
||||||
|
|
||||||
show: function() {
|
show: function() {
|
||||||
@ -1001,7 +1004,6 @@ CalendarPopup.prototype = {
|
|||||||
// Reset the calendar to today's date
|
// Reset the calendar to today's date
|
||||||
this.calendar.setDate(new Date());
|
this.calendar.setDate(new Date());
|
||||||
|
|
||||||
this._centerPopup();
|
|
||||||
this.actor.lower(panelActor);
|
this.actor.lower(panelActor);
|
||||||
this.actor.show();
|
this.actor.show();
|
||||||
Tweener.addTween(this.actor,
|
Tweener.addTween(this.actor,
|
||||||
@ -1025,10 +1027,5 @@ CalendarPopup.prototype = {
|
|||||||
onComplete: function() { this.actor.hide(); },
|
onComplete: function() { this.actor.hide(); },
|
||||||
onCompleteScope: this
|
onCompleteScope: this
|
||||||
});
|
});
|
||||||
},
|
|
||||||
|
|
||||||
_centerPopup: function() {
|
|
||||||
let panelActor = Main.panel.actor;
|
|
||||||
this.actor.x = Math.round(panelActor.x + (panelActor.width - this.actor.width) / 2);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user