Commit graph

2183 commits

Author SHA1 Message Date
Andrew J. Hesford
0fe7cf6131 NEWS.md: note changes in snapping behavior 2024-02-01 21:19:55 +00:00
Andrew J. Hesford
9693100e16 edges: only snap to neighbors on outputs containing the changing view 2024-02-01 21:05:20 +00:00
Andrew J. Hesford
b82d4783ea edges: simplify output edge validation 2024-02-01 21:05:20 +00:00
Andrew J. Hesford
01af000cd1 view: better honor usable areas when changing outputs...
...in view_move_to_edge. If a view is fully within the usable area of
its original output, it should be fully within the usable area (if
possible) on its new output.
2024-01-30 21:12:46 +00:00
Andrew J. Hesford
fc922fde21
Merge pull request #1482 from ahesford/whats_in_the_box
Comprehensive snapping/resistance rewrite
2024-01-30 15:19:17 -05:00
Andrew J. Hesford
e7e6d29237 edges, resistance, snap: unified resistance and snapping engine 2024-01-30 15:02:17 -05:00
Andrew J. Hesford
1b0f1a4c4e placement: consider gaps when placing new windows 2024-01-30 13:35:33 -05:00
Johan Malm
11a35a7c20
Merge pull request #1463 from ahesford/boris-and-doris
view, xdg: notify clients when tiling windows
2024-01-30 18:02:28 +00:00
Andrew J. Hesford
3162bbb3c2 xdg: add snapping.notifyClient option to control tiling events 2024-01-30 07:30:07 -05:00
Andrew J. Hesford
9f51384b6a interactive: reset tiled state when dragging out of snapped position
This ensures that client-side decorations (and maybe other client
behaviors) behave intuitively during interative moves, but means that

    drag to snapped position -> drag to maximize -> un-maximize

will put the window back to its natural geometry (saved before the first
snap) rather than back to the snapped position. This is a change in
behavior, but a) simplifies the logic a bit, because the tiled state is
always in sync with the window geometry and b) in some sense is "more
correct", because the window has been "visually" un-tiled the minute the
window starts dragging.

Note that maximizing using an action (including the button) a window
that has been snapped and then un-maximizing the window will put the
window back to the snapped position, as it always has.
2024-01-30 07:30:07 -05:00
Andrew J. Hesford
c1a2dd3e27 view, xdg: notify clients when tiling windows 2024-01-30 07:30:07 -05:00
Johan Malm
ab1b0478a5
Merge pull request #1487 from ahesford/dont_think_about_elephants
xdg: make sure wlroots knows client size before activation
2024-01-29 21:51:23 +00:00
Andrew J. Hesford
bd5dcb3485 xdg: make sure wlroots always knows the correct client size 2024-01-29 15:56:25 -05:00
redtide
f908e332b3 NEWS.md: fix indentation 2024-01-26 17:21:13 +01:00
Jens Peters
aaa91d59b8 NEWS.md: wrap xml in markdown code blocks 2024-01-26 16:47:06 +01:00
Consolatis
a04b394e59 xwayland: support querying window types 2024-01-25 21:14:30 +00:00
Andrew J. Hesford
9ecd8c2b43 view: ensure midpoint is visible on layout change
Fixes: #1476.
2024-01-25 20:22:10 +01:00
Johan Malm
21d816edb2 environment: add Thunderbird to MOZ_ENABLE_WAYLAND description 2024-01-24 23:41:40 +01:00
Johan Malm
59543e476c NEWS.md: update for 0.7.1 2024-01-24 19:14:53 +00:00
John Lindgren
22b02f70e5 xwayland: prevent crash due to unexpected surface dissociate events
Fixes #1360
Fixes #1466
2024-01-24 18:55:21 +00:00
Consolatis
396a4b93d1 src/output.c: expose output configuration test to clients 2024-01-23 20:14:24 +00:00
Consolatis
6e773592f6 src/output.c: properly test new output configurations
Fixes #1458
2024-01-23 20:14:24 +00:00
Andrew J. Hesford
49dc55d4f0 interactive: unify interactive_{cancel,finish} where possible
This also fixes a bug wherein dragging a window and pressing a hot-key
to maximize or fullscreen a window could leave a snap-region highlight
visible after the interactive move was canceled.
2024-01-23 10:11:52 -05:00
Andrew J. Hesford
11cfbca7c7 resistance: properly handled shaded windows 2024-01-23 06:13:57 +00:00
Jens Peters
3cdeaecb4b view: do not resize fullscreen windows 2024-01-23 00:03:33 +01:00
Jens Peters
10d417258a view: fix early return condition 2024-01-22 22:27:08 +00:00
Jens Peters
945eea8f27 docs: describe MoveToOutput/FitToOutput action 2024-01-22 22:27:08 +00:00
Jens Peters
6391f9bcb2 action: add FitToOutput 2024-01-22 22:27:08 +00:00
Jens Peters
aa0e7523c3 action: add MoveToOutput 2024-01-22 22:27:08 +00:00
Jens Peters
b1d626fbfd view: add move_to_output() function 2024-01-22 22:27:08 +00:00
Jens Peters
982df84407 view: expose view_get_adjacent_output 2024-01-22 22:27:08 +00:00
Jens Peters
099929cf46 view: allow overriding of cursor placement policy 2024-01-22 22:27:08 +00:00
Jens Peters
8517254705 view: fix typo 2024-01-22 22:27:08 +00:00
Jens Peters
e547e29563 docs: extend touch section 2024-01-22 21:50:18 +00:00
Jens Peters
1d4961650f seat: re-map pointer to output on reconfigure
Makes testing easier, also consistent with other
devices types on reconfigure.
2024-01-22 21:50:18 +00:00
Jens Peters
19cab55092 seat: get output name from touch config for current device
The output name attached to the touch device has
still priority.
2024-01-22 21:50:18 +00:00
Jens Peters
3f77514459 config: add finding touch configurations 2024-01-22 21:50:18 +00:00
Jens Peters
2c3ab16f39 config: parse multiple touch configurations
Also temporary disable touch output mapping.
Will be restored later.
2024-01-22 21:50:18 +00:00
Jens Peters
9d64b56367 config: introduce touch config structure 2024-01-22 21:50:18 +00:00
Jens Peters
6def1319d1 input: move function to config
This function is only about rc, so fits better
in config.
2024-01-22 21:50:18 +00:00
Standreas
241fcb0bde Removed obsolete comment
"unshade" exists now.
2024-01-22 11:23:46 +01:00
Andrew J. Hesford
4181bb5335 resistance: support negative strengths to indicate attractive snapping 2024-01-21 16:10:50 -05:00
Andrew J. Hesford
57ea197e6c resistance: add window-edge resistance for interactive moves/resizes 2024-01-21 16:10:50 -05:00
Johan Malm
f73e9ded1c view: fix regression whereby cursor is not updated
...on view destruction because focus_change_notify() in seat.c changes
server->active_view so the logic introduced by 6c6e406 (which checks if
view =! active_view) is no longer right.

