@@ -33,6 +33,7 @@ use crate::calculator::Expr;
3333use crate :: commands:: Function ;
3434use crate :: config:: Config ;
3535use crate :: debounce:: DebouncePolicy ;
36+ use crate :: quit:: get_open_apps;
3637use crate :: unit_conversion;
3738use crate :: utils:: is_valid_url;
3839use crate :: { app:: ArrowKey , platform:: focus_this_app} ;
@@ -714,12 +715,19 @@ fn open_window(height: f32) -> Task<Message> {
714715
715716/// A helper function for resizing rustcast when only one result is found
716717fn single_item_resize_task ( id : Id ) -> Task < Message > {
717- Task :: done ( Message :: ResizeWindow ( id, 55. + DEFAULT_WINDOW_HEIGHT ) )
718+ resize_task ( id, 1 )
718719}
719720
720721/// A helper function for resizing rustcast when zero results are found
721722fn zero_item_resize_task ( id : Id ) -> Task < Message > {
722- Task :: done ( Message :: ResizeWindow ( id, DEFAULT_WINDOW_HEIGHT ) )
723+ resize_task ( id, 0 )
724+ }
725+
726+ fn resize_task ( id : Id , count : u32 ) -> Task < Message > {
727+ Task :: done ( Message :: ResizeWindow (
728+ id,
729+ ( 55 * count) as f32 + DEFAULT_WINDOW_HEIGHT ,
730+ ) )
723731}
724732
725733fn resize_for_results_count ( id : Id , count : usize ) -> Task < Message > {
@@ -803,6 +811,12 @@ fn execute_query(tile: &mut Tile, id: Id) -> Task<Message> {
803811 return zero_item_resize_task ( id) ;
804812 } ;
805813
814+ let quittables = if tile. query_lc . starts_with ( "quit" ) {
815+ get_open_apps ( tile. config . theme . show_icons )
816+ } else {
817+ vec ! [ ]
818+ } ;
819+
806820 match tile. query_lc . as_str ( ) {
807821 "randomvar" => {
808822 let rand_num = rand:: random_range ( 0 ..100 ) ;
@@ -880,6 +894,16 @@ fn execute_query(tile: &mut Tile, id: Id) -> Task<Message> {
880894 }
881895
882896 tile. handle_search_query_changed ( ) ;
897+ if tile. query_lc . starts_with ( "quit" ) {
898+ let query = tile. query_lc . clone ( ) ;
899+ tile. results . extend ( quittables. iter ( ) . filter_map ( move |x| {
900+ if x. search_name . starts_with ( & query) {
901+ Some ( x. to_owned ( ) )
902+ } else {
903+ None
904+ }
905+ } ) )
906+ }
883907
884908 if !tile. results . is_empty ( ) {
885909 tile. results . par_sort_by_key ( |x| -x. ranking ) ;
0 commit comments