[Xfce4-commits] [xfce/xfce4-panel] 09/12: Fixing problems with intelligent panel hiding (Bug #11331)

noreply at xfce.org noreply at xfce.org
Mon Feb 27 22:51:50 CET 2017


This is an automated email from the git hooks/post-receive script.

ochosi pushed a commit to branch master
in repository xfce/xfce4-panel.

commit 10794543f57fb648ef472add6d4d2d81bf7dae5b
Author: Simon Steinbeiss <simon.steinbeiss at elfenbeinturm.at>
Date:   Mon Feb 27 21:09:30 2017 +0100

    Fixing problems with intelligent panel hiding (Bug #11331)
    
    ochosi: "Just to document the findings I made during a quick debug session
    with the panel from git master (4.11.x). Intelligent hiding
    generally works, but the mouse-pointer behavior is buggy.
    Steps to reproduce the bug:
    1) set panel to intelligent hiding
    2) give a window focus that doesn't overlap with the panel
    3) hover the panel with the mouse
    4) upon leaving the panel hides again, even though there
       is no window overlapping
    
    What it should do instead: if intelligent hiding is in use
    it should check (possibly in panel_window_leave_notify_event
    or _enter_ in panel-window.c) whether there are windows
    overlapping with the panel and if not, the panel shouldn't
    hide on leave_notify."
    
    Rebased for the Gtk3 port by Simon Steinbeiss <simon at xfce.org>
---
 panel/panel-window.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/panel/panel-window.c b/panel/panel-window.c
index cffe337..1e8a024 100644
--- a/panel/panel-window.c
+++ b/panel/panel-window.c
@@ -927,8 +927,14 @@ panel_window_leave_notify_event (GtkWidget        *widget,
    /* queue an autohide timeout if needed */
   if (event->detail != GDK_NOTIFY_INFERIOR
       && window->autohide_state != AUTOHIDE_DISABLED
-      && window->autohide_state != AUTOHIDE_BLOCKED)
-    panel_window_autohide_queue (window, AUTOHIDE_POPDOWN);
+      && window->autohide_state != AUTOHIDE_BLOCKED) {
+    /* simulate a geometry change to check for overlapping windows with intelligent hiding */
+    if (window->autohide_behavior == AUTOHIDE_BEHAVIOR_INTELLIGENTLY)
+      panel_window_active_window_geometry_changed (window->wnck_active_window, window);
+    /* otherwise just hide the panel */
+    else
+      panel_window_autohide_queue (window, AUTOHIDE_POPDOWN);
+  }
 
   return (*GTK_WIDGET_CLASS (panel_window_parent_class)->leave_notify_event) (widget, event);
 }

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list