mirror of
https://github.com/labwc/labwc.git
synced 2026-02-22 01:40:25 -05:00
view: implement separate horizontal/vertical maximize
This is a useful (if lesser-known) feature of at least a few popular X11 window managers, for example Openbox and XFWM4. Typically right-click on the maximize button toggles horizontal maximize, while middle-click toggles vertical maximize. Support in labwc uses the same configuration syntax as Openbox, where the Maximize/ToggleMaximize actions have an optional "direction" argument: horizontal, vertical, or both (default). The default mouse bindings match the XFWM4 defaults (not sure what Openbox has by default). Most of the external protocols still assume "maximized" is a Boolean, which is no longer true internally. For the sake of the outside world, a view is only "maximized" if maximized in both directions. Internally, I've taken the following approach: - SSD code decorates the view as "maximized" (i.e. hiding borders) only if maximized in both directions. - Layout code (interactive move/resize, tiling, etc.) generally treats the view as "maximized" (with the restrictions that entails) if maximized in either direction. For example, moving a vertically- maximized view first restores the natural geometry (this differs from Openbox, which instead allows the view to move only horizontally.) v2: use enum view_axis for view->maximized v3: - update docs - allow resizing if partly maximized - add TODOs & corrections noted by Consolatis
This commit is contained in:
parent
7b644b3b94
commit
0430f6f818
15 changed files with 193 additions and 78 deletions
|
|
@ -112,11 +112,13 @@ Actions are used in menus and keyboard/mouse bindings.
|
|||
*<action name="ToggleFullscreen" />*
|
||||
Toggle fullscreen state of focused window.
|
||||
|
||||
*<action name="ToggleMaximize" />*
|
||||
Toggle maximize state of focused window.
|
||||
*<action name="ToggleMaximize" direction="value" />*
|
||||
Toggle maximize state of focused window. Supported directions are
|
||||
"both" (default), "horizontal", and "vertical".
|
||||
|
||||
*<action name="Maximize" />*
|
||||
Maximize focused window.
|
||||
*<action name="Maximize" direction="value" />*
|
||||
Maximize focused window. Supported directions are "both" (default),
|
||||
"horizontal", and "vertical".
|
||||
|
||||
*<action name="ToggleAlwaysOnTop" />*
|
||||
Toggle always-on-top of focused window.
|
||||
|
|
|
|||
|
|
@ -298,7 +298,6 @@
|
|||
<mousebind button="Right" action="Click">
|
||||
<action name="Focus" />
|
||||
<action name="Raise" />
|
||||
<action name="ShowMenu" menu="client-menu" />
|
||||
</mousebind>
|
||||
</context>
|
||||
|
||||
|
|
@ -309,20 +308,30 @@
|
|||
<mousebind button="Left" action="DoubleClick">
|
||||
<action name="ToggleMaximize" />
|
||||
</mousebind>
|
||||
<mousebind button="Right" action="Click">
|
||||
<action name="ShowMenu" menu="client-menu" />
|
||||
</mousebind>
|
||||
</context>
|
||||
|
||||
<context name="Maximize">
|
||||
<mousebind button="Left" action="Click">
|
||||
<action name="Focus" />
|
||||
<action name="Raise" />
|
||||
<action name="ToggleMaximize" />
|
||||
</mousebind>
|
||||
<mousebind button="Right" action="Click">
|
||||
<action name="ToggleMaximize" direction="horizontal" />
|
||||
</mousebind>
|
||||
<mousebind button="Middle" action="Click">
|
||||
<action name="ToggleMaximize" direction="vertical" />
|
||||
</mousebind>
|
||||
</context>
|
||||
|
||||
<context name="WindowMenu">
|
||||
<mousebind button="Left" action="Click">
|
||||
<action name="ShowMenu" menu="client-menu" />
|
||||
</mousebind>
|
||||
<mousebind button="Right" action="Click">
|
||||
<action name="ShowMenu" menu="client-menu" />
|
||||
</mousebind>
|
||||
</context>
|
||||
|
||||
<context name="Iconify">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue