labwc/include
John Lindgren 0430f6f818 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
2023-10-28 22:46:49 +02:00
..
button button-png.c: s/png_load/button_png_load/ 2023-09-17 19:26:41 +01:00
common common: move MIN and MAX to common/macros.h 2023-10-21 12:37:42 +01:00
config keyboard: add option to enable Num Lock automatically (default=enabled) 2023-10-09 20:48:03 +01:00
menu menu: use wl_list instead of array 2023-10-10 06:17:37 +01:00
action.h action: add If and ForEach actions 2023-10-01 14:17:29 +01:00
buffer.h includes: identifier consistency in include guards 2023-05-13 22:29:21 +01:00
cursor.h dnd: refocus surface under cursor on drag-destroy 2023-05-28 22:17:29 +01:00
debug.h includes: identifier consistency in include guards 2023-05-13 22:29:21 +01:00
decorations.h includes: identifier consistency in include guards 2023-05-13 22:29:21 +01:00
dnd.h includes: identifier consistency in include guards 2023-05-13 22:29:21 +01:00
idle.h Add support for ext_idle_notify_v1.. 2023-07-09 08:26:33 +01:00
key-state.h key-state: rename function for consistency 2023-09-30 15:43:59 +02:00
labwc.h view: avoid raising same view over and over 2023-10-21 21:42:24 +01:00
layers.h includes: identifier consistency in include guards 2023-05-13 22:29:21 +01:00
meson.build Make xwayland support optional 2020-12-30 10:29:21 +00:00
node.h includes: identifier consistency in include guards 2023-05-13 22:29:21 +01:00
regions.h includes: identifier consistency in include guards 2023-05-13 22:29:21 +01:00
resistance.h includes: identifier consistency in include guards 2023-05-13 22:29:21 +01:00
resize_indicator.h Add window resize indicator 2023-08-19 18:37:16 +02:00
session-lock.h session-lock: reconfigure for output layout changes 2023-10-05 20:10:37 +01:00
snap.h Add snap to window edge framework 2023-10-19 19:09:42 +01:00
ssd-internal.h common: rename array-size.h to macros.h 2023-10-21 12:37:42 +01:00
ssd.h src/ssd: use view->ssd_titlebar_hidden for ssd_thickness calculations 2023-09-21 22:21:19 +01:00
theme.h Refactor title height to use 'titlebar.height' from themerc 2023-10-06 22:19:16 +01:00
view-impl-common.h view: commonize sub-view logic in view_move_to_front/back() 2023-10-21 15:40:56 +01:00
view.h view: implement separate horizontal/vertical maximize 2023-10-28 22:46:49 +02:00
window-rules.h window-rules: add ignoreFocusRequest property 2023-09-10 13:31:15 +02:00
workspaces.h desktop: switch workspaces and optionally raise in desktop_focus_view() 2023-09-28 03:38:51 +02:00
xwayland.h common: add and use CONNECT_SIGNAL macro 2023-10-21 12:37:42 +01:00