[gnome-shell] modalDialog: Destroy dialogs on close
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] modalDialog: Destroy dialogs on close
- Date: Fri, 5 Apr 2013 03:15:24 +0000 (UTC)
commit 3dd6113a0a694d1deb444bafd16996a292772abb
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Thu Apr 4 14:47:38 2013 -0400
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
js/ui/endSessionDialog.js | 3 ++-
js/ui/modalDialog.js | 7 ++++++-
2 files changed, 8 insertions(+), 2 deletions(-)
---
diff --git a/js/ui/endSessionDialog.js b/js/ui/endSessionDialog.js
index b7850a4..d322581 100644
--- a/js/ui/endSessionDialog.js
+++ b/js/ui/endSessionDialog.js
@@ -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());
diff --git a/js/ui/modalDialog.js b/js/ui/modalDialog.js
index 304733e..beac7fe 100644
--- a/js/ui/modalDialog.js
+++ b/js/ui/modalDialog.js
@@ -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();
})
});
},
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]