aboutsummaryrefslogtreecommitdiff
path: root/src/layout/mod.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2025-04-17 11:00:17 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2025-04-25 02:00:18 -0700
commitb20dd226c06d16633610bb91f18d02d8f54c5d90 (patch)
tree8bff220084abb9f9057a0a30f99314751f5eeb85 /src/layout/mod.rs
parentacb69c3b4df81ad6869603fda51bc3b0e6b8830c (diff)
downloadniri-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.rs22
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();