@@ -48,7 +48,14 @@ pub fn handle_update(tile: &mut Tile, message: Message) -> Task<Message> {
4848 focus_this_app ( ) ;
4949 tile. focused = true ;
5050 tile. visible = true ;
51- Task :: none ( )
51+
52+ if tile. page == Page :: Main && tile. query_lc . is_empty ( ) {
53+ window:: latest ( )
54+ . map ( |x| x. unwrap ( ) )
55+ . map ( |id| Message :: SearchQueryChanged ( String :: new ( ) , id) )
56+ } else {
57+ Task :: none ( )
58+ }
5259 }
5360
5461 Message :: UpdateAvailable => {
@@ -221,42 +228,8 @@ pub fn handle_update(tile: &mut Tile, message: Message) -> Task<Message> {
221228 )
222229 }
223230
224- Message :: OpenFocused => {
225- info ! ( "Open Focussed called" ) ;
226- let results = if tile. page == Page :: ClipboardHistory {
227- tile. clipboard_content
228- . iter ( )
229- . map ( |x| x. to_app ( ) . to_owned ( ) )
230- . collect ( )
231- } else {
232- tile. results . clone ( )
233- } ;
234- match results. get ( tile. focus_id as usize ) {
235- Some ( App {
236- search_name : name,
237- open_command : AppCommand :: Function ( func) ,
238- ..
239- } ) => {
240- info ! ( "Updating ranking for: {name}" ) ;
241- tile. options . update_ranking ( name) ;
242- Task :: done ( Message :: RunFunction ( func. to_owned ( ) ) )
243- }
244- Some ( App {
245- search_name : name,
246- open_command : AppCommand :: Message ( msg) ,
247- ..
248- } ) => {
249- info ! ( "Updating ranking for: {name}" ) ;
250- tile. options . update_ranking ( name) ;
251- Task :: done ( msg. to_owned ( ) )
252- }
253- Some ( App {
254- open_command : AppCommand :: Display ,
255- ..
256- } ) => Task :: done ( Message :: ReturnFocus ) ,
257- None => Task :: none ( ) ,
258- }
259- }
231+ Message :: OpenFocused => Task :: done ( Message :: OpenResult ( tile. focus_id ) ) ,
232+ Message :: OpenResult ( id) => open_result ( tile, id as usize ) ,
260233
261234 Message :: ReloadConfig => {
262235 info ! ( "Reloading config" ) ;
@@ -355,10 +328,19 @@ pub fn handle_update(tile: &mut Tile, message: Message) -> Task<Message> {
355328 _ => Task :: none ( ) ,
356329 } ;
357330
331+ let refresh_empty_main_query = if tile. page == Page :: Main {
332+ window:: latest ( )
333+ . map ( |x| x. unwrap ( ) )
334+ . map ( |id| Message :: SearchQueryChanged ( String :: new ( ) , id) )
335+ } else {
336+ Task :: none ( )
337+ } ;
338+
358339 Task :: batch ( [
359340 Task :: done ( Message :: ClearSearchQuery ) ,
360341 Task :: done ( Message :: ClearSearchResults ) ,
361342 task,
343+ refresh_empty_main_query,
362344 ] )
363345 }
364346
@@ -574,7 +556,7 @@ pub fn handle_update(tile: &mut Tile, message: Message) -> Task<Message> {
574556 let mut final_config = tile. config . clone ( ) ;
575557 match config {
576558 SetConfigFields :: ToggleHotkey ( hk) => final_config. toggle_hotkey = hk,
577- SetConfigFields :: ClipboardHotkey ( hk) => final_config. toggle_hotkey = hk,
559+ SetConfigFields :: ClipboardHotkey ( hk) => final_config. clipboard_hotkey = hk,
578560 SetConfigFields :: Modes ( Editable :: Create ( ( key, value) ) ) => {
579561 final_config. modes . insert ( key, value) ;
580562 }
@@ -724,6 +706,52 @@ fn zero_item_resize_task(id: Id) -> Task<Message> {
724706 Task :: done ( Message :: ResizeWindow ( id, DEFAULT_WINDOW_HEIGHT ) )
725707}
726708
709+ fn resize_for_results_count ( id : Id , count : usize ) -> Task < Message > {
710+ if count == 0 {
711+ return zero_item_resize_task ( id) ;
712+ }
713+ if count == 1 {
714+ return single_item_resize_task ( id) ;
715+ }
716+
717+ let max_elem = min ( 5 , count) ;
718+ Task :: done ( Message :: ResizeWindow (
719+ id,
720+ ( ( max_elem * 55 ) + 35 + DEFAULT_WINDOW_HEIGHT as usize ) as f32 ,
721+ ) )
722+ }
723+
724+ fn open_result ( tile : & mut Tile , id : usize ) -> Task < Message > {
725+ let results = if tile. page == Page :: ClipboardHistory {
726+ tile. clipboard_content
727+ . iter ( )
728+ . map ( |x| x. to_app ( ) . to_owned ( ) )
729+ . collect ( )
730+ } else {
731+ tile. results . clone ( )
732+ } ;
733+
734+ let Some ( app) = results. get ( id) . cloned ( ) else {
735+ return Task :: none ( ) ;
736+ } ;
737+
738+ let search_name = app. search_name . clone ( ) ;
739+
740+ match app. open_command {
741+ AppCommand :: Function ( func) => {
742+ info ! ( "Updating ranking for: {search_name}" ) ;
743+ tile. options . update_ranking ( & search_name) ;
744+ Task :: done ( Message :: RunFunction ( func) )
745+ }
746+ AppCommand :: Message ( msg) => {
747+ info ! ( "Updating ranking for: {search_name}" ) ;
748+ tile. options . update_ranking ( & search_name) ;
749+ Task :: done ( msg)
750+ }
751+ AppCommand :: Display => Task :: done ( Message :: ReturnFocus ) ,
752+ }
753+ }
754+
727755/// Handling the lemon easter egg icon
728756fn lemon_icon_handle ( ) -> Option < Handle > {
729757 image:: ImageReader :: new ( Cursor :: new ( include_bytes ! ( "../../../docs/lemon.png" ) ) )
@@ -747,6 +775,11 @@ fn execute_query(tile: &mut Tile, id: Id) -> Task<Message> {
747775 _ => { }
748776 }
749777
778+ if tile. page == Page :: Main && tile. query_lc . is_empty ( ) {
779+ tile. results = tile. frequent_results ( ) ;
780+ return resize_for_results_count ( id, tile. results . len ( ) ) ;
781+ }
782+
750783 if tile. query_lc . is_empty ( )
751784 || ( tile. query_lc . chars ( ) . count ( ) < 2 && tile. page == Page :: FileSearch )
752785 {
0 commit comments