Hi all,

Before maximize-window-horizontally + maximize-window-vertically acted together,
so the window first got MAXIMIZED_HORZ (state + size) then MAXIMIZED_VERT 
(state + size).

Now maximize-window-horizontally + maximize-window-vertically are oponents,
so the window first gets MAXIMIZED_HORZ (sate + size), then it looses 
MAXIMIZED_HORZ (state + size),
THEN it gets MAXIMIZED_VERT (state + size).

Why? Because MAXIMIZED_HORZ + MAXIMIZED_VERT *!=* MAXIMIZED.

For those who don't understand that:
I have trayer on the bottom of my screen, but it's width is not screen-width,
it's smaller, now when a windows left lower corner is on (0 . screen-height) 
and I call
maximize-window-horizontally the window does not get width = screen-width and
MAXIMIZED_HORZ, it gets width = until trayer begins and MAXIMIZED_HORZ, now say 
the window
already had MAXIMIZED_VERT, normally then reopening the window with this setup, 
the size should
now be (until trayer starts . screen-height), but it's not, now it's 
(screen-width . screen-height),
and that is an epic fail.

For the (partially) old behaviour refer back to the -toggle variants, they work 
as the non -toggle
ones did before but -of course- here now also MAXIMIZED_HORZ + MAXIMIZED_VERT 
!= MAXIMIZED. 

Chris

Attached patch fixes the issue.

diff --git a/lisp/sawfish/wm/state/maximize.jl 
b/lisp/sawfish/wm/state/maximize.jl
index 7341347..10c6350 100644
--- a/lisp/sawfish/wm/state/maximize.jl
+++ b/lisp/sawfish/wm/state/maximize.jl
@@ -419,10 +419,12 @@ unmaximized, state."
 
   (define (maximize-window-vertically w)
     "Maximize the vertical dimension of the window."
+    (unmaximize-window w 'horizontal)
     (maximize-window w 'vertical))
 
   (define (maximize-window-horizontally w)
     "Maximize the horizontal dimension of the window."
+    (unmaximize-window w 'vertical)
     (maximize-window w 'horizontal))
 
   (define (maximize-window-toggle w #!optional direction)
@@ -587,7 +589,7 @@ across all Xinerama and unmaximized."
   (define-command 'maximize-window-fullxinerama
     maximize-window-fullxinerama #:spec "%W
 t")
-  
+
   (define-command 'maximize-window-fullxinerama-toggle
     maximize-window-fullxinerama-toggle #:spec "%W")
 
diff --git a/lisp/sawfish/wm/state/wm-spec.jl b/lisp/sawfish/wm/state/wm-spec.jl
index 3ed1853..899b533 100644
--- a/lisp/sawfish/wm/state/wm-spec.jl
+++ b/lisp/sawfish/wm/state/wm-spec.jl
@@ -553,12 +553,6 @@
                               '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

Reply via email to