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