! Please note that this is a snapshot of our old Bugzilla server, which is read only since May 29, 2020. Please go to gitlab.xfce.org for our new server !
Tiling a maximised window dows not update the libwnck WNCK_WINDOW_IS_MAXIMIZE...


Description padfoot 2013-05-13 10:30:51 CEST
When tiling a maximised window, you would expect later clicking on the maximise button on the title bar to maximise the window again. This is not the case. It actually performs an unmaximise action.

To re-produce, open a window and maximise it. Drag to left or right to tile the window. Now click the maximise button and the window unmaximises.

It would seem when a maximised window is tiled, the WNCK_WINDOW_IS_MAXIMIZED flag is not unset, leading xfwm4 to believe it is still maximised and perform an ummaximise next time the button is clicked.

Comment 1 padfoot 2013-05-13 10:44:56 CEST
This does not happen with all windows.

Using xfce4-terminal and thunar, these apps display the correct behaviour. Using mousepad or firefox display the incorrect behaviour.
Comment 2 Olivier Fourdan editbugs 2013-05-13 20:12:27 CEST
xfwm4 does not use nor depend on libwnck.

Tiling in xfwm4 works in conjuction with (partial) maximization, either vertically or horizontally.

Better check the EWMH flags for maximization, if those do not match the actual state, then there could be a bug.
Comment 3 padfoot 2013-06-13 01:14:09 CEST
Apologies for the delay in responding.

After some more intense investigation on my end, it would appear to not be a bug as such, more intended behaviour but un-expected behaviour (from the user standpoint) from tiling, as follows:

Using the following bitmask for window states:
STATE_MINIMIZED              = 1
STATE_SHADED                 = 8
STATE_SKIP_PAGER             = 16
STATE_STICKY                 = 64
STATE_HIDDEN                 = 128
STATE_FULLSCREEN             = 256
STATE_URGENT                 = 1024
STATE_ABOVE                  = 2048
STATE_BELOW                  = 4196

I get the following behaviour from all windows (my mistake in thinking thunar behaved differently to firefox etc, turns out to just be intended, but un-expected behaviour of xfwm4)

1. Start window normal: 0 (bit mask)
2. Maximize window: 6
3. Move the window: 0 window resizes to state before maximize
4. Maximzise window: 6
5. Move window to left or right to tile: 0 only an unmaximize is triggered, when window reaches left or right egde, a vertical maximize is not triggered (unsure if this is intended or cannot be avoided but I would expect the state to change to 4 and the window be tiled to the left or right)
6. Release window and then move to left or right to tile: 4
7. Move window: 0
8. Move window to left or right to tile: 4
9. Maximize window button: 0 the window reverts to normal state and the position is at the last remembered co-ordinates before the vertical maximize in step 8 was triggered. I would expect the window to maximize here (bitmask 6) as even though the window is maximized in one direction, the logical state would be normal (bit mask 0), but users would not consider a vertical (or horizontal) only maximized state (bitmasks 2 and 4) to be a maximized window. I would suggest the next logical step (for a user) from a bitmask of 2 or 4 to be 6.

The positioning of the window in this circumstance could be considered a bug, as the position is restored to the last remembered co-ordinates prior to the vertical or horizontal maximize is triggered. This results in the majority of the window now being off screen (especially if horizontally tiled at the bottom of the screen - it is nearly 100% off screen), or at the top of the screen (the title bar is now under my panel requiring an ALT + LEFT CLICK to move the window).

So from the above, I guess I am really suggesting a modification in behaviour as follows:
From step 9 above - clicking the maximize button on a window that is only maximized in one direction (bitmask 2 or 4) should change state to maximized (bit mask 6).
From step 5 above - dragging a maximized (bitmask 6) window should change state to normal (bitmask 0) as it does, but if that drag continues to a screen edge, then a state change to vertically or horizontally mazimized should trigger (bit masks 2 or 4).

Of course, if these state changes are not possible (due to limitations of some sort), then may I suggest the state change to normal (bitmask 0) should also trigger a smart placement of the window either to the centre of the screen or as set in the xfwm4 smart placement settings, preventing situations of the window being placed almost entirely off screen.

Comment 4 Cédric Leporcq 2014-05-31 05:53:41 CEST
Created attachment 5502 
Fix ToggleMaximize fn when window is solely maximized verticaly or horizontaly


I've made this patch when I worked on my custom package. This should fix this issue.

The problem seem to come from to the ToggleMaximize function which do not maximize window when they are partially maximized horizontally or vertically.
Comment 5 Cédric Leporcq 2014-07-12 19:46:19 CEST
Created attachment 5548 
Fix ToggleMaximize fn when window is solely maximized verticaly or horizontaly

I found another related issue:

When the user try to restore maximized window that was previously tiled, the previous position was not restored correctly.

The new patch also fix this issue.
Comment 6 YvanM 2014-12-01 15:35:34 CET
Thank you very for working on this issue.

I just reported it on Ubuntu Launchpad:

Thanks again for your time and work,
Comment 7 Simon Steinbeiss editbugs 2014-12-01 16:15:04 CET
I finally had time to look at this patch and test it out. It works great and fixes both issues in question.
Thanks for doing the hard work, Cédric!

Comment 8 Olivier Fourdan editbugs 2014-12-02 13:39:45 CET
Actually the described behaviour was on purpose but I understand it was confusing users so it's fine to change that.
Comment 9 Simon Steinbeiss editbugs 2015-02-17 12:25:26 CET
*** Bug 8766 has been marked as a duplicate of this bug. ***

Bug #10084

Reported by:
Reported on: 2013-05-13
Last modified on: 2015-02-17
Duplicates (1):
  • 8766 Clicking "unmaximize" on a tiled window doesn't restore its original position.


Olivier Fourdan
CC List:
4 users




Additional information