@@ -2319,6 +2319,108 @@ fn move_floating_pane_focus_with_mouse() {
2319
2319
assert_snapshot ! ( snapshot) ;
2320
2320
}
2321
2321
2322
+ #[ test]
2323
+ fn move_floating_pane_focus_to_last_pane ( ) {
2324
+ let size = Size {
2325
+ cols : 121 ,
2326
+ rows : 20 ,
2327
+ } ;
2328
+ let client_id = 1 ;
2329
+ let mut tab = create_new_tab ( size, ModeInfo :: default ( ) ) ;
2330
+ let new_pane_id_1 = PaneId :: Terminal ( 2 ) ;
2331
+ let new_pane_id_2 = PaneId :: Terminal ( 3 ) ;
2332
+ let new_pane_id_3 = PaneId :: Terminal ( 4 ) ;
2333
+ let new_pane_id_4 = PaneId :: Terminal ( 5 ) ;
2334
+ let new_pane_id_5 = PaneId :: Terminal ( 6 ) ;
2335
+ let mut output = Output :: default ( ) ;
2336
+ tab. toggle_floating_panes ( Some ( client_id) , None ) . unwrap ( ) ;
2337
+ tab. new_pane (
2338
+ new_pane_id_1,
2339
+ None ,
2340
+ None ,
2341
+ None ,
2342
+ None ,
2343
+ false ,
2344
+ true ,
2345
+ Some ( client_id) ,
2346
+ )
2347
+ . unwrap ( ) ;
2348
+ tab. new_pane (
2349
+ new_pane_id_2,
2350
+ None ,
2351
+ None ,
2352
+ None ,
2353
+ None ,
2354
+ false ,
2355
+ true ,
2356
+ Some ( client_id) ,
2357
+ )
2358
+ . unwrap ( ) ;
2359
+ tab. new_pane (
2360
+ new_pane_id_3,
2361
+ None ,
2362
+ None ,
2363
+ None ,
2364
+ None ,
2365
+ false ,
2366
+ true ,
2367
+ Some ( client_id) ,
2368
+ )
2369
+ . unwrap ( ) ;
2370
+ tab. new_pane (
2371
+ new_pane_id_4,
2372
+ None ,
2373
+ None ,
2374
+ None ,
2375
+ None ,
2376
+ false ,
2377
+ true ,
2378
+ Some ( client_id) ,
2379
+ )
2380
+ . unwrap ( ) ;
2381
+ tab. new_pane (
2382
+ new_pane_id_5,
2383
+ None ,
2384
+ None ,
2385
+ None ,
2386
+ None ,
2387
+ false ,
2388
+ true ,
2389
+ Some ( client_id) ,
2390
+ )
2391
+ . unwrap ( ) ;
2392
+ tab. handle_pty_bytes (
2393
+ 2 ,
2394
+ Vec :: from ( "\n \n \n I am scratch terminal" . as_bytes ( ) ) ,
2395
+ )
2396
+ . unwrap ( ) ;
2397
+ tab. handle_pty_bytes ( 3 , Vec :: from ( "\u{1b} #8" . as_bytes ( ) ) )
2398
+ . unwrap ( ) ;
2399
+ tab. handle_pty_bytes ( 4 , Vec :: from ( "\u{1b} #8" . as_bytes ( ) ) )
2400
+ . unwrap ( ) ;
2401
+ tab. handle_pty_bytes ( 5 , Vec :: from ( "\u{1b} #8" . as_bytes ( ) ) )
2402
+ . unwrap ( ) ;
2403
+ tab. handle_pty_bytes ( 6 , Vec :: from ( "\u{1b} #8" . as_bytes ( ) ) )
2404
+ . unwrap ( ) ;
2405
+ tab. move_focus_up ( client_id) . unwrap ( ) ;
2406
+ tab. focus_last_pane ( client_id) ;
2407
+ tab. render ( & mut output) . unwrap ( ) ;
2408
+ let ( snapshot, cursor_coordinates) = take_snapshot_and_cursor_position (
2409
+ output. serialize ( ) . unwrap ( ) . get ( & client_id) . unwrap ( ) ,
2410
+ size. rows ,
2411
+ size. cols ,
2412
+ Palette :: default ( ) ,
2413
+ ) ;
2414
+ assert_eq ! (
2415
+ cursor_coordinates,
2416
+ Some ( ( 5 , 5 ) ) ,
2417
+ "cursor coordinates moved back to the last pane below"
2418
+ ) ;
2419
+
2420
+ assert_snapshot ! ( snapshot) ;
2421
+ }
2422
+
2423
+
2322
2424
#[ test]
2323
2425
fn move_pane_focus_with_mouse_to_non_floating_pane ( ) {
2324
2426
let size = Size {
0 commit comments