66 */
77
88public class Gala.HideTracker : Object {
9+ private const int ANIMATION_DURATION = 250 ;
910 private const int BARRIER_OFFSET = 50 ; // Allow hot corner trigger
1011 private const int UPDATE_TIMEOUT = 200 ;
1112 private const int HIDE_DELAY = 500 ;
1213
13- public signal void hide ();
14- public signal void show ();
14+ public signal void hide (GestureTracker gesture_tracker , bool with_gesture );
15+ public signal void show (GestureTracker gesture_tracker , bool with_gesture );
1516
1617 public Meta . Display display { get ; construct; }
1718 public unowned PanelWindow panel { get ; construct; }
1819
1920 public Pantheon . Desktop . HideMode hide_mode { get ; set ; }
2021
2122 private Clutter . PanAction pan_action;
23+ private GestureTracker gesture_tracker; // Placeholder that will replace pan_action once the pan_backend gets merged
2224
2325 private bool hovered = false ;
2426
@@ -79,6 +81,8 @@ public class Gala.HideTracker : Object {
7981
8082 display. get_workspace_manager (). active_workspace_changed. connect (schedule_update);
8183
84+ gesture_tracker = new GestureTracker (ANIMATION_DURATION , ANIMATION_DURATION );
85+
8286 pan_action = new Clutter .PanAction () {
8387 n_touch_points = 1 ,
8488 pan_axis = X_AXIS
@@ -146,13 +150,13 @@ public class Gala.HideTracker : Object {
146150 }
147151
148152 update_timeout_id = Timeout . add (UPDATE_TIMEOUT , () = > {
149- update_overlap ();
153+ update_overlap (gesture_tracker, false );
150154 update_timeout_id = 0 ;
151155 return Source . REMOVE ;
152156 });
153157 }
154158
155- private void update_overlap () {
159+ public void update_overlap (GestureTracker gesture_tracker , bool with_gesture ) {
156160 overlap = false ;
157161 focus_overlap = false ;
158162 focus_maximized_overlap = false ;
@@ -185,25 +189,25 @@ public class Gala.HideTracker : Object {
185189 focus_maximized_overlap = VERTICAL in window. get_maximized ();
186190 }
187191
188- update_hidden ();
192+ update_hidden (gesture_tracker, with_gesture );
189193 }
190194
191- private void update_hidden () {
195+ private void update_hidden (GestureTracker gesture_tracker , bool with_gesture ) {
192196 switch (hide_mode) {
193197 case MAXIMIZED_FOCUS_WINDOW :
194- toggle_display (focus_maximized_overlap);
198+ toggle_display (focus_maximized_overlap, gesture_tracker, with_gesture );
195199 break ;
196200
197201 case OVERLAPPING_FOCUS_WINDOW :
198- toggle_display (focus_overlap);
202+ toggle_display (focus_overlap, gesture_tracker, with_gesture );
199203 break ;
200204
201205 case OVERLAPPING_WINDOW :
202- toggle_display (overlap);
206+ toggle_display (overlap, gesture_tracker, with_gesture );
203207 break ;
204208
205209 case ALWAYS :
206- toggle_display (true );
210+ toggle_display (true , gesture_tracker, with_gesture );
207211 break ;
208212
209213 default:
@@ -212,7 +216,11 @@ public class Gala.HideTracker : Object {
212216 }
213217 }
214218
215- private void toggle_display (bool should_hide ) {
219+ private void toggle_display (bool should_hide , GestureTracker gesture_tracker , bool with_gesture ) {
220+ if (display. get_monitor_in_fullscreen (panel. window. get_monitor ())) {
221+ return ;
222+ }
223+
216224#if HAS_MUTTER45
217225 hovered = panel. window. has_pointer ();
218226#else
@@ -222,7 +230,7 @@ public class Gala.HideTracker : Object {
222230 if (should_hide && ! hovered && ! panel. window. has_focus ()) {
223231 trigger_hide ();
224232 } else {
225- trigger_show ();
233+ trigger_show (gesture_tracker, with_gesture );
226234 }
227235 }
228236
@@ -241,7 +249,7 @@ public class Gala.HideTracker : Object {
241249 }
242250
243251 hide_timeout_id = Timeout . add_once (HIDE_DELAY , () = > {
244- hide ();
252+ hide (gesture_tracker, false );
245253 hide_timeout_id = 0 ;
246254 });
247255 }
@@ -253,9 +261,9 @@ public class Gala.HideTracker : Object {
253261 }
254262 }
255263
256- private void trigger_show () {
264+ private void trigger_show (GestureTracker gesture_tracker , bool with_gesture ) {
257265 reset_hide_timeout ();
258- show ();
266+ show (gesture_tracker, with_gesture );
259267 }
260268
261269 private bool check_valid_gesture () {
@@ -281,7 +289,7 @@ public class Gala.HideTracker : Object {
281289
282290 if (delta_y < 0 ) { // Only allow swipes upwards
283291 panel. window. focus (pan_action. get_last_event (0 ). get_time ());
284- trigger_show ();
292+ trigger_show (gesture_tracker, false );
285293 }
286294
287295 return false ;
@@ -325,7 +333,7 @@ public class Gala.HideTracker : Object {
325333 int . MAX
326334 );
327335
328- barrier. trigger. connect (trigger_show);
336+ barrier. trigger. connect (() = > trigger_show (gesture_tracker, false ) );
329337 }
330338
331339#if HAS_MUTTER45
@@ -346,6 +354,6 @@ public class Gala.HideTracker : Object {
346354 int . MAX
347355 );
348356
349- barrier. trigger. connect (trigger_show);
357+ barrier. trigger. connect (() = > trigger_show (gesture_tracker, false ) );
350358 }
351359}
0 commit comments