@@ -2420,7 +2420,7 @@ impl Shell {
24202420 surface : CosmicSurface ,
24212421 state : Option < FullscreenRestoreState > ,
24222422 loop_handle : & LoopHandle < ' static , State > ,
2423- ) {
2423+ ) -> CosmicMapped {
24242424 let window = CosmicMapped :: from ( CosmicWindow :: new (
24252425 surface,
24262426 loop_handle. clone ( ) ,
@@ -2439,12 +2439,12 @@ impl Shell {
24392439 . or_else ( || self . workspaces . backup_set . as_mut ( ) )
24402440 . unwrap ( ) ;
24412441 set. sticky_layer . map_internal (
2442- window,
2442+ window. clone ( ) ,
24432443 Some ( state. geometry . loc ) ,
24442444 Some ( state. geometry . size . as_logical ( ) ) ,
24452445 Some ( set. output . geometry ( ) . to_local ( & set. output ) ) ,
24462446 ) ;
2447- return ;
2447+ return window ;
24482448 }
24492449
24502450 let seat = self . seats . last_active ( ) ;
@@ -2473,14 +2473,14 @@ impl Shell {
24732473
24742474 if workspace. tiling_enabled {
24752475 workspace. tiling_layer . remap (
2476- window,
2476+ window. clone ( ) ,
24772477 Some ( fullscreen_geometry) ,
24782478 None ,
24792479 Some ( workspace. focus_stack . get ( seat) . iter ( ) ) ,
24802480 ) ;
24812481 } else {
24822482 workspace. floating_layer . map_internal (
2483- window,
2483+ window. clone ( ) ,
24842484 None ,
24852485 None ,
24862486 Some ( fullscreen_geometry) ,
@@ -2509,9 +2509,11 @@ impl Shell {
25092509 original_layer : ManagedLayer :: Floating ,
25102510 } ) ;
25112511 std:: mem:: drop ( state) ;
2512- workspace
2513- . floating_layer
2514- . map_maximized ( window, fullscreen_geometry, true ) ;
2512+ workspace. floating_layer . map_maximized (
2513+ window. clone ( ) ,
2514+ fullscreen_geometry,
2515+ true ,
2516+ ) ;
25152517 }
25162518 }
25172519 Some ( FullscreenRestoreState :: Tiling {
@@ -2539,9 +2541,11 @@ impl Shell {
25392541 original_layer : ManagedLayer :: Tiling ,
25402542 } ) ;
25412543 std:: mem:: drop ( state) ;
2542- workspace
2543- . floating_layer
2544- . map_maximized ( window, fullscreen_geometry, true ) ;
2544+ workspace. floating_layer . map_maximized (
2545+ window. clone ( ) ,
2546+ fullscreen_geometry,
2547+ true ,
2548+ ) ;
25452549 }
25462550 } else {
25472551 workspace. floating_layer . map_internal (
@@ -2559,14 +2563,18 @@ impl Shell {
25592563 original_layer : ManagedLayer :: Floating ,
25602564 } ) ;
25612565 std:: mem:: drop ( state) ;
2562- workspace
2563- . floating_layer
2564- . map_maximized ( window, fullscreen_geometry, true ) ;
2566+ workspace. floating_layer . map_maximized (
2567+ window. clone ( ) ,
2568+ fullscreen_geometry,
2569+ true ,
2570+ ) ;
25652571 }
25662572 }
25672573 }
25682574 Some ( FullscreenRestoreState :: Sticky { .. } ) => unreachable ! ( ) ,
25692575 }
2576+
2577+ window
25702578 }
25712579
25722580 #[ must_use]
@@ -4596,7 +4604,7 @@ impl Shell {
45964604 & mut self ,
45974605 surface : & S ,
45984606 loop_handle : & LoopHandle < ' static , State > ,
4599- ) -> bool
4607+ ) -> Option < KeyboardFocusTarget >
46004608 where
46014609 CosmicSurface : PartialEq < S > ,
46024610 {
@@ -4611,11 +4619,10 @@ impl Shell {
46114619 toplevel_leave_output ( & old_fullscreen, & workspace. output ) ;
46124620 toplevel_leave_workspace ( & old_fullscreen, & workspace. handle ) ;
46134621
4614- self . remap_unfullscreened_window ( old_fullscreen, restore, loop_handle) ;
4615-
4616- true
4622+ let window = self . remap_unfullscreened_window ( old_fullscreen, restore, loop_handle) ;
4623+ Some ( KeyboardFocusTarget :: Element ( window) )
46174624 } else {
4618- false
4625+ None
46194626 }
46204627 }
46214628
0 commit comments