diff options
Diffstat (limited to 'autohide.patch')
-rw-r--r-- | autohide.patch | 43 |
1 files changed, 27 insertions, 16 deletions
diff --git a/autohide.patch b/autohide.patch index 7f4aa585a013..74587a3e0f8a 100644 --- a/autohide.patch +++ b/autohide.patch @@ -52,17 +52,6 @@ index c48b5ea..81ec2f2 100644 public PanelWindow (Gtk.Application application) { Object ( -@@ -52,6 +58,10 @@ public class Wingpanel.PanelWindow : Gtk.Window { - this.screen.size_changed.connect (update_panel_dimensions); - this.screen.monitors_changed.connect (update_panel_dimensions); - this.screen_changed.connect (update_visual); -+ wnck_screen.active_window_changed.connect (active_window_changed); -+ this.enter_notify_event.connect (show_panel); -+ this.motion_notify_event.connect (show_panel); -+ this.leave_notify_event.connect (hide_panel); - - update_visual (); - @@ -71,17 +79,40 @@ public class Wingpanel.PanelWindow : Gtk.Window { application.add_accelerator ("<Control>Tab", "app.cycle", null); application.add_accelerator ("<Control><Shift>Tab", "app.cycle-back", null); @@ -109,7 +98,7 @@ index c48b5ea..81ec2f2 100644 return true; } -@@ -91,7 +115,151 @@ public class Wingpanel.PanelWindow : Gtk.Window { +@@ -91,7 +115,173 @@ public class Wingpanel.PanelWindow : Gtk.Window { Services.BackgroundManager.initialize (this.monitor_number, panel_height); @@ -128,6 +117,18 @@ index c48b5ea..81ec2f2 100644 + active_window.state_changed.connect (active_window_state_changed); + } + ++ private void active_workspace_changed (Wnck.Workspace? prev_active_workspace) { ++ unowned Wnck.Window? active_window = wnck_screen.get_active_window(); ++ if (autohide == "Dodge" || autohide == "Dodge-Float") ++ update_visibility_active_change (active_window); ++ } ++ ++ private void viewports_changed (Wnck.Screen? screen) { ++ unowned Wnck.Window? active_window = wnck_screen.get_active_window(); ++ if (autohide == "Dodge" || autohide == "Dodge-Float") ++ update_visibility_active_change (active_window); ++ } ++ + private void active_window_state_changed (Wnck.Window? window, + Wnck.WindowState changed_mask, Wnck.WindowState new_state) { + if (autohide == "Dodge" || autohide == "Dodge-Float") @@ -145,10 +146,11 @@ index c48b5ea..81ec2f2 100644 + private bool should_hide_active_change (Wnck.Window? active_window) { + unowned Wnck.Workspace active_workspace = wnck_screen.get_active_workspace (); + -+ return ((active_window != null) && !active_window.is_minimized () && right_type (active_window) -+ && active_window.is_visible_on_workspace (active_workspace) -+ && (active_window.get_window_type () == Wnck.WindowType.DIALOG) ? -+ would_intersect_shown_panel (active_window) : ++ return ((active_window != null) && !active_window.is_minimized () && right_type (active_window) ++ && active_window.is_visible_on_workspace (active_workspace) ++ && active_window.is_in_viewport (active_workspace) ++ && (active_window.get_window_type () == Wnck.WindowType.DIALOG) ? ++ would_intersect_shown_panel (active_window) : + (in_panel_x_range (active_window) && is_maximized_at_all (active_window))); + } + @@ -243,6 +245,9 @@ index c48b5ea..81ec2f2 100644 + this.enter_notify_event.disconnect (show_panel); + this.motion_notify_event.disconnect (show_panel); + this.leave_notify_event.disconnect (hide_panel); ++ wnck_screen.active_window_changed.disconnect (active_window_changed); ++ wnck_screen.active_workspace_changed.disconnect (active_workspace_changed); ++ wnck_screen.viewports_changed.disconnect (viewports_changed); + show_panel (); + break; + case "Dodge": @@ -250,12 +255,18 @@ index c48b5ea..81ec2f2 100644 + this.enter_notify_event.connect (show_panel); + this.motion_notify_event.connect (show_panel); + this.leave_notify_event.connect (hide_panel); ++ wnck_screen.active_window_changed.connect (active_window_changed); ++ wnck_screen.active_workspace_changed.connect (active_workspace_changed); ++ wnck_screen.viewports_changed.connect (viewports_changed); + show_panel (); + break; + default: + this.enter_notify_event.connect (show_panel); + this.motion_notify_event.connect (show_panel); + this.leave_notify_event.connect (hide_panel); ++ wnck_screen.active_window_changed.disconnect (active_window_changed); ++ wnck_screen.active_workspace_changed.disconnect (active_workspace_changed); ++ wnck_screen.viewports_changed.disconnect (viewports_changed); + hide_panel (); + break; + } |