From dd225713a1d8a6fb19b71220ebf82361ca5eb6f6 Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Tue, 21 Aug 2018 07:13:30 -0300 Subject: [PATCH] layoutManager: Subclass GObject.Object LayoutManager is currently a pure JavaScript class that relies on the rudimentary Signals.addSignalMethods() to handle signals. This is an inefficient implementation of one of the most central classes in GNOME Shell. In addition to removing Shell.GenericContainer, then, turn LayoutManager into a proper GObject.Object subclass. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/153 --- js/ui/layout.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/js/ui/layout.js b/js/ui/layout.js index c379e7863..6c7e934db 100644 --- a/js/ui/layout.js +++ b/js/ui/layout.js @@ -177,8 +177,16 @@ const defaultParams = { var LayoutManager = new Lang.Class({ Name: 'LayoutManager', + Extends: GObject.Object, + Signals: { 'hot-corners-changed': {}, + 'startup-complete': {}, + 'startup-prepared': {}, + 'monitors-changed': {}, + 'keyboard-visible-changed': { param_types: [GObject.TYPE_BOOLEAN] } }, _init() { + this.parent(); + this._rtl = (Clutter.get_default_text_direction() == Clutter.TextDirection.RTL); this.monitors = []; this.primaryMonitor = null; @@ -1069,7 +1077,6 @@ var LayoutManager = new Lang.Class({ this._queueUpdateRegions(); }, }); -Signals.addSignalMethods(LayoutManager.prototype); // HotCorner: