Some thoughts:
1) Top or bottom gridded windows can't be restored by dragging. The window does move up and down but doesn't snap off without pressing restore button/key (seems to be the default behavior for horizontally maximized windows).
2) Code duplication for GridTop || GridBottom case in initiateCommon. This could go like:
if Top || Bottom || Left || Right
*restore original geometry and change sizeHints*
Resized = false
if Top || Bottom maximize(HorzMask) HorzMaximized = true VertMaximized = false
else maximize(VertMask) HorzMaximized = false VertMaximized = true
3) The easiest solution to fix bug 1082001 is to make expo send start/end_viewport_switch event at the start/end of viewport switch. Grid listens for those events and knows not to block the window movement while viewport switch is in progress. Currently only wall and rotate are emitting those events although expo and cube are also triggering viewport switches (so cube might need the change too).
The first point definitely needs fixing, the second one is just an opinion...
Some thoughts:
1) Top or bottom gridded windows can't be restored by dragging. The window does move up and down but doesn't snap off without pressing restore button/key (seems to be the default behavior for horizontally maximized windows).
2) Code duplication for GridTop || GridBottom case in initiateCommon. This could go like:
if Top || Bottom || Left || Right
*restore original geometry and change sizeHints*
Resized = false
if Top || Bottom
maximize( HorzMask)
HorzMaximized = true
VertMaximized = false
maximize( VertMask)
HorzMaximized = false
VertMaximized = true
else
3) The easiest solution to fix bug 1082001 is to make expo send start/end_ viewport_ switch event at the start/end of viewport switch. Grid listens for those events and knows not to block the window movement while viewport switch is in progress. Currently only wall and rotate are emitting those events although expo and cube are also triggering viewport switches (so cube might need the change too).
The first point definitely needs fixing, the second one is just an opinion...