The glitches described in the commit below have not come back.
6c6e406507

Fixes #1393
2024-01-19 20:37:23 +00:00
Johan Malm
c066821046 string-helpers.c: add string_empty() 2024-01-19 20:00:37 +00:00
Simon Long
8c9be2f0d1 keyboard: set keyboard layout on reconfigure
If keyboard-layout-per-toplevel-window is used, reset the group (index)
for each window on --reconfigure whenever the keymap has changed.

Refactor to use a common configure function for reconfigure and
keyboard-group creation.

Co-authored-by: @johanmalm

Fixes #1407
2024-01-19 18:59:14 +00:00
Johan Malm
dfb6664906 Honour -c <file> on --reconfigure 2024-01-18 20:20:36 +00:00
Johan Malm
698c7ace07 config: support merging multiple config files
Add the -m|--merge-config command line option to iterate backwards over
XDG Base Dir paths and read config/theme files multiple times.

For example if both ~/.config/labwc/rc.xml and /etc/xdg/labwc/rc.xml
exist, the latter will be read first and then the former (if
--merge-config is enabled).

When $XDG_CONFIG_HOME is defined, make it replace (not augment)
$HOME/.config. Similarly, make $XDG_CONFIG_DIRS replace /etc/xdg when
defined.

XDG Base Dir Spec does not specify whether or not an application (or a
compositor!) should (a) define that only the file under the most important
base directory should be used, or (b) define rules for merging the
information from the different files.

ref: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html

In the case of labwc there is a use-case for both positions, just to be
clear, the default behaviour, described by position (a) above, does NOT
change.

This change affects the following config/theme files:
  - rc.xml
  - menu.xml
  - autostart
  - environment
  - themerc
  - themerc-override
  - Theme buttons, for example max.xbm

Instead of caching global config/theme directories, create lists of paths
(e.g.  '/home/foo/.config/labwc/rc.xml', '/etc/xdg/labwc/rc.xml', etc).
This creates more common parsing logic and just reversing the direction
of iteration and breaks early if config-merge is not wanted.

Enable better fallback for themes. For example if a particular theme does
not exist in $HOME/.local/share/themes, it will be searched for in
~/.themes/ and so on. This also applies to theme buttons which now
fallback on an individual basis.

Avoid using stat() in most situations and just go straight to fopen().

Fixes #1406
2024-01-18 20:20:36 +00:00
Johan Malm
d0aff49c81 button: save a few cycles by returning early
...and in preparation for the merge-config patch, avoid building
directory lists for empty filenames.
2024-01-18 20:20:36 +00:00
Andrew J. Hesford
4238d7fc33 view: assign output on surface creation instead of mapping...
...and notify the client of the preferred output scale when doing so.
This should allow clients to better determine an optimal size if they
are initially configured (unmapped) with zero size.

In particular, this fixes an issue with foot:

    https://codeberg.org/dnkl/foot/issues/1579
2024-01-17 21:07:33 +00:00