Skip to content

Commit 54e76d5

Browse files
committed
shell: Don't consider animation geometry when remapping fullscreen surfaces
1 parent d63f1ab commit 54e76d5

File tree

1 file changed

+28
-34
lines changed

1 file changed

+28
-34
lines changed

src/shell/mod.rs

Lines changed: 28 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2419,7 +2419,6 @@ impl Shell {
24192419
&mut self,
24202420
surface: CosmicSurface,
24212421
state: Option<FullscreenRestoreState>,
2422-
original_geometry: Option<Rectangle<i32, Local>>,
24232422
loop_handle: &LoopHandle<'static, State>,
24242423
) {
24252424
let window = CosmicMapped::from(CosmicWindow::new(
@@ -2428,7 +2427,7 @@ impl Shell {
24282427
self.theme.clone(),
24292428
));
24302429

2431-
if let Some(FullscreenRestoreState::Sticky { output, .. }) = &state {
2430+
if let Some(FullscreenRestoreState::Sticky { output, state, .. }) = &state {
24322431
let output = output
24332432
.upgrade()
24342433
.unwrap_or_else(|| self.seats.last_active().active_output());
@@ -2441,8 +2440,8 @@ impl Shell {
24412440
.unwrap();
24422441
set.sticky_layer.map_internal(
24432442
window,
2444-
original_geometry.map(|rect| rect.loc),
2445-
original_geometry.map(|rect| rect.size.as_logical()),
2443+
Some(state.geometry.loc),
2444+
Some(state.geometry.size.as_logical()),
24462445
Some(set.output.geometry().to_local(&set.output)),
24472446
);
24482447
return;
@@ -2489,17 +2488,21 @@ impl Shell {
24892488
}
24902489
}
24912490
Some(FullscreenRestoreState::Floating {
2492-
state: FloatingRestoreData { was_maximized, .. },
2491+
state:
2492+
FloatingRestoreData {
2493+
was_maximized,
2494+
geometry,
2495+
..
2496+
},
24932497
..
24942498
}) => {
24952499
workspace.floating_layer.map_internal(
24962500
window.clone(),
2497-
original_geometry.map(|geo| geo.loc),
2498-
original_geometry.map(|geo| geo.size.as_logical()),
2501+
Some(geometry.loc),
2502+
Some(geometry.size.as_logical()),
24992503
Some(fullscreen_geometry),
25002504
);
25012505
if was_maximized {
2502-
let geometry = workspace.floating_layer.element_geometry(&window).unwrap();
25032506
let mut state = window.maximized_state.lock().unwrap();
25042507
*state = Some(MaximizedState {
25052508
original_geometry: geometry,
@@ -2657,12 +2660,11 @@ impl Shell {
26572660
let floating_exception = layout::has_floating_exception(&self.tiling_exceptions, &window);
26582661

26592662
if should_be_fullscreen {
2660-
if let Some((surface, state, geometry)) =
2661-
workspace.map_fullscreen(&window, &seat, None, None)
2663+
if let Some((surface, state, _)) = workspace.map_fullscreen(&window, &seat, None, None)
26622664
{
26632665
toplevel_leave_output(&surface, &workspace.output);
26642666
toplevel_leave_workspace(&surface, &workspace.handle);
2665-
self.remap_unfullscreened_window(surface, state, geometry, loop_handle);
2667+
self.remap_unfullscreened_window(surface, state, loop_handle);
26662668
}
26672669
if was_activated {
26682670
workspace_state.add_workspace_state(&workspace_handle, WState::Urgent);
@@ -3130,20 +3132,13 @@ impl Shell {
31303132
);
31313133
mapped.into()
31323134
} else if let WorkspaceRestoreData::Fullscreen(previous) = window_state {
3133-
if let Some((old_surface, previous_state, previous_geometry)) = to_workspace
3134-
.map_fullscreen(
3135-
window,
3136-
None,
3137-
previous.clone().map(|p| p.previous_state),
3138-
previous.map(|p| p.previous_geometry),
3139-
)
3140-
{
3141-
self.remap_unfullscreened_window(
3142-
old_surface,
3143-
previous_state,
3144-
previous_geometry,
3145-
evlh,
3146-
);
3135+
if let Some((old_surface, previous_state, _)) = to_workspace.map_fullscreen(
3136+
window,
3137+
None,
3138+
previous.clone().map(|p| p.previous_state),
3139+
previous.map(|p| p.previous_geometry),
3140+
) {
3141+
self.remap_unfullscreened_window(old_surface, previous_state, evlh);
31473142
}
31483143
window.clone().into()
31493144
} else {
@@ -3421,8 +3416,8 @@ impl Shell {
34213416
.find(|w| w.get_fullscreen().is_some_and(|s| s == surface));
34223417
if let Some(workspace) = maybe_fullscreen_workspace {
34233418
element_geo = Some(workspace.fullscreen_geometry().unwrap());
3424-
let (surface, state, original_geometry) = workspace.remove_fullscreen().unwrap();
3425-
self.remap_unfullscreened_window(surface, state, original_geometry, evlh);
3419+
let (surface, state, _) = workspace.remove_fullscreen().unwrap();
3420+
self.remap_unfullscreened_window(surface, state, evlh);
34263421
};
34273422

34283423
let old_mapped = self.element_for_surface(surface).cloned()?;
@@ -4060,11 +4055,10 @@ impl Shell {
40604055
window.mapped().unwrap().set_active(surface);
40614056
}
40624057
let from = minimize_rectangle(workspace.output(), &window.active_window());
4063-
if let Some((surface, restore, previous_geo)) = workspace.unminimize(window, from, seat)
4064-
{
4058+
if let Some((surface, restore, _)) = workspace.unminimize(window, from, seat) {
40654059
toplevel_leave_output(&surface, &workspace.output);
40664060
toplevel_leave_workspace(&surface, &workspace.handle);
4067-
self.remap_unfullscreened_window(surface, restore, previous_geo, loop_handle);
4061+
self.remap_unfullscreened_window(surface, restore, loop_handle);
40684062
}
40694063
}
40704064
}
@@ -4579,8 +4573,8 @@ impl Shell {
45794573
return None;
45804574
};
45814575

4582-
if let Some((old_fullscreen, restore, previous_geo)) = old_fullscreen {
4583-
self.remap_unfullscreened_window(old_fullscreen, restore, previous_geo, &loop_handle);
4576+
if let Some((old_fullscreen, restore, _)) = old_fullscreen {
4577+
self.remap_unfullscreened_window(old_fullscreen, restore, &loop_handle);
45844578
}
45854579

45864580
Some(KeyboardFocusTarget::Fullscreen(window))
@@ -4601,11 +4595,11 @@ impl Shell {
46014595
});
46024596

46034597
if let Some(workspace) = maybe_workspace {
4604-
let (old_fullscreen, restore, previous_geo) = workspace.remove_fullscreen().unwrap();
4598+
let (old_fullscreen, restore, _) = workspace.remove_fullscreen().unwrap();
46054599
toplevel_leave_output(&old_fullscreen, &workspace.output);
46064600
toplevel_leave_workspace(&old_fullscreen, &workspace.handle);
46074601

4608-
self.remap_unfullscreened_window(old_fullscreen, restore, previous_geo, loop_handle);
4602+
self.remap_unfullscreened_window(old_fullscreen, restore, loop_handle);
46094603

46104604
true
46114605
} else {

0 commit comments

Comments
 (0)