Commit Graph

1226 Commits

Author SHA1 Message Date
Isaac Freund
f597e7da63
seat: implement drag and drop 2020-09-14 20:11:25 +02:00
Isaac Freund
976a3ce73d
cursor: handle borderless views in move/resize 2020-09-08 18:54:57 +02:00
Isaac Freund
989e7aaeda
config: implement map-pointer command
This command takes a mode, modifiers, button/event name, and pointer
action as arguments. It stores these in the config data structure.

The currently available pointer actions are move-view and resize-view,
which replace the previously hard-coded functionality.

Closing the hovered view with middle click has temorarily been removed
until it is decided if we wish to make this another special pointer
action or perhaps allow running any arbitrary command (which would of
course include close).
2020-08-24 18:57:43 +02:00
Isaac Freund
fd8c5e6410
style: attach_mode() -> attachMode() 2020-08-24 11:50:38 +02:00
Isaac Freund
e92b6307d9
river-status: don't report destroying views 2020-08-22 17:17:57 +02:00
Isaac Freund
dd425a3e66
root: clean up initialization 2020-08-21 21:06:59 +02:00
Isaac Freund
0b2c992f4d
river-status: clean up initialization 2020-08-21 21:06:59 +02:00
Isaac Freund
997b151df2
output: clean up initialization 2020-08-21 21:06:59 +02:00
Isaac Freund
4a334829f3
config: handle alloc failure in Mapping init 2020-08-21 21:06:59 +02:00
Isaac Freund
c7c1934b70
Keyboard: clean up initialization 2020-08-21 21:06:59 +02:00
Isaac Freund
163fa47822
xdg-decoration: clean up initialization 2020-08-21 21:06:59 +02:00
Isaac Freund
5098553fb4
river-status: clean up initialization 2020-08-21 21:06:58 +02:00
Isaac Freund
a201ced77d
config: clean up initialization 2020-08-21 21:06:58 +02:00
Isaac Freund
71a751f1ad
seat: clean up initialization 2020-08-21 21:06:58 +02:00
Isaac Freund
37ea1bac36
layer-surface: clean up initialization 2020-08-21 16:53:04 +02:00
Isaac Freund
eb21e03b42
xdg-popup: clean up initialization 2020-08-21 16:51:09 +02:00
Isaac Freund
5cea3f68e3
xwayland: clean up initialization 2020-08-21 16:48:17 +02:00
Isaac Freund
1fbaaa55b3
xdg-toplevel: clean up initialization 2020-08-21 16:45:27 +02:00
Isaac Freund
283f3f8061
view: clean up initialization 2020-08-21 16:43:12 +02:00
Isaac Freund
7274761069 cursor: leave mode if target view is destroyed 2020-08-21 16:31:39 +02:00
Isaac Freund
db416eb119 view stack: rework iteration for flexibility
There is now a single iter() function which accepts a filter and context
allowing users of the api to filter the views in any arbitrary way. This
change allowed for a good amount of code cleanup, and this commit also
ensures that the correct properties are checked in each case, including
the new View.destroying field added in the previous commit. This fixes
at least one crash involving switching focus to a destroying view.
2020-08-21 16:31:39 +02:00
Isaac Freund
fa08d85c58 view: implement frame-perfect destroy
river's View objects may now outlive their wlroots counterparts so that
we can continue to render a destroyed view until the transaction is
completed.
2020-08-21 16:31:39 +02:00
Leon Henrik Plickat
59d6432332 Implement "attach-mode" 2020-08-18 11:00:51 +02:00
Isaac Freund
340bfbd7f1
xwayland: fix signed to unsigned int casting error 2020-08-13 13:47:14 +02:00
Isaac Freund
7de2edb623
seat: implement kde idle protocol 2020-08-13 12:22:32 +02:00
Isaac Freund
aabd85b028 layer-shell: improve configure handling
- don't send a new configure on commit if nothing has changed
- simplify code
2020-08-13 11:17:15 +02:00
Isaac Freund
7a6ac8eb6e seat: set focus before starting transactions
Focus was made double-buffered in 96a91fd. However, much of the code
still behaved as if focus was separate from the transaction system.
This commit completes the work started in 96a91fd and ensures that
focus is applied consistently in a single transaction.
2020-08-13 11:17:15 +02:00
Isaac Freund
bd99428766 view: handle setting fullscreen in configure() 2020-08-13 11:17:15 +02:00
Isaac Freund
2669a615b6 root: refactor transaction initiation
- require the caller to use Root.startTransaction() directly
- introduce View.applyPending() to unify logic
- introduce View.shouldTrackConfigure() to unify more logic
- update all callsites to intelligently rearrange only what is necessary
2020-08-13 11:17:15 +02:00
Isaac Freund
50d008adbb ci: run only on master branch 2020-08-11 22:38:30 +02:00
Leon Henrik Plickat
946e4f21ba Enforce minimum window size also for views with constraints 2020-08-10 22:15:09 +02:00
Leon Henrik Plickat
45a730cbd3 Fix crashing bug for window size smaller than 2 * (border width + gap size) 2020-08-10 19:26:13 +02:00
Isaac Freund
e66c8b0019
code: clean up cursor resize mode
- offset_{x,y} is consistent with delta_{x,y}
- no need to name the type, it's only referenced in one place
2020-08-07 21:36:28 +02:00
Isaac Freund
0c4e3295b1
cursor: implement implicit grabs
When a button is held down and the cursor leaves a surface, events now
continue to be sent to the client. This allows e.g. dragging a scroll
bar from outside the surface.
2020-08-07 13:54:58 +02:00
Isaac Freund
91052f7477
cursor: refactor mode handling 2020-08-07 12:08:58 +02:00
Isaac Freund
96a91fd2f7 view: double buffer focus, use counter not bool
- Double buffering focus state ensures that border color is kept in sync
with the transaction state of views in the layout.
- Using a counter instead of a bool will allow for proper handling of
multiple seats. This is done in the same commit to avoid more churn in
the future.
2020-08-03 18:54:18 +02:00
Isaac Freund
7d77160fe3
view: arrange on unmap if fullscreened from layout
We don't rearrange the layout on fullscreening a view that is part of
the layout since the fullscreened view hides the layout. This means that
if a non-floating fullscreen view is closed the layout needs to be
rearranged.
2020-08-01 20:03:32 +02:00
Isaac Freund
ef4efbcadf
view: fix xdg_toplevel fullscreen request handling 2020-08-01 19:56:34 +02:00
Isaac Freund
845fcad9e6
layout: use fork/execve instead of ChildProcess
This keeps things simpler, and we will need this control anyways in
order to enforce a timeout.
2020-08-01 18:37:06 +02:00
Isaac Freund
05557086e6
output: simplify layout code 2020-08-01 17:34:45 +02:00
Isaac Freund
56df9176b3
server: handle SIGINT/SIGTERM with wl_event_loop
This is cleaner than having a separate signal handler and should be more
consistent/reliable.
2020-08-01 17:27:49 +02:00
Isaac Freund
54b09c4ae9
server: use fork/execve for startup command
std.ChildProcess leaks an fd currently and is more complex than what we
need anyways.
2020-08-01 13:40:41 +02:00
Lennard Hofmann
3e17f12cbb doc: shorten riverctl’s synopsis
The set-option command got removed but was still present in SYNOPSIS,
which confused me. It is not the first time, we forgot to update it.
2020-08-01 12:36:52 +02:00
Isaac Freund
d2ebd5e4e2
view: remember floating dimesions
When a floating view is returned to the layout or made fullscreen, it
now saves the dimesions it had while floating and returns to that same
position/size if made to float again.
2020-07-31 20:22:37 +02:00
Isaac Freund
d6823fe3a0 cursor: handle xwayland views for move/resize 2020-07-31 17:06:26 +02:00
Isaac Freund
7a244092e5 view: sidestep transaction for float/fullscreen
Transactions are only useful when multiple views need to atomically
change size together. Float/fullscreen views are independant of the
layout and should bypass the transaction system.
2020-07-31 17:06:26 +02:00
Isaac Freund
ecef8c2dc4 cursor: forbid move/resize of fullscreen views 2020-07-31 17:06:26 +02:00
Isaac Freund
d87356c93a view: forbid mode change if cursor target
Making a floating view tiled during a resize breaks things badly.
2020-07-31 17:06:26 +02:00
Isaac Freund
9f3ee76e51 cursor: implement resize 2020-07-31 17:06:26 +02:00
Isaac Freund
ac3066d8fc
code: refactor and simplify cursor move mode 2020-07-28 16:17:16 +02:00