@@ -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