GNOME Bugzilla – Bug 104591
EWMH: programmatic toggling of maximization states is wrong
Last modified: 2011-06-18 07:24:25 UTC
When window is maximized in vertical directon only and a program wants to maximize it to horizontal direction only with one request it sends a request that toggles both vertical and horizontal maximization (vertical shall toggle on->off, horizontal - off->on). Howere sawfish handles this situation incorrectly. The window will go to the normal state. The problematic code is in lisp/sawfish/wm/state/wm-spec.jl: (define (client-message-handler w type data) (let ((handled t)) (case type ;;; ... ((_NET_WM_STATE) (when (windowp w) (let ((mode (cond ((eql (aref data 0) _NET_WM_STATE_REMOVE) 'remove) ((eql (aref data 0) _NET_WM_STATE_ADD) 'add) ((eql (aref data 0) _NET_WM_STATE_TOGGLE) 'toggle))) (atom1 (x-atom-name (aref data 1))) (atom2 (x-atom-name (aref data 2)))) (when (or (and (eq atom1 '_NET_WM_STATE_MAXIMIZED_VERT) (eq atom2 '_NET_WM_STATE_MAXIMIZED_HORZ)) (and (eq atom2 '_NET_WM_STATE_MAXIMIZED_VERT) (eq atom1 '_NET_WM_STATE_MAXIMIZED_HORZ))) (setq atom1 '_NET_WM_STATE_MAXIMIZED) (setq atom2 nil)) (when atom1 (call-state-fun w atom1 mode)) (when atom2 (call-state-fun w atom2 mode))))) The assumption that toggling both maximizations is the same as toggling full maximization is wrong.
-> 3.0
Closing. New report at our new BugTracker: http://sawfish.tuxfamily.org/flyspray/index.php?do=details&task_id=9&project=1This problem has been fixed in the development version. The fix will be available in the next major software release. Thank you for your bug report.