diff --git a/Cargo.lock b/Cargo.lock index 278717d..41a046d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -616,7 +616,7 @@ dependencies = [ [[package]] name = "moonset" -version = "0.8.1" +version = "0.8.2" dependencies = [ "dirs", "gdk-pixbuf", diff --git a/Cargo.toml b/Cargo.toml index be1204d..76a2fee 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "moonset" -version = "0.8.1" +version = "0.8.2" edition = "2024" description = "Wayland session power menu with GTK4 and Layer Shell" license = "MIT" diff --git a/src/panel.rs b/src/panel.rs index e8956d4..f82066a 100644 --- a/src/panel.rs +++ b/src/panel.rs @@ -292,6 +292,7 @@ pub fn create_panel_window(texture: Option<&gdk::Texture>, blur_radius: Option>>, error_label: >k::Label, + button_box: >k::Box, ) -> gtk::Button { let button_content = gtk::Box::new(gtk::Orientation::Vertical, 4); button_content.set_halign(gtk::Align::Center); @@ -404,6 +406,8 @@ fn create_action_button( confirm_box, #[weak] error_label, + #[weak] + button_box, move |_| { on_action_clicked( &action_def, @@ -412,6 +416,7 @@ fn create_action_button( &confirm_area, &confirm_box, &error_label, + &button_box, ); } )); @@ -434,6 +439,7 @@ fn on_action_clicked( confirm_area: >k::Box, confirm_box: &Rc>>, error_label: >k::Label, + button_box: >k::Box, ) { dismiss_confirm(confirm_area, confirm_box); error_label.set_visible(false); @@ -443,7 +449,7 @@ fn on_action_clicked( return; } - show_confirm(action_def, strings, app, confirm_area, confirm_box, error_label); + show_confirm(action_def, strings, app, confirm_area, confirm_box, error_label, button_box); } /// Show inline confirmation below the action buttons. @@ -454,6 +460,7 @@ fn show_confirm( confirm_area: >k::Box, confirm_box: &Rc>>, error_label: >k::Label, + button_box: >k::Box, ) { let new_box = gtk::Box::new(gtk::Orientation::Vertical, 8); new_box.set_halign(gtk::Align::Center); @@ -501,8 +508,13 @@ fn show_confirm( confirm_area, #[strong] confirm_box, + #[weak] + button_box, move |_| { dismiss_confirm(&confirm_area, &confirm_box); + if let Some(first) = button_box.first_child() { + first.grab_focus(); + } } )); button_row.append(&no_btn);