diff --git a/src/lib/config.rs b/src/lib/config.rs index 63b1bb7..f75f9fd 100644 --- a/src/lib/config.rs +++ b/src/lib/config.rs @@ -315,7 +315,6 @@ pub struct Config { // #[serde(default = "default_text_wrap_length")] // #[clap(long = "text-wrap-length")] // pub text_wrap_length: Option, - /// Defines how long it takes for the show animation to finish /// Defaults to 70ms #[serde(default = "default_show_animation_time")] diff --git a/src/lib/gui.rs b/src/lib/gui.rs index 67a74a9..84145a3 100644 --- a/src/lib/gui.rs +++ b/src/lib/gui.rs @@ -14,8 +14,8 @@ use gdk4::prelude::{Cast, DisplayExt, MonitorExt}; use gdk4::{Display, Key}; use gtk4::glib::ControlFlow; use gtk4::prelude::{ - ApplicationExt, ApplicationExtManual, BoxExt, EditableExt, FlowBoxChildExt, - GestureSingleExt, GtkWindowExt, ListBoxRowExt, NativeExt, WidgetExt, + ApplicationExt, ApplicationExtManual, BoxExt, EditableExt, FlowBoxChildExt, GestureSingleExt, + GtkWindowExt, ListBoxRowExt, NativeExt, WidgetExt, }; use gtk4::{ Align, EventControllerKey, Expander, FlowBox, FlowBoxChild, GestureClick, Image, Label, @@ -463,7 +463,7 @@ fn sort_menu_items_by_score( } else { Ordering::Larger } - } else if menu1.initial_sort_score < menu2.initial_sort_score { + } else if menu1.initial_sort_score > menu2.initial_sort_score { Ordering::Smaller } else { Ordering::Larger @@ -527,7 +527,6 @@ fn ease_in_out_cubic(t: f32) -> f32 { } } - fn animate_window( window: ApplicationWindow, animation_time: u64, @@ -820,7 +819,7 @@ fn set_menu_visibility_for_search( if query.is_empty() { for menu_item in items.iter_mut() { // todo make initial score and search score both follow same logic. - menu_item.search_sort_score = -menu_item.initial_sort_score as f64; + menu_item.search_sort_score = menu_item.initial_sort_score as f64; menu_item.visible = true; } } else { @@ -877,7 +876,7 @@ fn set_menu_visibility_for_search( // todo turn initial score init f64 menu_item.search_sort_score = - search_sort_score - menu_item.initial_sort_score as f64; + search_sort_score + menu_item.initial_sort_score as f64; menu_item.visible = visible; } } @@ -921,13 +920,16 @@ fn percent_or_absolute(value: Option<&String>, base_value: i32) -> Option { pub fn sort_menu_items_alphabetically_honor_initial_score( items: &mut [MenuItem], ) { - let mut regular_score = items.len() as i64; + let special_score = items.len() as i64; + let mut regular_score = 0; items.sort_by(|l, r| l.label.cmp(&r.label)); for item in items.iter_mut() { if item.initial_sort_score == 0 { - item.initial_sort_score = regular_score; + item.initial_sort_score += regular_score; regular_score += 1; + } else { + item.initial_sort_score += special_score; } } } diff --git a/src/lib/mode.rs b/src/lib/mode.rs index 78f264a..6932b5a 100644 --- a/src/lib/mode.rs +++ b/src/lib/mode.rs @@ -112,7 +112,7 @@ impl DRunProvider { action, sub_elements: Vec::default(), working_dir: working_dir.clone(), - initial_sort_score: -(*sort_score), + initial_sort_score: *sort_score, search_sort_score: 0.0, data: Some(menu_item_data.clone()), visible: true,