@@ -381,7 +381,6 @@ impl LayoutView {
381
381
self . call_on_md_views ( move |v| v. resize ( & width, & view_height) ) ;
382
382
}
383
383
384
- // TODO separate out resizing | relayout | refocus; these are separate
385
384
// concerns and should have their own methods of invalidation
386
385
fn relayout ( & mut self ) {
387
386
match self . layout {
@@ -406,25 +405,7 @@ impl LayoutView {
406
405
v. set_width ( & SizeConstraint :: Full ) ;
407
406
v. set_take_focus ( true ) ;
408
407
} ) ;
409
- let name = Self :: xy_to_name ( self . get_focused_index ( ) ) ;
410
- if name == NAME_QUESTION_LIST || name == NAME_QUESTION_VIEW {
411
- self . view
412
- . call_on_name ( NAME_QUESTION_LIST , |v : & mut ListView | {
413
- v. unhide ( ) ;
414
- } ) ;
415
- self . view
416
- . call_on_name ( NAME_QUESTION_VIEW , |v : & mut MdView | {
417
- v. unhide ( ) ;
418
- } ) ;
419
- } else {
420
- self . view
421
- . call_on_name ( NAME_ANSWER_LIST , |v : & mut ListView | {
422
- v. unhide ( ) ;
423
- } ) ;
424
- self . view . call_on_name ( NAME_ANSWER_VIEW , |v : & mut MdView | {
425
- v. unhide ( ) ;
426
- } ) ;
427
- }
408
+ self . refocus ( ) ;
428
409
}
429
410
Layout :: FullScreen => {
430
411
self . call_on_md_views ( |v| {
@@ -437,17 +418,44 @@ impl LayoutView {
437
418
v. hide ( ) ;
438
419
v. resize ( & SizeConstraint :: Full , & SizeConstraint :: Full ) ;
439
420
} ) ;
440
- let name = Self :: xy_to_name ( self . get_focused_index ( ) ) ;
441
- if name == NAME_QUESTION_LIST || name == NAME_ANSWER_LIST {
442
- self . view . call_on_name ( name, |v : & mut ListView | {
421
+ self . refocus ( ) ;
422
+ }
423
+ }
424
+ }
425
+
426
+ fn refocus ( & mut self ) {
427
+ let name = Self :: xy_to_name ( self . get_focused_index ( ) ) ;
428
+ match self . layout {
429
+ Layout :: SingleColumn if name == NAME_QUESTION_LIST || name == NAME_QUESTION_VIEW => {
430
+ self . view
431
+ . call_on_name ( NAME_QUESTION_LIST , |v : & mut ListView | {
443
432
v. unhide ( ) ;
444
433
} ) ;
445
- } else {
446
- self . view . call_on_name ( name , |v : & mut MdView | {
434
+ self . view
435
+ . call_on_name ( NAME_QUESTION_VIEW , |v : & mut MdView | {
447
436
v. unhide ( ) ;
448
437
} ) ;
449
- }
450
438
}
439
+ Layout :: SingleColumn => {
440
+ self . view
441
+ . call_on_name ( NAME_ANSWER_LIST , |v : & mut ListView | {
442
+ v. unhide ( ) ;
443
+ } ) ;
444
+ self . view . call_on_name ( NAME_ANSWER_VIEW , |v : & mut MdView | {
445
+ v. unhide ( ) ;
446
+ } ) ;
447
+ }
448
+ Layout :: FullScreen if name == NAME_QUESTION_LIST || name == NAME_ANSWER_LIST => {
449
+ self . view . call_on_name ( name, |v : & mut ListView | {
450
+ v. unhide ( ) ;
451
+ } ) ;
452
+ }
453
+ Layout :: FullScreen => {
454
+ self . view . call_on_name ( name, |v : & mut MdView | {
455
+ v. unhide ( ) ;
456
+ } ) ;
457
+ }
458
+ _ => ( ) ,
451
459
}
452
460
}
453
461
0 commit comments