aboutsummaryrefslogtreecommitdiff
path: root/src/layout/workspace.rs
AgeCommit message (Collapse)Author
2024-12-30layout: Support fullscreen for auto-floating windowsIvan Molodetskikh
2024-12-30layout: Remember whether to unfullscreen back into floatingIvan Molodetskikh
2024-12-30layout: Move toggle_fullscreen() impl to WorkspaceIvan Molodetskikh
2024-12-30floating: Implement directional moveIvan Molodetskikh
2024-12-30floating: Implement center_window()Ivan Molodetskikh
2024-12-30floating: Implement directional focusIvan Molodetskikh
2024-12-30layout: Implement focus_right_or_first() genericallyIvan Molodetskikh
2024-12-30Stub out actions when floating is activeIvan Molodetskikh
Make sure they don't go to the unfocused scrolling layout at least.
2024-12-30floating: Implement smarter clamping for window locationIvan Molodetskikh
A small part of the window always remains on-screen regardless of the working area changes. Interactive move lets the user position the window anywhere; automatic actions like toggle-window-floating and dialog opening try to put the window fully on-screen. The size-fraction canonical floating window position remains unclamped, and clamping happens when recomputing the logical position.
2024-12-30Implement floating child stacking above parentsIvan Molodetskikh
2024-12-30Always honor min height in new window sizeIvan Molodetskikh
2024-12-30Honor min/max size in more places like initial configureIvan Molodetskikh
2024-12-30Initial WIP floating window implementationIvan Molodetskikh
2024-12-08layout: Return bool from activate_window()Ivan Molodetskikh
Avoid an extra has_window() call.
2024-12-01layout: Extract ScrollingSpaceIvan Molodetskikh
Leave the Workspace to do the workspace parts, and extract the scrolling parts into a new file. This is a pre-requisite for things like the floating layer (which will live in a workspace alongside the scrolling layer). As part of this huge refactor, I found and fixed at least these issues: - Wrong horizontal popup unconstraining for a smaller window in an always-centered column. - Wrong workspace switch in focus_up_or_right().
2024-12-01layout: Correct variable namesIvan Molodetskikh
2024-12-01layout: Use tiles_mut() in Workspace::clear_unmap_snapshot()Ivan Molodetskikh
2024-12-01layout: Extract Workspace::tiles()Ivan Molodetskikh
2024-11-29Implement empty-workspace-above-first (#745)FluxTape
* Implement empty-workspace-above-first option * add two failing tests * fix interactive_move_onto_empty_output_ewaf and interactive_move_onto_first_empty_workspace tests * Add two failing ewaf option toggle tests * Fix adding/removing first empty workspace on option toggle * Don't remove first empty workspace if focused * Stop workspace switch when enabling ewaf * layout/monitor: Offset workspace switch on adding workspace above * Fix some initial active workspace ids with ewaf * wiki: Document empty-workspace-above-first --------- Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2024-11-25Refactor animation timing to use lazy clocksIvan Molodetskikh
2024-11-25Refactor animations to take explicit current timeIvan Molodetskikh
2024-11-11Change expel-window-from-column to expel the bottom windowIvan Molodetskikh
This way, expel becomes symmetric with consume. This is also how it works in PaperWM. Though, in PaperWM if the expelled window was focused, it will remain focused, while in this commit it is never focused, making it the exact opposite of consume. Use consume-or-expel-window-right for the old expel behavior.
2024-11-02Follow window corner radius in insert hintIvan Molodetskikh
2024-11-02Add gradient support for the insert hintIvan Molodetskikh
Implement it via FocusRing which already handles SolidColor vs. Border render element.
2024-10-27Implement touch interactive resizeIvan Molodetskikh
2024-10-27Implement interactive window moveRasmus Eneman
2024-10-19layout: Update tile config in Column::add_tile_at()Ivan Molodetskikh
2024-10-18layout: Add missing active idx check before setting activate prev on removalIvan Molodetskikh
2024-10-17layout: Use remove_column_by_idx in remove_tile_by_idxIvan Molodetskikh
2024-10-17layout: Accept anim_config in remove_column_by_idxIvan Molodetskikh
2024-10-14layout: Return Tile + info upon removalIvan Molodetskikh
2024-10-12layout: Fix expel animation of the smaller window in columnIvan Molodetskikh
2024-10-12Implement ConsumeOrExpelWindow{Left,Right} by idIvan Molodetskikh
2024-10-12layout/workspace: Add add_tile_to_column()Ivan Molodetskikh
2024-10-11Support empty column in tile_offsetsIvan Molodetskikh
Will be needed for the new inserting tile code.
2024-10-10layout/workspace: Reduce code duplication in adding windowsIvan Molodetskikh
2024-10-10layout: Reduce field visibilityIvan Molodetskikh
The outside code isn't supposed to mess with the fields.
2024-10-05use `if let Some()` over `match` with `None => ()`sodiboo
2024-09-12Always clamp non-auto window height with >1 windows in columnIvan Molodetskikh
2024-09-12Update commentsIvan Molodetskikh
2024-09-12Add SwitchPresetWindowHeight by idIvan Molodetskikh
2024-09-12 Implement preset window heightsChristian Rieger
2024-09-06Fix set-window-height SetProportion scaleIvan Molodetskikh
2024-09-06Implement by-id window addressing in IPC and CLI, fix move-column-to-workspaceIvan Molodetskikh
This is a JSON-breaking change for the IPC actions that changed from unit variants to struct variants. Unfortunately, I couldn't find a way with serde to both preserve a single variant, and make it serialize to the old value when the new field is None. I don't think anyone is using these actions from JSON at the moment, so this breaking change is fine.
2024-09-05implement always_center_single_column layout optionelkowar
2024-09-04layout: Prevent view gesture snap beyond first/last columnIvan Molodetskikh
2024-09-04layout: Extract snap_points()Ivan Molodetskikh
2024-09-03Use libdisplay-info for make/model/serial parsing, implement throughoutIvan Molodetskikh
2024-09-01Implement by-id workspace action addressingIvan Molodetskikh
It's not added to clap because there's no convenient mutually-exclusive argument enum derive yet (to have either the current <REFERENCE> or an --id <ID>). It's not added to config parsing because I don't see how it could be useful there. As such, it's only accessible through raw IPC.
2024-09-01Change IdCounter to be backed by an AtomicU64Ivan Molodetskikh
Let's see if anyone complains.