@@ -730,49 +730,54 @@ impl LogView {
730730 ) ;
731731 } ;
732732
733- let toggle_filter_mode = |siv : & mut Cursive | {
733+ let toggle_filter_mode_and_prompt = |siv : & mut Cursive | {
734734 siv. call_on_name ( "logs" , |base : & mut LogViewBase | {
735- base. filter_mode = !base. filter_mode ;
736-
737- if base. filter_mode && base. active_filter . is_none ( ) {
738- base. extract_identifiers ( ) ;
739- base. rebuild_content_with_highlights ( ) ;
740- } else {
735+ if base. filter_mode {
736+ base. filter_mode = false ;
741737 base. active_filter = None ;
742738 base. rebuild_content_normal ( ) ;
739+ } else {
740+ base. filter_mode = true ;
741+ base. extract_identifiers ( ) ;
742+ base. rebuild_content_with_highlights ( ) ;
743743 }
744744 } ) ;
745- } ;
746745
747- let show_filter_prompt = |siv : & mut Cursive | {
748- let apply_filter = move |siv : & mut Cursive , text : & str | {
749- let identifier = text. trim ( ) . to_string ( ) ;
750- siv. pop_layer ( ) ;
746+ let should_show_prompt = siv
747+ . call_on_name ( "logs" , |base : & mut LogViewBase | base. filter_mode )
748+ . unwrap_or ( false ) ;
751749
752- if identifier. is_empty ( ) {
753- siv. call_on_name ( "logs" , |base : & mut LogViewBase | {
754- base. active_filter = None ;
755- base. apply_filter ( ) ;
756- } ) ;
757- return ;
758- }
750+ if should_show_prompt {
751+ let apply_filter = move |siv : & mut Cursive , text : & str | {
752+ let identifier = text. trim ( ) . to_string ( ) ;
753+ siv. pop_layer ( ) ;
759754
760- let filter_result = siv. call_on_name ( "logs" , |base : & mut LogViewBase | {
761- if let Some ( filter_type) = base. filter_identifiers . get ( & identifier) {
762- base. filter_mode = false ;
763- base. active_filter = Some ( filter_type. clone ( ) ) ;
764- base. apply_filter ( ) ;
765- Ok ( ( ) )
766- } else {
767- Err ( format ! ( "Unknown identifier: {}" , identifier) )
755+ if identifier. is_empty ( ) {
756+ siv. call_on_name ( "logs" , |base : & mut LogViewBase | {
757+ base. filter_mode = false ;
758+ base. active_filter = None ;
759+ base. rebuild_content_normal ( ) ;
760+ } ) ;
761+ return ;
768762 }
769- } ) ;
770763
771- if let Some ( Err ( msg) ) = filter_result {
772- siv. add_layer ( Dialog :: info ( msg) ) ;
773- }
774- } ;
775- show_bottom_prompt ( siv, "identifier:" , apply_filter) ;
764+ let filter_result = siv. call_on_name ( "logs" , |base : & mut LogViewBase | {
765+ if let Some ( filter_type) = base. filter_identifiers . get ( & identifier) {
766+ base. filter_mode = false ;
767+ base. active_filter = Some ( filter_type. clone ( ) ) ;
768+ base. apply_filter ( ) ;
769+ Ok ( ( ) )
770+ } else {
771+ Err ( format ! ( "Unknown identifier: {}" , identifier) )
772+ }
773+ } ) ;
774+
775+ if let Some ( Err ( msg) ) = filter_result {
776+ siv. add_layer ( Dialog :: info ( msg) ) ;
777+ }
778+ } ;
779+ show_bottom_prompt ( siv, "identifier:" , apply_filter) ;
780+ }
776781 } ;
777782
778783 let v = OnEventView :: new ( v)
@@ -827,17 +832,8 @@ impl LogView {
827832 } )
828833 . on_event_inner ( Event :: CtrlChar ( 'f' ) , move |_, _| {
829834 return Some ( EventResult :: Consumed ( Some ( Callback :: from_fn (
830- toggle_filter_mode ,
835+ toggle_filter_mode_and_prompt ,
831836 ) ) ) ) ;
832- } )
833- . on_event_inner ( 'f' , move |v, _| {
834- let in_filter_mode = v. get_mut ( ) . filter_mode ;
835- if in_filter_mode {
836- return Some ( EventResult :: Consumed ( Some ( Callback :: from_fn (
837- show_filter_prompt,
838- ) ) ) ) ;
839- }
840- None
841837 } ) ;
842838
843839 let log_view = LogView { inner_view : v } ;
0 commit comments