modalDialog: fade in buttons when first showing them
Right now, if buttons get set on a dialog after it is mapped, they just pop in instantly. We shouldn't have any harsh transitions like that, though. This commit changes the buttons to quickly fade in, instead. https://bugzilla.gnome.org/show_bug.cgi?id=657082
This commit is contained in:
parent
13bf64a53d
commit
e8914c6699
@ -18,6 +18,7 @@ const Main = imports.ui.main;
|
|||||||
const Tweener = imports.ui.tweener;
|
const Tweener = imports.ui.tweener;
|
||||||
|
|
||||||
const OPEN_AND_CLOSE_TIME = 0.1;
|
const OPEN_AND_CLOSE_TIME = 0.1;
|
||||||
|
const FADE_IN_BUTTONS_TIME = 0.33;
|
||||||
const FADE_OUT_DIALOG_TIME = 1.0;
|
const FADE_OUT_DIALOG_TIME = 1.0;
|
||||||
|
|
||||||
const State = {
|
const State = {
|
||||||
@ -98,6 +99,8 @@ ModalDialog.prototype = {
|
|||||||
},
|
},
|
||||||
|
|
||||||
setButtons: function(buttons) {
|
setButtons: function(buttons) {
|
||||||
|
let hadChildren = this._buttonLayout.get_children() > 0;
|
||||||
|
|
||||||
this._buttonLayout.destroy_children();
|
this._buttonLayout.destroy_children();
|
||||||
this._actionKeys = {};
|
this._actionKeys = {};
|
||||||
|
|
||||||
@ -137,6 +140,22 @@ ModalDialog.prototype = {
|
|||||||
this._actionKeys[key] = action;
|
this._actionKeys[key] = action;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Fade in buttons if there weren't any before
|
||||||
|
if (!hadChildren && i > 0) {
|
||||||
|
this._buttonLayout.opacity = 0;
|
||||||
|
Tweener.addTween(this._buttonLayout,
|
||||||
|
{ opacity: 255,
|
||||||
|
time: FADE_IN_BUTTONS_TIME,
|
||||||
|
transition: 'easeOutQuad',
|
||||||
|
onComplete: Lang.bind(this, function() {
|
||||||
|
this.emit('buttons-set');
|
||||||
|
})
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
this.emit('buttons-set');
|
||||||
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
_onKeyPressEvent: function(object, keyPressEvent) {
|
_onKeyPressEvent: function(object, keyPressEvent) {
|
||||||
|
Loading…
Reference in New Issue
Block a user