Skip to content

Commit 69ca0fa

Browse files
committed
Intellihide: use window actor allocation-changed signal.
Following ustream code https://git.gnome.org/browse/gnome-shell/diff/js/ui/panel.js?id=447bf55e45b00426ed908b1b1035f472c2466956 One signal instead of two. Pass around the actor instead of the metaWindow.
1 parent f08f750 commit 69ca0fa

1 file changed

Lines changed: 21 additions & 23 deletions

File tree

intellihide.js

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -102,16 +102,16 @@ const Intellihide = new Lang.Class({
102102
enable: function() {
103103
this._isEnabled = true;
104104
this._status = OverlapStatus.UNDEFINED;
105-
global.get_window_actors().forEach(function(win) {
106-
this._addWindowSignals(win.get_meta_window());
105+
global.get_window_actors().forEach(function(wa) {
106+
this._addWindowSignals(wa);
107107
}, this);
108108
this._doCheckOverlap();
109109
},
110110

111111
disable: function() {
112112
this._isEnabled = false;
113-
global.get_window_actors().forEach(function(win) {
114-
this._removeWindowSignals(win.get_meta_window());
113+
global.get_window_actors().forEach(function(wa) {
114+
this._removeWindowSignals(wa);
115115
}, this);
116116

117117
if (this._checkOverlapTimeoutId > 0) {
@@ -120,29 +120,22 @@ const Intellihide = new Lang.Class({
120120
}
121121
},
122122

123-
_windowCreated: function(display, meta_win) {
124-
this._addWindowSignals(meta_win);
123+
_windowCreated: function(display, metaWindow) {
124+
this._addWindowSignals(metaWindow.get_compositor_private());
125125
},
126126

127-
_addWindowSignals: function(meta_win) {
128-
if (!meta_win || !this._handledWindow(meta_win))
127+
_addWindowSignals: function(wa) {
128+
if (!this._handledWindow(wa))
129129
return;
130-
131-
meta_win.dtd_onPositionChanged = meta_win.connect('position-changed', Lang.bind(this, this._checkOverlap, meta_win));
132-
133-
meta_win.dtd_onSizeChanged = meta_win.connect('size-changed', Lang.bind(this, this._checkOverlap, meta_win));
130+
wa.onAllocationChangedId = wa.connect('allocation-changed', Lang.bind(this, this._checkOverlap, wa.get_meta_window()));
134131
},
135132

136-
_removeWindowSignals: function(meta_win) {
137-
if (meta_win && meta_win.dtd_onSizeChanged) {
138-
meta_win.disconnect(meta_win.dtd_onSizeChanged);
139-
delete meta_win.dtd_onSizeChanged;
133+
_removeWindowSignals: function(wa) {
134+
if (wa.onAllocationChangedId) {
135+
wa.disconnect(wa.onAllocationChangedId);
136+
delete wa.onAllocationChangedId;
140137
}
141138

142-
if (meta_win && meta_win.dtd_onPositionChanged) {
143-
meta_win.disconnect(meta_win.dtd_onPositionChanged);
144-
delete meta_win.dtd_onPositionChanged;
145-
}
146139
},
147140

148141
updateTargetBox: function(box) {
@@ -202,7 +195,7 @@ const Intellihide = new Lang.Class({
202195
let topWindow = null;
203196
for (let i = windows.length - 1; i >= 0; i--) {
204197
let meta_win = windows[i].get_meta_window();
205-
if (this._handledWindow(meta_win) && (meta_win.get_monitor() == this._monitorIndex)) {
198+
if (this._handledWindow(windows[i]) && (meta_win.get_monitor() == this._monitorIndex)) {
206199
topWindow = meta_win;
207200
break;
208201
}
@@ -247,7 +240,7 @@ const Intellihide = new Lang.Class({
247240
// Optionally skip windows of other applications
248241
_intellihideFilterInteresting: function(wa) {
249242
let meta_win = wa.get_meta_window();
250-
if (!meta_win || !this._handledWindow(meta_win))
243+
if (!this._handledWindow(wa))
251244
return false;
252245

253246
let currentWorkspace = global.screen.get_active_workspace_index();
@@ -298,7 +291,12 @@ const Intellihide = new Lang.Class({
298291

299292
// Filter windows by type
300293
// inspired by Opacify@gnome-shell.localdomain.pl
301-
_handledWindow: function(metaWindow) {
294+
_handledWindow: function(wa) {
295+
let metaWindow = wa.get_meta_window();
296+
297+
if (!metaWindow)
298+
return false;
299+
302300
// The DropDownTerminal extension uses the POPUP_MENU window type hint
303301
// so we match its window by wm class instead
304302
if (metaWindow.get_wm_class() == 'DropDownTerminalWindow')

0 commit comments

Comments
 (0)