Tom Grushka
01c0cb020e
fix: a11y: magnifier: correct Centered/OnEdge focal-point math and refresh focal point at zoom-in
...
- I used AI to assist in research of the focal point computation formulae for OnEdge and Centered modes.
- I used the formulas found in [KDE's zoom magnifier](https://invent.kde.org/plasma/kwin/-/blob/master/src/plugins/zoom/zoom.cpp ) and converted them to Rust and the COSMIC focal point system.
- Remove unnecessary focal-point precomputation in `OutputZoomState::new`, because it is now updated on first zoom in anyway.
- Do focal point computation in Local coordinates in update_focal_point to eliminate local-global conversion confusion/ issues.
- ZoomMovement::OnEdge - single code path rewrite - old two-branch logic caused jumping and unpredictability at high zoom. Fixes [#2683 ](https://github.com/pop-os/cosmic-epoch/issues/2683 ), partially addresses [#2688 ](https://github.com/pop-os/cosmic-epoch/issues/2688 ).
- ZoomMovement::Centered - translation/clamp/invert - prevents "blow up" of calculation at zoom level > 2.0 that caused cursor to disappear off bottom right of screen. Fixes [#1503 ](https://github.com/pop-os/cosmic-comp/issues/1503 ).
- `is_level_change` - sets `previous_point` so that `animating_focal_point` interpolates instead of jumping. Still room for improvement (needs focal point recomputation per-frame during animation to prevent "boomerang" feel), but this is still an improvement over jumping.
- In `trigger_zoom`, call `update_focal_point` when `level > 1.0` - overlaps proposal in [#1859 ](https://github.com/pop-os/cosmic-comp/pull/1859 ) + the level gate to prevent stale focal point on zoom in. Fixes [#2511 ](https://github.com/pop-os/cosmic-comp/issues/2511 ) and [#1883 ](https://github.com/pop-os/cosmic-epoch/issues/1883 ). Partially addresses [#1420 ](https://github.com/pop-os/cosmic-comp/issues/1420 ) (item 1 only).
2026-07-13 13:08:45 +02:00
Victoria Brekenfeld
693d1ad775
shell/window: Fix radii for server-side decorations
2026-07-09 18:08:01 +02:00
Victoria Brekenfeld
1f48a5e866
shell/menu: Use new MenuColumn widget
2026-07-09 18:08:01 +02:00
Victoria Brekenfeld
f6cb4519a0
render/blur: Cache native texture type
2026-07-09 18:08:01 +02:00
Victoria Brekenfeld
361a2282c7
output: Add increasing output id
2026-07-09 18:08:01 +02:00
Victoria Brekenfeld
db06770a6b
element: Refactor remaining libcosmic elements for blur
2026-07-09 18:08:01 +02:00
Victoria Brekenfeld
6c76fdaa79
element/window/stack: Use new IcedRenderElement
2026-07-09 18:08:01 +02:00
Victoria Brekenfeld
ab9f13b36f
iced: Handle blur internally
2026-07-09 18:08:01 +02:00
Victoria Brekenfeld
5ee2fa911a
wayland: Support cosmic-corner-radius v2
2026-07-09 18:08:01 +02:00
Victoria Brekenfeld
55d57ddba2
chore: theme-v2 libcosmic update
2026-07-09 18:08:01 +02:00
Victoria Brekenfeld
de8b47839c
render: Make blur_strength configurable
2026-07-09 18:08:01 +02:00
Victoria Brekenfeld
eb41b076ed
render: Use NamespaceElements to fix blurred lower layer-shell surfaces
2026-07-09 18:08:01 +02:00
Victoria Brekenfeld
e4c0716951
element: Refactor element acquisition to be push based
2026-07-09 18:08:01 +02:00
Victoria Brekenfeld
178c6593dc
element: Introduce SurfaceRenderElement
2026-07-09 18:08:01 +02:00
Victoria Brekenfeld
8b990e5658
render: Merge FromGlesError into AsGlowRenderer
2026-07-09 18:08:01 +02:00
Victoria Brekenfeld
0ce7f11445
element/surface: Fix reported corner radius
2026-07-09 18:08:01 +02:00
Ian Douglas Scott
373a44d431
shell: Restore fullscreen to single-element stack
...
If a surface was previously a single-element stack, restore it normally
using the floating/tiling restore data, but map as a single element
stack instead of a plain window.
2026-07-07 17:46:23 -07:00
Ian Douglas Scott
98e1dd7f6b
shell: Also restore stack element on sticky layer to stack
2026-07-07 17:46:23 -07:00
Ian Douglas Scott
5c0c22988e
Don't unnecessarily use Option in WorkspaceRestoreData
...
Unless we expect to need this again in the future, it's best not to have
an `Option` here unnecessarily.
2026-07-07 17:46:23 -07:00
Ian Douglas Scott
9e6d46c17e
shell: Restore fullscreen surface to stack
...
Previously, a surface that was in a stack that is fullscreened would be
removed from the stack, and on unfullscreening, restored to the
floating/tiling layer as though it were a new window outside the stack.
Instead, if the stack still exists, add the window to it at the same
position it previously occupied.
2026-07-07 17:46:23 -07:00
Ian Douglas Scott
f765696834
Avoid unnecessarily unwrapping stack_ref() after is_stack()
...
In a lot of cases, matching on `stack_ref()` also works.
2026-07-07 17:46:23 -07:00
Ian Douglas Scott
26ee83aaa7
Implement Debug and comparison with CosmicMapped for CosmicMappedKey
2026-07-07 17:46:23 -07:00
Ericky Dos Santos
031fdc389a
kms: change from thread_local approach to wiring scanout node through function calls to detect scanout candidates
2026-07-06 11:26:22 -06:00
Ericky Dos Santos
012c77ec81
fix(kms): gate overlay scanout per-element by buffer GPU node
2026-07-06 11:26:22 -06:00
Tom Grushka
c5775d2010
change update_focal_point to use f64 to avoid rounding errors
2026-07-01 17:56:29 +02:00
Victoria Brekenfeld
ccc4f36065
chore: update smithay
2026-06-30 18:37:42 +02:00
Victoria Brekenfeld
f032e7dbd5
shell/focus: Order sticky windows before fullscreen windows
2026-06-18 18:41:27 +02:00
Sai Asish Y
aff506bb7b
fix(floating): allow remapping minimized windows
...
Signed-off-by: Sai Asish Y <say.apm35@gmail.com>
2026-06-16 14:39:53 -06:00
SAY-5
69bb35e336
floating: don't panic if window disappears mid-unminimize
...
Signed-off-by: SAY-5 <say.apm35@gmail.com>
2026-06-16 14:39:53 -06:00
Victoria Brekenfeld
836ccbaa0b
shell/stack: Cleanup previous_index on remove
2026-06-16 13:05:39 -04:00
Robin Nehls
db0b1afeb5
feat: allow naming pinned workspaces
2026-06-15 23:11:31 +02:00
Joseph Buckingham
52b3f930a8
fix: debug build pinning panic
2026-06-12 11:45:59 -06:00
Ilia Malanin
31f317d16b
fix: skip dead windows in floating set_output
2026-06-12 13:08:14 +02:00
Hojjat
0312f9a201
fix: draw the focused window border for the current window only
2026-06-09 23:21:26 -04:00
Ian Douglas Scott
651877e622
image-copy: Adjust cursor position for subsurface offset
...
The `themed_window` example of `smithay-client-toolkit` is a good test
for this.
2026-06-09 10:42:48 -07:00
Ian Douglas Scott
84d2a9d297
shell: Fix definition of surface_tree_offset()
...
Using `with_surface_tree_downward()` is wrong because it will traverse
other branches of the surface tree than the one containing `surface`,
and add their offsets.
It's simple enough to instead walk up the surface tree.
2026-06-09 10:42:48 -07:00
Ian Douglas Scott
7d0d374fd8
image-copy: Adjust toplevel capture coordinate for window geometry
2026-06-09 10:42:48 -07:00
Ian Douglas Scott
7a50625e78
image-copy: Fix cursor pos for toplevels with SSD
2026-06-09 10:42:48 -07:00
Ian Douglas Scott
8aea6cc158
image-copy: Function for duplicated toplevel cursor enter/motion code
...
Deduplicate this before making it more complicated.
Also allows early returns to avoid deep nesting. And avoid duplicating
calculations here for multiple sessions (though normally there won't be
multiple capture sessions of same toplevel with cursor metadata,
probably).
2026-06-09 10:42:48 -07:00
Hojjat
51dd3bc66f
fix: pass the full window size to xwayland
2026-06-09 10:42:22 -07:00
Ian Douglas Scott
4eaaf4f55c
dbus: Refactor to share DBus connections
...
We should avoid creating more than one session connection or more than
one system connection. We should also ideally avoid blocking the main
thread.
For now this still uses blocking in a couple places, but wrapping async
code (which is how `zbus::blocking` is implemented anyway).
This moves the `NameOwners` creation out of `A11yKeyboardMonitorState`,
so it can be shared with other things. We will likely want that for
https://github.com/pop-os/cosmic-comp/pull/465 to define a secured
protocol to pass an fd to the portal, and potentially any other
sensitive DBus protocols implemented by the compositor.
2026-06-08 19:03:50 +02:00
Hojjat Abdollahi
28ef6bdbc8
feat: support multiple fullscreen windows per workspace
2026-06-02 17:48:33 +02:00
Ian Douglas Scott
9f28a764a7
chore: update smithay
...
Includes the fix in https://github.com/Smithay/smithay/pull/2038 ,
which helps addresses a regression in controller input for Steam games.
2026-06-01 07:52:42 -07:00
Skygrango
203cad8cbd
shell: disable WindowUI detection if constraint is active
2026-06-01 07:52:42 -07:00
Skygrango
208c2128cd
wayland: implement new_constraint, remove_constraint and cursor_position_hint for PointerConstraintsHandler
...
new_constraint: check if the surface has pointer focus, keyboard focus, and if the pointer is within toplevel geometry or constraint region. If these conditions are met, then enable the constraint.
remove_constraint: apply last cursor position hint that saved in seat.
cursor_position_hint: save the cursor position hints provided by the client to the seat.
2026-06-01 07:52:42 -07:00
Skygrango
81066d437a
shell: remove constraint when target changed
2026-06-01 07:52:42 -07:00
Skygrango
e75c9c0c48
shell: implement surface_geometry_offset_from_toplevel for WorkspaceSet
2026-06-01 07:52:42 -07:00
Skygrango
d829ec3815
shell: implement has_surface for KeyboardFocusTarget
2026-06-01 07:52:42 -07:00
Skygrango
32b54cc31f
shell: implement surface_offset and surface_tree_offset
2026-06-01 07:52:42 -07:00
Levi Portenier
8450e89de4
Merge pull request #2381 from dra11y/fix-magnifier-scroll
...
fix(magnifier): smooth mouse wheel zoom and respect natural scroll direction
2026-05-20 11:39:42 -06:00