From 36d317a3e34809cf7220ddc59b4f9771bd637bad Mon Sep 17 00:00:00 2001 From: Ashley Wulber Date: Fri, 21 Jan 2022 15:13:01 -0500 Subject: [PATCH] hook up popover button signals --- examples/app_library/grid_item/mod.rs | 25 +++++++++++++++++++++---- examples/app_library/group_grid/mod.rs | 15 ++++++++++++--- examples/app_library/window/mod.rs | 3 --- 3 files changed, 33 insertions(+), 10 deletions(-) diff --git a/examples/app_library/grid_item/mod.rs b/examples/app_library/grid_item/mod.rs index facb7cf5..7c9df9bd 100644 --- a/examples/app_library/grid_item/mod.rs +++ b/examples/app_library/grid_item/mod.rs @@ -158,13 +158,30 @@ impl GridItem { ..set_child(Some(&popover_menu)); }; self.append(&popover); - popover.connect_closed(glib::clone!(@weak self as self_ => move |_| { - self_.emit_by_name::<()>("popover-closed", &[]); + + popover.connect_closed( + glib::clone!(@weak self as self_, @weak dialog_entry => move |_| { + dialog_entry.set_text(""); + self_.emit_by_name::<()>("popover-closed", &[]); + }), + ); + ok_btn.connect_clicked( + glib::clone!(@weak self as self_, @weak dialog_entry, @weak popover => move |_| { + let new_name = dialog_entry.text().to_string(); + popover.popdown(); + glib::idle_add_local_once(glib::clone!(@weak self_ => move || { + self_.emit_by_name::<()>("new-group", &[&new_name]); + })); + }), + ); + cancel_btn.connect_clicked(glib::clone!(@weak popover => move |_| { + popover.popdown(); })); - imp.popover.replace(Some(popover)); if popover_active { - self.popup(); + popover.popup(); } + + imp.popover.replace(Some(popover)); } } } diff --git a/examples/app_library/group_grid/mod.rs b/examples/app_library/group_grid/mod.rs index 12b31c25..769afd25 100644 --- a/examples/app_library/group_grid/mod.rs +++ b/examples/app_library/group_grid/mod.rs @@ -198,9 +198,18 @@ impl GroupGrid { .connect_local("new-group", false, glib::clone!(@weak self_ => @default-return None, move |args| { let m = self_.group_model(); match args[1].get::() { - Ok(_name) => { - // m.items_changed(m.n_items() - 2, 0, 1); - todo!(); + Ok(name) => { + let new_group = AppGroup::new(BoxedAppGroupType::Group(AppGroupData { + id: 0, + name: name, + icon: "folder".to_string(), + mutable: false, + app_names: Vec::new(), + category: "".to_string(), + })).upcast::(); + + m.insert(m.n_items() - 1, &new_group); + self_.store_data(); } _ => unimplemented!(), }; diff --git a/examples/app_library/window/mod.rs b/examples/app_library/window/mod.rs index e252334a..89817fc2 100644 --- a/examples/app_library/window/mod.rs +++ b/examples/app_library/window/mod.rs @@ -163,10 +163,7 @@ impl AppLibraryWindow { let active_window = app .active_window() .expect("no active window available, closing app library."); - dbg!(&active_window); - dbg!(!inner.is_popup_active()); if win == &active_window && !win.is_active() && !inner.is_popup_active() { - dbg!(win); win.close(); } }));