diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2025-04-17 11:00:17 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2025-04-25 02:00:18 -0700 |
| commit | b20dd226c06d16633610bb91f18d02d8f54c5d90 (patch) | |
| tree | 8bff220084abb9f9057a0a30f99314751f5eeb85 /src/layout/mod.rs | |
| parent | acb69c3b4df81ad6869603fda51bc3b0e6b8830c (diff) | |
| download | niri-b20dd226c06d16633610bb91f18d02d8f54c5d90.tar.gz niri-b20dd226c06d16633610bb91f18d02d8f54c5d90.tar.bz2 niri-b20dd226c06d16633610bb91f18d02d8f54c5d90.zip | |
layout: Move insert hint from ScrollingSpace to Monitor
Diffstat (limited to 'src/layout/mod.rs')
| -rw-r--r-- | src/layout/mod.rs | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/layout/mod.rs b/src/layout/mod.rs index 3cdcdc82..d4de5693 100644 --- a/src/layout/mod.rs +++ b/src/layout/mod.rs @@ -37,13 +37,13 @@ use std::mem; use std::rc::Rc; use std::time::Duration; -use monitor::MonitorAddWindowTarget; +use monitor::{InsertHint, InsertPosition, MonitorAddWindowTarget}; use niri_config::{ CenterFocusedColumn, Config, CornerRadius, FloatOrInt, PresetSize, Struts, Workspace as WorkspaceConfig, WorkspaceReference, }; use niri_ipc::{ColumnDisplay, PositionChange, SizeChange}; -use scrolling::{Column, ColumnWidth, InsertHint, InsertPosition}; +use scrolling::{Column, ColumnWidth}; use smithay::backend::renderer::element::surface::WaylandSurfaceRenderElement; use smithay::backend::renderer::gles::{GlesRenderer, GlesTexture}; use smithay::output::{self, Output}; @@ -2756,9 +2756,10 @@ impl<W: LayoutElement> Layout<W> { fn update_insert_hint(&mut self, output: Option<&Output>) { let _span = tracy_client::span!("Layout::update_insert_hint"); - let _span = tracy_client::span!("Layout::update_insert_hint::clear"); - for ws in self.workspaces_mut() { - ws.clear_insert_hint(); + if let MonitorSet::Normal { monitors, .. } = &mut self.monitor_set { + for mon in monitors { + mon.insert_hint = None; + } } if !matches!(self.interactive_move, Some(InteractiveMoveState::Moving(_))) { @@ -2789,7 +2790,8 @@ impl<W: LayoutElement> Layout<W> { .find(|ws| ws.id() == ws_id) .unwrap(); - let position = ws.get_insert_position(move_.pointer_pos_within_output - geo.loc); + let pos_within_workspace = move_.pointer_pos_within_output - geo.loc; + let position = ws.scrolling_insert_position(pos_within_workspace); let rules = move_.tile.window().rules(); let border_width = move_.tile.effective_border_width().unwrap_or(0.); @@ -2799,7 +2801,8 @@ impl<W: LayoutElement> Layout<W> { radius.expanded_by(border_width as f32) }); - ws.set_insert_hint(InsertHint { + mon.insert_hint = Some(InsertHint { + workspace: ws_id, position, corner_radius, }); @@ -4007,8 +4010,9 @@ impl<W: LayoutElement> Layout<W> { let position = if move_.is_floating { InsertPosition::Floating } else { + let pos_within_workspace = move_.pointer_pos_within_output - ws_geo.loc; let ws = &mut mon.workspaces[ws_idx]; - ws.get_insert_position(move_.pointer_pos_within_output - ws_geo.loc) + ws.scrolling_insert_position(pos_within_workspace) }; (mon, ws_idx, position, ws_geo.loc) @@ -4020,7 +4024,7 @@ impl<W: LayoutElement> Layout<W> { let position = if move_.is_floating { InsertPosition::Floating } else { - ws.get_insert_position(Point::from((0., 0.))) + ws.scrolling_insert_position(Point::from((0., 0.))) }; let ws_id = ws.id(); |
