diff options
| author | Rasmus Eneman <rasmus@eneman.eu> | 2024-07-15 15:51:48 +0200 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-10-27 23:07:39 -0700 |
| commit | e887ee93a30390b641bf647d694a1424f7ce4592 (patch) | |
| tree | 94a76c90c2433ad3a0d92015d7ca6ba569ab2979 /src/niri.rs | |
| parent | d640e8515899e552b845cf8f901ebeb126bb12a5 (diff) | |
| download | niri-e887ee93a30390b641bf647d694a1424f7ce4592.tar.gz niri-e887ee93a30390b641bf647d694a1424f7ce4592.tar.bz2 niri-e887ee93a30390b641bf647d694a1424f7ce4592.zip | |
Implement interactive window move
Diffstat (limited to 'src/niri.rs')
| -rw-r--r-- | src/niri.rs | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/niri.rs b/src/niri.rs index bb02255d..851bb25a 100644 --- a/src/niri.rs +++ b/src/niri.rs @@ -116,6 +116,7 @@ use crate::input::{ apply_libinput_settings, mods_with_finger_scroll_binds, mods_with_wheel_binds, TabletData, }; use crate::ipc::server::IpcServer; +use crate::layout::tile::TileRenderElement; use crate::layout::workspace::WorkspaceId; use crate::layout::{Layout, LayoutElement as _, MonitorRenderElement}; use crate::protocols::foreign_toplevel::{self, ForeignToplevelManagerState}; @@ -3076,6 +3077,10 @@ impl Niri { // Get monitor elements. let mon = self.layout.monitor_for_output(output).unwrap(); let monitor_elements: Vec<_> = mon.render_elements(renderer, target).collect(); + let float_elements: Vec<_> = self + .layout + .render_floating_for_output(renderer, output, target) + .collect(); // Get layer-shell elements. let layer_map = layer_map_for_output(output); @@ -3106,10 +3111,12 @@ impl Niri { // Then the regular monitor elements and the top layer in varying order. if mon.render_above_top_layer() { + elements.extend(float_elements.into_iter().map(OutputRenderElements::from)); elements.extend(monitor_elements.into_iter().map(OutputRenderElements::from)); extend_from_layer(&mut elements, Layer::Top); } else { extend_from_layer(&mut elements, Layer::Top); + elements.extend(float_elements.into_iter().map(OutputRenderElements::from)); elements.extend(monitor_elements.into_iter().map(OutputRenderElements::from)); } @@ -3151,11 +3158,7 @@ impl Niri { } } - state.unfinished_animations_remain = self - .layout - .monitor_for_output(output) - .unwrap() - .are_animations_ongoing(); + state.unfinished_animations_remain = self.layout.are_animations_ongoing(Some(output)); self.config_error_notification .advance_animations(target_presentation_time); @@ -4797,6 +4800,7 @@ impl ClientData for ClientState { niri_render_elements! { OutputRenderElements<R> => { Monitor = MonitorRenderElement<R>, + Tile = TileRenderElement<R>, Wayland = WaylandSurfaceRenderElement<R>, NamedPointer = MemoryRenderBufferRenderElement<R>, SolidColor = SolidColorRenderElement, |
