modalDialog: Destroy dialogs on close
It turns out that we never destroyed modal dialogs when closing them, causing them to still linger in the scene graph even when there were no references to them in the JS. The one case where we don't want to destroy modal dialogs after being closed is endSessionDialog, so provide a parameter that allows classes to override this behavior. https://bugzilla.gnome.org/show_bug.cgi?id=697295
This commit is contained in:
parent
ae5cdea5af
commit
3dd6113a0a
@ -225,7 +225,8 @@ const EndSessionDialog = new Lang.Class({
|
||||
Extends: ModalDialog.ModalDialog,
|
||||
|
||||
_init: function() {
|
||||
this.parent({ styleClass: 'end-session-dialog' });
|
||||
this.parent({ styleClass: 'end-session-dialog',
|
||||
destroyOnClose: false });
|
||||
|
||||
this._user = AccountsService.UserManager.get_default().get_user(GLib.get_user_name());
|
||||
|
||||
|
@ -38,13 +38,15 @@ const ModalDialog = new Lang.Class({
|
||||
styleClass: null,
|
||||
parentActor: Main.uiGroup,
|
||||
keybindingMode: Shell.KeyBindingMode.SYSTEM_MODAL,
|
||||
shouldFadeIn: true });
|
||||
shouldFadeIn: true,
|
||||
destroyOnClose: true });
|
||||
|
||||
this.state = State.CLOSED;
|
||||
this._hasModal = false;
|
||||
this._keybindingMode = params.keybindingMode;
|
||||
this._shellReactive = params.shellReactive;
|
||||
this._shouldFadeIn = params.shouldFadeIn;
|
||||
this._destroyOnClose = params.destroyOnClose;
|
||||
|
||||
this._group = new St.Widget({ visible: false,
|
||||
x: 0,
|
||||
@ -277,6 +279,9 @@ const ModalDialog = new Lang.Class({
|
||||
this.state = State.CLOSED;
|
||||
this._group.hide();
|
||||
this.emit('closed');
|
||||
|
||||
if (this._destroyOnClose)
|
||||
this.destroy();
|
||||
})
|
||||
});
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user