hook up popover button signals

This commit is contained in:
Ashley Wulber 2022-01-21 15:13:01 -05:00
parent 1fa7b8243a
commit 36d317a3e3
3 changed files with 33 additions and 10 deletions

View file

@ -158,13 +158,30 @@ impl GridItem {
..set_child(Some(&popover_menu)); ..set_child(Some(&popover_menu));
}; };
self.append(&popover); 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 { if popover_active {
self.popup(); popover.popup();
} }
imp.popover.replace(Some(popover));
} }
} }
} }

View file

@ -198,9 +198,18 @@ impl GroupGrid {
.connect_local("new-group", false, glib::clone!(@weak self_ => @default-return None, move |args| { .connect_local("new-group", false, glib::clone!(@weak self_ => @default-return None, move |args| {
let m = self_.group_model(); let m = self_.group_model();
match args[1].get::<String>() { match args[1].get::<String>() {
Ok(_name) => { Ok(name) => {
// m.items_changed(m.n_items() - 2, 0, 1); let new_group = AppGroup::new(BoxedAppGroupType::Group(AppGroupData {
todo!(); id: 0,
name: name,
icon: "folder".to_string(),
mutable: false,
app_names: Vec::new(),
category: "".to_string(),
})).upcast::<Object>();
m.insert(m.n_items() - 1, &new_group);
self_.store_data();
} }
_ => unimplemented!(), _ => unimplemented!(),
}; };

View file

@ -163,10 +163,7 @@ impl AppLibraryWindow {
let active_window = app let active_window = app
.active_window() .active_window()
.expect("no active window available, closing app library."); .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() { if win == &active_window && !win.is_active() && !inner.is_popup_active() {
dbg!(win);
win.close(); win.close();
} }
})); }));