aboutsummaryrefslogtreecommitdiff
path: root/src/layout/scrolling.rs
AgeCommit message (Collapse)Author
2025-11-24layout/tests: Amend check for window-rule testsIvan Molodetskikh
This check doesn't handle tabbed columns properly (it should find and take the fixed height tile's height); for now just gate it on is_tabbed.
2025-10-31layout: Find preset width for new columnsIvan Molodetskikh
Fixes first Mod+R doing nothing on windows like non-tiled foot.
2025-10-15layout: Make resizing actions unmaximizeIvan Molodetskikh
I feel this is more intuitive compared to them doing nothing. True maximize is kinda similar to full-width in spirit, so make the actions behave the same.
2025-10-15Implement maximize-to-edges (true Wayland maximize)Ivan Molodetskikh
2025-10-02config: Add merging for GesturesIvan Molodetskikh
2025-10-02layout: Store Layout directly in OptionsIvan Molodetskikh
2025-10-02config: Split Layout from LayoutPartIvan Molodetskikh
2025-10-02config: Replace resolve_against with MergeWithIvan Molodetskikh
2025-09-17layout/scrolling: Remove more redundant animate argsIvan Molodetskikh
These were redundant before too.
2025-09-17layout/scrolling: Remove now-redundant animate argIvan Molodetskikh
2025-09-17layout/tile: Animate un/fullscreen resizeIvan Molodetskikh
This turned out to require quite a few changes. We keep track of the tile resize animation progress separately now, in order to provide a resizing black fullscreen backdrop for non-resizable windows. The window is always rendered in the middle of the tile, which once again aids with the resizing black fullscreen backdrop. The backdrop itself will fade in from transparency so that it's less jarring. The resize animation now keeps track of the fullscreen progress to deal with the case where an unfullscreen resize is interrupted by another non-fullscreen resize. In this case, the fullscreen progress continues animating to avoid sudden disappearance of the fullscreen backdrop. Some things like border visibility switch to this fullscreen progress once again to avoid jarring appearance/disappearance. The border radius animates in accordance with the fullscreen progress to match the visuals.
2025-09-17layout/scrolling: Animate tiles_origin changing on un/fullscreenIvan Molodetskikh
2025-09-17layout/scrolling: Track pending vs. current fullscreen for ColumnsIvan Molodetskikh
We already did that for Tiles, but for Columns we only tracked what was effectively pending fullscreen. We used it in several places where the current fullscreen should've been used instead, like the tile origin or the view offset. This commit splits the two and makes every place use the right one. Fixes things like tiles briefly appearing at y=0 between issuing the fullscreen command and the tile committing in response to the fullscreen configure.
2025-09-17layout/scrolling: Store view_offset_before_fullscreen when column actually ↵Ivan Molodetskikh
goes fullscreen Simplifies the handling and correctly saves/restores view offset for clients that are slow to fullscreen, as can be seen from the fixed test.
2025-08-29Add cycle back feature for presets of column/window width/height.Said Kadrioski
2025-08-27Fix typosIvan Molodetskikh
2025-08-16niri-ipc: Add window positions and sizes (#1265)yrkv
* Add window sizes and positions to the IPC * basic fixes * report window_loc instead of window pos * clean ups * make scrolling indices 1-based * add printing to niri msg windows * don't include render offset in floating tile pos --------- Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-08-14layout: Offset ongoing column X move anims for non-animated resizesIvan Molodetskikh
2025-08-14layout/scrolling: Normalize column X move anim from 1 to 0Ivan Molodetskikh
Will be needed for offsetting to fix the resize cancel issue.
2025-08-14layout: Offset Y animations for non-animated resizesIvan Molodetskikh
2025-08-14layout: Remove by-ref animation_snapshot() getterIvan Molodetskikh
It was used in only one place, and that place was due for an update to use the cached data.
2025-06-13layout/scrolling: Take unfullscreen view offset unconditionallyIvan Molodetskikh
It might get set and unset all while the view is frozen with a gesture.
2025-06-11Add deactivate-unfocused-windows debug flag (#1706)sashomasho
* force xdg deactivation on invisable workspaces This debug option provides a workaround for many Chromium-based chat applications that fail to show notifications when they're active in a workspace that's not currently visible and don't have keyboard focus Signed-off-by: Alex Yosifov <sashomasho@gmail.com> * fixes --------- Signed-off-by: Alex Yosifov <sashomasho@gmail.com> Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-06-09layout/scrolling: Take parent area into account for popup unconstrainingIvan Molodetskikh
2025-06-09layout/scrolling: Store parent_area in ScrollingSpaceIvan Molodetskikh
2025-06-09layout/scrolling: Inline popup_target_rect up to ScrollingSpaceIvan Molodetskikh
2025-05-12Add center-visible-columns actionIvan Molodetskikh
2025-05-10Add urgent color support to tab indicatorsIvan Molodetskikh
2025-05-01layout/scrolling: Update view offset on config updateIvan Molodetskikh
Fix always-centering not applied right away. No other changes intended.
2025-04-25Implement DnD hold to activate window or workspaceIvan Molodetskikh
2025-04-25layout/scrolling: Support view offset anim during gestureIvan Molodetskikh
Brings back moving the newly active window into focus upon interactive move dragging out.
2025-04-25layout: Move insert hint from ScrollingSpace to MonitorIvan Molodetskikh
2025-04-25Remove cancellation from swipe gesturesIvan Molodetskikh
It only worked for workspace switch, and even there it was more confusing than helpful.
2025-04-17layout: Remove width and is_full_width from InsertHintIvan Molodetskikh
They were unused.
2025-04-17layout: Don't pass scale to render unnecessarilyIvan Molodetskikh
These parts of the layout already know their scale.
2025-04-10layout: Take into account idle time between last gesture event and endIvan Molodetskikh
Fixes cases like: do a quick movement with mouse, then hold it in-place for a while (no events generated), then release the gesture (it uses all that built-up speed). This also happens with DnD scroll and makes it go further than intended.
2025-04-03layout/scrolling: Use slice::fill()Ivan Molodetskikh
Fix new Clippy warning.
2025-03-31layout: Reset unfullscreen view offset when starting interactive resizeIvan Molodetskikh
2025-03-22layout: Reset unfullscreen view offset when removing windowIvan Molodetskikh
Another old bug found by randomized tests after I expanded the testing mock window.
2025-03-17layout/tile: Don't take fullscreen into account in min/max sizeIvan Molodetskikh
They are used strictly for non-fullscreen size computation.
2025-03-17Refactor request_fullscreen() to be an argument on request_size()Ivan Molodetskikh
2025-03-14Add move-column-to-index actionDuncan Overbruck
2025-03-14Add focus-column (by index) actionDuncan Overbruck
2025-03-14layout: Preserve previous view offset on consume-leftIvan Molodetskikh
2025-02-18Don't snap after DnD scroll if view position didn't changeIvan Molodetskikh
Otherwise, any DnD breaks temporarily centered columns.
2025-02-17Take tab indicators into account in expand-column-to-available-widthIvan Molodetskikh
2025-02-17Use toggle_full_width() for expand-column-to-available-width edge caseIvan Molodetskikh
2025-02-17Fix expand-column-to-available-width for always-centerIvan Molodetskikh
2025-02-17Implement expand-column-to-available-widthIvan Molodetskikh
2025-02-16Make DnD edge view scroll configurableIvan Molodetskikh