Drew DeVault
cbd0c3ec40
Merge pull request #2367 from emersion/iterator-redesign
...
Refactor surface iterators
7 years ago
Brian Ashworth
b8efdeae29
Fix title textures on scale change
7 years ago
emersion
0ad865f0b7
Make output_surface_for_each_surface_iterator static
7 years ago
emersion
9951b2ec33
Remove unused output_from_wlr_output
7 years ago
emersion
fe0750fec1
Remove output_surface_for_each_surface from header
7 years ago
emersion
8d5cc8625c
Completely switch over to new iterators
7 years ago
emersion
e9d674cfd2
wip: redesign output_view_for_each_surface iterator
7 years ago
emersion
a0dd977617
wip: redesign output_layer_for_each_surface iterator
7 years ago
emersion
dbf6dd0dae
wip: redesign output_drag_icons_for_each_surface iterator
7 years ago
emersion
d2172bd331
wip: redesign output_unmanaged_for_each_surface iterator
7 years ago
Ryan Dwyer
27a20a4884
Allow containers to be fullscreen
7 years ago
Drew DeVault
53dbe2da4b
Merge pull request #2353 from emersion/render-opaque-overlay
...
Improve rendering with a fullscreen opaque overlay surface
7 years ago
Pascal Pascher
f95cb9a7c1
reverted includes of "sway/config.h" and replaced with "config.h" from meson build
7 years ago
emersion
0e79b2114c
Improve rendering with a fullscreen opaque overlay surface
...
The rendering code doesn't use the exclusive input surface at all
anymore to decide to skip rendering of shell surfaces. This fixes
a weird situation in which a client requests exclusive input but
isn't an overlay layer surface.
The renderer also renders all overlay surfaces in this situation,
not just one. This simplifies the code and fixes rendering when
there are more than one overlay surfaces (e.g. for a virtual
keyboard to type the lockscreen password).
7 years ago
Pascal Pascher
2bf893248a
style fixes, exclude sway/desctop/xwayland.c when enable_xwayland: false
7 years ago
Pascal Pascher
24ad1c3983
Added meson option "enable_xwayland" (default: true) to enable/disable xwayland support
7 years ago
Ryan Dwyer
f9491c9584
Fix damage issue when moving and resizing
7 years ago
Ryan Dwyer
2032f85d94
Simplify transactions by utilising a dirty flag on containers
...
This PR changes the way we handle transactions to a more simple method.
The new method is to mark containers as dirty from low level code
(eg. arranging, or container_destroy, and eventually seat_set_focus),
then call transaction_commit_dirty which picks up those containers and
runs them through a transaction. The old methods of using transactions
(arrange_and_commit, or creating one manually) are now no longer
possible.
The highest-level code (execute_command and view implementation
handlers) will call transaction_commit_dirty, so most other code just
needs to set containers as dirty. This is done by arranging, but can
also be done by calling container_set_dirty.
7 years ago
emersion
d88f1d2196
Fix output_has_opaque_lockscreen
7 years ago
emersion
63b4bf5000
Update for swaywm/wlroots#1126
7 years ago
emersion
f9625d1d56
Split renderer
7 years ago
Ryan Dwyer
0046eed969
Fix titles when container titles contain UTF-8 characters
...
The title and marks textures would have their height set from the
config's computed max font height, but the textures were not regenerated
when the config's max font height changed which made a gap appear.
Rather than making it regenerate the title textures every time the
config font height was changed, I've changed it to just make the
textures the height of the title itself and fill any gap when rendering.
Also, the title_width and marks_width variables have been renamed to
make it more obvious that they are in output-buffer-local coordinates.
Fixes #1936 .
7 years ago
Ryan Dwyer
464d4d5889
Translate surface by its geo when doing opaque box check
7 years ago
Ryan Dwyer
9480781229
Don't clear when using opaque lockscreen
7 years ago
Ryan Dwyer
3b842f4eed
Detect opaque lockscreen when using a solid color
7 years ago
Ryan Dwyer
f1fadef923
Use pixman_region32_contains_rectangle
7 years ago
Ryan Dwyer
839c3a5500
Use opaque region to determine if frame done should be sent
7 years ago
Ryan Dwyer
58befcf2cd
Don't send frame done to surfaces behind lockscreen
...
Also, when rendering, don't descend into the tree if the lockscreen is
active. Just render the lockscreen's surfaces.
7 years ago
emersion
51b215ad5c
Use wlr_surface.buffer_damage
7 years ago
Drew DeVault
d43500831a
Updates per wlroots#1076
7 years ago
Dominique Martinet
9ea4cc13a0
sway views: add helpers to get view and layer from wlr_surface
7 years ago
Ryan Dwyer
e396af853b
Merge remote-tracking branch 'upstream/master' into atomic
7 years ago
Rostislav Pehlivanov
0cc24dd9c8
Fix crash with stacking layout after f42bf0ad4
...
The "simple" rendering function only applies to tiled views.
7 years ago
Rostislav Pehlivanov
e0d0e8f840
Revert "Don't unmaximize floating views"
...
This reverts commit 97672295ed
.
7 years ago
Ryan Dwyer
3a6ed5110c
Render saved buffers with the surface's dimensions
7 years ago
Ryan Dwyer
a2fbb20a61
Merge remote-tracking branch 'upstream/master' into atomic
7 years ago
Dominique Martinet
6856866a61
layer_shell: order destroying before sway_output
...
Both sway_output and sway_layer_shell listen to wlr's output destroy event,
but sway_layer_shell needs to access into sway_output's data strucure and needs
to be destroyed first.
Resolve this by making sway_layer_shell listen to a new event that happens at
start of sway_output's destroy handler
7 years ago
Ryan Dwyer
834805f5e2
Fix crash when disconnecting output
...
We were freeing the sway_output immediately upon disconnect which left
a dangling pointer in the output's container. It then tried to use the
pointer when the container is freed.
We don't need to store the sway_output in an output's container which is
destroying, so the fix is to set the pointer to NULL and remove the use
in container_free.
Also added an arrange when the output is disconnected for good measure.
7 years ago
Ryan Dwyer
33e03cb277
Fix crash related to stacks and tabs
7 years ago
Ryan Dwyer
32b865e610
Fix crash when deleting last child in a tabbed or stacked container
...
There was no `current` child because the container was destroyed. This
makes it fall back to looking in the parent's current children list.
7 years ago
Ryan Dwyer
38398e2d77
Implement atomic layout updates for tree operations
...
This implements atomic layout updates for when views map, reparent or
unmap.
7 years ago
Ryan Dwyer
1c89f32533
Preserve buffers during transactions
...
* Also fix parts of the rendering where it was rendering the pending
state instead of current.
7 years ago
Ryan Dwyer
645bf446fa
Merge remote-tracking branch 'upstream/master' into atomic
7 years ago
emersion
088cae45c8
Update for swaywm/wlroots#1060
7 years ago
Ryan Dwyer
9e96cfd310
Merge remote-tracking branch 'upstream/master' into atomic
7 years ago
emersion
cfd02918c0
Render drag icons
7 years ago
emersion
88cd7616db
Fix compilation errors related to disabled outputs
7 years ago
Ryan Dwyer
bb66e6d578
Refactor everything that needs to arrange windows
...
* The arrange_foo functions are now replaced with arrange_and_commit, or
with manually created transactions and arrange_windows x2.
* The arrange functions are now only called from the highest level
functions rather than from both high level and low level functions.
* Due to the previous point, view_set_fullscreen_raw and
view_set_fullscreen are both merged into one function again.
* Floating and fullscreen are now working with transactions.
7 years ago
Ryan Dwyer
f9e6d703d2
Make main properties be the pending state
7 years ago
Ryan Dwyer
59c9488701
WIP: Atomic layout updates ground work
7 years ago
Brian Ashworth
e072fbc6d9
Switch output storing from list_t to wl_list
7 years ago
Brian Ashworth
a0bbe67076
Address emersions comments on output re-enabling
7 years ago
Brian Ashworth
a1b5b93d29
Store sway_outputs so that they can be reenabled
7 years ago
emersion
0f71547032
Merge pull request #2095 from emersion/fullscreen-damage-only-visible
...
Only send frame to visible surfaces when fullscreened
7 years ago
emersion
55b855d867
Add SWAY_DAMAGE_DEBUG
...
Setting it to "rerender" will always re-render everything
regardless of the damaged region. Setting it to "highlight" will
clear the screen and render only damaged regions.
7 years ago
emersion
34bdf25bb5
Only send frame to visible surfaces when fullscreened
7 years ago
emersion
51eee3aecc
Schedule a frame even if damage is empty
7 years ago
emersion
65845be802
Only send frame done to visible views
...
Also don't accumulate empty damage
7 years ago
Ryan Dwyer
02d385e06f
Use swayc rather than wlr_output when rendering
7 years ago
Ryan Dwyer
3281574fa3
Remove check for if floating view intersects output
7 years ago
Ryan Dwyer
7d2b33a458
Render floating views before top layer and unmanaged
7 years ago
Ryan Dwyer
e4e912ea91
Store swayc coordinates as layout-local
7 years ago
Ryan Dwyer
dc83b158e1
Fix issues with sticky containers and workspaces
...
* Attach sticky containers to new workspaces when switching
* Fire the close event *before* we start destroying the workspace to
prevent a crash
Because the sticky container now follows the visible workspace, this
simplifies the rendering and container_at logic.
7 years ago
Ryan Dwyer
754cb7944c
Respect view's border config for floating containers
7 years ago
Ryan Dwyer
aaba7642b3
Replace is_floating boolean with function
7 years ago
Ryan Dwyer
34f35f0bad
Use L_FLOATING instead of reapable boolean
7 years ago
Ryan Dwyer
1f2e399ade
Implement floating
7 years ago
Drew DeVault
71db8de4be
Render floating views
7 years ago
Brian Ashworth
205a1732cf
Force fullscreen views to be fully opaque
7 years ago
Ryan Dwyer
f6c3682c05
Use constants for titlebar dimensions
7 years ago
Ryan Dwyer
664169fbf1
Implement stacked layout
7 years ago
Ryan Dwyer
048b29527b
Pre-multiply alpha for tab decorations
7 years ago
Ryan Dwyer
90607dc329
Add left/right borders to tabs
7 years ago
Ryan Dwyer
5ab4930185
Fix tab border issues
7 years ago
Ryan Dwyer
efc07fb3d4
Don't track damage for views on inactive tabs
7 years ago
Ryan Dwyer
c08f9bf257
Implement tabbed layout
7 years ago
Brian Ashworth
750a497a8b
Pre-multiply alpha for non-textures
7 years ago
Konstantin Pospelov
fcc11f9771
Fix pixel bar below title
...
This commit changes how the left and right indents are calculated for the
title bottom pixel bar, so that it is displayed properly in case the left or
right border is hidden.
7 years ago
Ryan Dwyer
f0212d66ee
Update marks textures on output scale event
7 years ago
Ryan Dwyer
ebb0d051db
Fix many border opacity issues
7 years ago
Ryan Dwyer
0e2cc0af30
Implement show_marks
7 years ago
emersion
79e970d86e
Correctly clip title texture if necessary
7 years ago
Brian Ashworth
9ba0dca7ba
Merge branch 'master' into fix-1975
7 years ago
Brian Ashworth
77b42ec821
Always render top border for border normal
7 years ago
emersion
95a10dd4f3
Kill wl_shell
7 years ago
Brian Ashworth
6ff7c52736
Fix titles and detect edges for hide_edge_borders
7 years ago
Brian Ashworth
2adf23c2a3
Only count views for hide_edge_borders smart
7 years ago
Brian Ashworth
e3625d8f33
Count descendant views for hide_edge_borders smart
7 years ago
Brian Ashworth
3db7fc2bb2
Implement hide_edge_borders
7 years ago
Ryan Dwyer
83e314bf51
Highlight all child borders when using focus parent
7 years ago
emersion
44fcc06efd
Fix damage tracking on HiDPI
7 years ago
emersion
90614f3a63
Accumulate surface damage even if whole=true
7 years ago
emersion
bec80f1551
Damage borders when damaging view
7 years ago
emersion
98f7ee8f59
Render borders with damage
7 years ago
emersion
c8a9ea3903
Implement full damage tracking
7 years ago
Ryan Dwyer
4922d269b8
Fix titles on rotated outputs
...
If the output is rotated, the scissor box needs to be transformed in the
opposite rotation.
7 years ago
Ryan Dwyer
e83e5487be
Use scissor to render title texture
...
This allows the title's texture to always be the full width of the text,
and clipped at render time according to the desired width (eg. tabs...).
As an added bonus, the texture no longer needs to be updated when
containers are arranged.
7 years ago
Ryan Dwyer
b667298a0a
Render titles
7 years ago
Ryan Dwyer
daab8e3503
Support alpha in border colours
...
The alpha component is merged with the container's opacity.
Completes #1882 .
7 years ago
Ryan Dwyer
a19a511b90
Implement indicator border
7 years ago
Ryan Dwyer
d847ac1120
Scale borders according to output scale
7 years ago
Ryan Dwyer
e67f354333
Implement borders
...
Implements rendering of borders. Title text is still to do.
Implements the following configuration directives:
* client.focused
* client.focused_inactive
* client.unfocused
* client.urgent
* border
* default_border
7 years ago
Ryan Dwyer
167c2e1aa9
Refactor arrange_windows()
...
Replaces arrange_windows() with arrange_root(), arrange_output(),
arrange_workspace() and arrange_children_of().
Also makes fullscreen views save and restore their dimensions, which
allows it to preserve any custom resize and is also a requirement for
floating views once they are implemented.
7 years ago
Ryan Dwyer
4d2b3fc950
Render unmanaged xwayland views when an xwayland view is fullscreen
...
This makes Chromium and Firefox context menus appear when fullscreen.
7 years ago
Ryan Dwyer
6afccd07d9
Add TODO about rendering fullscreen views smaller than the output
7 years ago
Ryan Dwyer
bd67342bdc
Don't render top layer when fullscreen.
7 years ago
Ryan Dwyer
9715e38ca8
render_output(): When fullscreen, clear to black and don't render background
7 years ago
Ryan Dwyer
8d06b222f0
Fullscreen rendering and input fixes.
...
* Render background when using fullscreen, because transparency.
* Check that fullscreen surface allows input.
* Don't look for surfaces in top layer if there's a fullscreen view.
7 years ago
Ryan Dwyer
35ccdd67a8
More fullscreen fixes.
...
* Render fullscreen views without wlr function, which makes popups and
lockscreen work.
* Don't allow input events to surfaces behind fullscreen views.
* Use correct output dimensions (for rotated outputs).
7 years ago
Ryan Dwyer
a44d016e2b
Don't damage views if they're hidden by a fullscreen view.
7 years ago
Ryan Dwyer
c685ef081f
Create sway_workspace struct.
7 years ago
Ryan Dwyer
bfd5834f4c
Feedback for fullscreen.
7 years ago
Ryan Dwyer
52420cc24d
Implement fullscreen.
7 years ago
Drew DeVault
b12b848bdc
Merge pull request #1759 from emersion/output-send-frame-done
...
Don't send frame done immediately when rendering
7 years ago
emersion
8af0c2b000
Don't send frame done immediately when rendering
7 years ago
emersion
33b4f945ab
Fix inverted assertion
...
Seems like it doesn't work this way
7 years ago
Drew DeVault
c47b4d4edb
Merge pull request #1756 from emersion/output-damage
...
Fine-grained damage tracking
7 years ago
emersion
0c627918bb
Damage all surfaces when damaging whole container
7 years ago
emersion
58914822aa
Don't damage the whole output
7 years ago
emersion
e550e22c0b
Refactor rendering code
7 years ago
Drew DeVault
603e0e42c5
Add debug tree view
7 years ago
emersion
516f5454ad
Simplify damage tracking functions, use them in layer shell
7 years ago
emersion
641807d920
Handle unmanaged surfaces motion
7 years ago
emersion
d65d001aa5
Fix desktop_damage_whole_surface
7 years ago
emersion
076bedb85e
Add container_damage_whole
7 years ago
emersion
1c91d0c10f
Add damage tracking for xwayland unmanaged surfaces
7 years ago
emersion
44b8d30f52
Use new wlr_*_surface_at functions
7 years ago
emersion
8eff00f723
Remove unused SWAY_VIEW_TYPES
7 years ago
Tony Crisci
fc9398a42e
Implement opacity command
7 years ago
Tony Crisci
741e3959e3
Merge branch 'wlroots' into split-containers2
7 years ago
Tony Crisci
a001890fb8
move workspace create to workspace.c
7 years ago
emersion
c0554d23d3
Fix rendering with multiple outputs
7 years ago
Tony Crisci
481a8275c1
address feedback
7 years ago
Tony Crisci
cba258e16a
move output code out of the tree
7 years ago
Tony Crisci
09d448ea2d
unify container destroy functions
7 years ago
emersion
a4a241697a
Merge branch 'wlroots' into view-redesign
7 years ago
emersion
2f64ce86c4
Xwayland unmanaged views aren't views anymore
7 years ago
Tony Crisci
5e024278a6
Merge branch 'wlroots' into seat-fixes
7 years ago
Drew DeVault
b2d871cfe2
Partially implement move command
...
Works:
- move [container|window] to workspace <name>
- Note, this should be able to move C_CONTAINER but this is untested
- move [workspace] to output [left|right|up|down|<name>]
Not implemented yet:
- move [left|right|up|down]
- move scratchpad
- move position
7 years ago
Tony Crisci
0828c77251
rename input-manager functions
7 years ago
Tony Crisci
e677c5b204
rename seat functions
7 years ago
emersion
b2c2ee693b
Introduce common functions to create, map, unmap, destroy views
7 years ago
emersion
98b67e2399
Fix xwayland configure in set_size
7 years ago
emersion
0f7936735c
Fix unmanaged views rendering on all outputs
7 years ago
emersion
3a68c012a9
Remove debug, add explicit TODO
7 years ago
emersion
50219564c2
Fix white screen due to bad cast
7 years ago
emersion
a776ecbb86
Add lite damage tracking
...
This skips the renderer if nothing has changed, and renders
everything otherwise.
7 years ago
emersion
981827ca42
Cleanup and remove global renderer reference
7 years ago
Drew DeVault
00d450e554
Use output coords for layer surfaces
...
This will need to be more carefully thought out when we get the
output_layout working entirely.
7 years ago
Drew DeVault
f26ecd9f58
Merge remote-tracking branch 'origin/wlroots' into swaybar-layers
7 years ago
Tony Crisci
8f490d7d2d
Fix oversights from previous pull request
7 years ago
Tony Crisci
dc8c9fbeb6
Revert "Merge pull request #1653 from swaywm/revert-1647-refactor-tree"
...
This reverts commit 472e81f35d
, reversing
changes made to 6b7841b11f
.
7 years ago
Drew DeVault
d0c7f66e95
Revert "Refactor tree"
7 years ago
Drew DeVault
6b7841b11f
Merge pull request #1647 from acrisci/refactor-tree
...
Refactor tree
7 years ago
Tony Crisci
2778edef97
arrange windows
7 years ago
Drew DeVault
a76829f375
Some layer shell fixes
...
Based on the corresponding rootston changes
7 years ago
Scott Anderson
c8e7437b82
Clear buffer after beginning renderer
7 years ago
Tony Crisci
eca029f218
more renaming things
7 years ago
Tony Crisci
b90099b4b7
rename container functions
7 years ago
Tony Crisci
874f009866
move tree includes to their own directory
7 years ago
Drew DeVault
8d6bce02af
Address review feedback
7 years ago
Drew DeVault
68cfa7ef67
Render layer surfaces and respect exclusive zone
7 years ago
Drew DeVault
0c8a64942e
Add initial layer shell skeleton
7 years ago
Drew DeVault
cbb2e3308e
Update API to match latest wlroots
7 years ago
emersion
01beee5826
Update wlroots API
...
Breaking changes in wlr_xdg_shell_v6 and wlr_renderer have been
made upstream.
7 years ago
emersion
1004915796
Update rendering code for wlroots matrix redesign
7 years ago
Drew DeVault
4b781356a4
Fix wlr_render_with_matrix call
...
This takes an alpha parameter now.
7 years ago
Drew DeVault
265378270a
Revert "Multiple output coords by scale"
...
This reverts commit 94f8bdf081
.
7 years ago
Drew DeVault
94f8bdf081
Multiple output coords by scale
7 years ago
Tony Crisci
23e9f5dc35
use wl_container_of() in output destroy callback
7 years ago
Tony Crisci
316effd7b1
make handle_output_destroy() static
7 years ago
Tony Crisci
b88f06e70a
bugfix: get right layout box for rendering views
7 years ago
Tony Crisci
80927985fb
fix output rendering issue
7 years ago
Tony Crisci
7c089442c3
use box projection function
7 years ago
Tony Crisci
9510a20fcd
arrange windows after output add
7 years ago
Tony Crisci
083e11ac7c
fix build for latest api
7 years ago
Tony Crisci
c6cb87be19
output damage fix
7 years ago
Tony Crisci
7dfbf06de9
output destroy
7 years ago
Tony Crisci
93084c9cf8
remove old focus member
7 years ago
Tony Crisci
095ddb1561
fix build for output damage
7 years ago
Drew DeVault
b28602aa74
Implement workspaces
7 years ago
Tony Crisci
ddc49ede46
xwm handle map and unmap
7 years ago
Tony Crisci
83ddd2d9db
render override redirect
7 years ago
Tony Crisci
2ce1d8d6cd
render wl-shell and xwayland views
7 years ago
Tony Crisci
76ce629198
xdg-popups
7 years ago
Tony Crisci
4c8c9b29e4
render xdg surface
7 years ago
Dominique Martinet
67985e9031
sway: change all sway_log to wlr_log
7 years ago
Tony Crisci
9fa70ce426
Merge branch 'wlroots' into feature/input
7 years ago
emersion
ec2fd6e5c0
Handle output remove
7 years ago
emersion
a4619e98c4
Update output containers on output layout change
7 years ago
emersion
d293c42942
Update output container box in event handler
7 years ago
emersion
c7abb77f22
Listen to output layout change
7 years ago
emersion
f3d880b0ec
Add scale and transform events to sway_output
7 years ago
Tony Crisci
163edc5a90
sway input device
7 years ago
Tony Crisci
e69b052a6d
working pointer motion
7 years ago
Tony Crisci
9333a7eb53
working xcursor
7 years ago
Tony Crisci
9220225f1d
remove unused timespec_to_msec
7 years ago
Tony Crisci
31e44c01b4
send callbacks with send_frame_done
7 years ago
Tony Crisci
6993a76232
set mode on output
7 years ago
Drew DeVault
a57d462926
Fix rendering issues, wire up some xdg listeners
7 years ago