extensions-app: Explicitly dispose window when removed

Unlike in previous GTK version (or Clutter), destroy() no longer
breaks reference cycles but just releases the reference held by
GTK itself.

So any reference we hold - either the explicit property or any signal
handlers that bind the window as `this` - prevents the window from
being disposed when closed, and the application won't quit.

Work around this by explicitly running dispose() on the window when
it is removed from the application.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1495>
This commit is contained in:
Florian Müllner 2020-11-18 02:16:26 +01:00 committed by Marge Bot
parent 3af90918a3
commit 1bb0e1b9fc

View File

@ -42,6 +42,8 @@ class Application extends Gtk.Application {
_init() { _init() {
GLib.set_prgname('gnome-extensions-app'); GLib.set_prgname('gnome-extensions-app');
super._init({ application_id: 'org.gnome.Extensions' }); super._init({ application_id: 'org.gnome.Extensions' });
this.connect('window-removed', (a, window) => window.run_dispose());
} }
get shellProxy() { get shellProxy() {