@@ -49,7 +49,14 @@ pub fn handle_update(tile: &mut Tile, message: Message) -> Task<Message> {
4949 focus_this_app ( ) ;
5050 tile. focused = true ;
5151 tile. visible = true ;
52- Task :: none ( )
52+
53+ if tile. page == Page :: Main && tile. query_lc . is_empty ( ) {
54+ window:: latest ( )
55+ . map ( |x| x. unwrap ( ) )
56+ . map ( |id| Message :: SearchQueryChanged ( String :: new ( ) , id) )
57+ } else {
58+ Task :: none ( )
59+ }
5360 }
5461
5562 Message :: UpdateAvailable => {
@@ -222,42 +229,8 @@ pub fn handle_update(tile: &mut Tile, message: Message) -> Task<Message> {
222229 )
223230 }
224231
225- Message :: OpenFocused => {
226- info ! ( "Open Focussed called" ) ;
227- let results = if tile. page == Page :: ClipboardHistory {
228- tile. clipboard_content
229- . iter ( )
230- . map ( |x| x. to_app ( ) . to_owned ( ) )
231- . collect ( )
232- } else {
233- tile. results . clone ( )
234- } ;
235- match results. get ( tile. focus_id as usize ) {
236- Some ( App {
237- search_name : name,
238- open_command : AppCommand :: Function ( func) ,
239- ..
240- } ) => {
241- info ! ( "Updating ranking for: {name}" ) ;
242- tile. options . update_ranking ( name) ;
243- Task :: done ( Message :: RunFunction ( func. to_owned ( ) ) )
244- }
245- Some ( App {
246- search_name : name,
247- open_command : AppCommand :: Message ( msg) ,
248- ..
249- } ) => {
250- info ! ( "Updating ranking for: {name}" ) ;
251- tile. options . update_ranking ( name) ;
252- Task :: done ( msg. to_owned ( ) )
253- }
254- Some ( App {
255- open_command : AppCommand :: Display ,
256- ..
257- } ) => Task :: done ( Message :: ReturnFocus ) ,
258- None => Task :: none ( ) ,
259- }
260- }
232+ Message :: OpenFocused => Task :: done ( Message :: OpenResult ( tile. focus_id ) ) ,
233+ Message :: OpenResult ( id) => open_result ( tile, id as usize ) ,
261234
262235 Message :: ReloadConfig => {
263236 info ! ( "Reloading config" ) ;
@@ -356,10 +329,19 @@ pub fn handle_update(tile: &mut Tile, message: Message) -> Task<Message> {
356329 _ => Task :: none ( ) ,
357330 } ;
358331
332+ let refresh_empty_main_query = if tile. page == Page :: Main {
333+ window:: latest ( )
334+ . map ( |x| x. unwrap ( ) )
335+ . map ( |id| Message :: SearchQueryChanged ( String :: new ( ) , id) )
336+ } else {
337+ Task :: none ( )
338+ } ;
339+
359340 Task :: batch ( [
360341 Task :: done ( Message :: ClearSearchQuery ) ,
361342 Task :: done ( Message :: ClearSearchResults ) ,
362343 task,
344+ refresh_empty_main_query,
363345 ] )
364346 }
365347
@@ -575,7 +557,7 @@ pub fn handle_update(tile: &mut Tile, message: Message) -> Task<Message> {
575557 let mut final_config = tile. config . clone ( ) ;
576558 match config {
577559 SetConfigFields :: ToggleHotkey ( hk) => final_config. toggle_hotkey = hk,
578- SetConfigFields :: ClipboardHotkey ( hk) => final_config. toggle_hotkey = hk,
560+ SetConfigFields :: ClipboardHotkey ( hk) => final_config. clipboard_hotkey = hk,
579561 SetConfigFields :: Modes ( Editable :: Create ( ( key, value) ) ) => {
580562 final_config. modes . insert ( key, value) ;
581563 }
@@ -732,6 +714,52 @@ fn resize_task(id: Id, count: u32) -> Task<Message> {
732714 ) )
733715}
734716
717+ fn resize_for_results_count ( id : Id , count : usize ) -> Task < Message > {
718+ if count == 0 {
719+ return zero_item_resize_task ( id) ;
720+ }
721+ if count == 1 {
722+ return single_item_resize_task ( id) ;
723+ }
724+
725+ let max_elem = min ( 5 , count) ;
726+ Task :: done ( Message :: ResizeWindow (
727+ id,
728+ ( ( max_elem * 55 ) + 35 + DEFAULT_WINDOW_HEIGHT as usize ) as f32 ,
729+ ) )
730+ }
731+
732+ fn open_result ( tile : & mut Tile , id : usize ) -> Task < Message > {
733+ let results = if tile. page == Page :: ClipboardHistory {
734+ tile. clipboard_content
735+ . iter ( )
736+ . map ( |x| x. to_app ( ) . to_owned ( ) )
737+ . collect ( )
738+ } else {
739+ tile. results . clone ( )
740+ } ;
741+
742+ let Some ( app) = results. get ( id) . cloned ( ) else {
743+ return Task :: none ( ) ;
744+ } ;
745+
746+ let search_name = app. search_name . clone ( ) ;
747+
748+ match app. open_command {
749+ AppCommand :: Function ( func) => {
750+ info ! ( "Updating ranking for: {search_name}" ) ;
751+ tile. options . update_ranking ( & search_name) ;
752+ Task :: done ( Message :: RunFunction ( func) )
753+ }
754+ AppCommand :: Message ( msg) => {
755+ info ! ( "Updating ranking for: {search_name}" ) ;
756+ tile. options . update_ranking ( & search_name) ;
757+ Task :: done ( msg)
758+ }
759+ AppCommand :: Display => Task :: done ( Message :: ReturnFocus ) ,
760+ }
761+ }
762+
735763/// Handling the lemon easter egg icon
736764fn lemon_icon_handle ( ) -> Option < Handle > {
737765 image:: ImageReader :: new ( Cursor :: new ( include_bytes ! ( "../../../docs/lemon.png" ) ) )
@@ -755,6 +783,11 @@ fn execute_query(tile: &mut Tile, id: Id) -> Task<Message> {
755783 _ => { }
756784 }
757785
786+ if tile. page == Page :: Main && tile. query_lc . is_empty ( ) {
787+ tile. results = tile. frequent_results ( ) ;
788+ return resize_for_results_count ( id, tile. results . len ( ) ) ;
789+ }
790+
758791 if tile. query_lc . is_empty ( )
759792 || ( tile. query_lc . chars ( ) . count ( ) < 2 && tile. page == Page :: FileSearch )
760793 {
0 commit comments