clear dock popover when hidden
This commit is contained in:
parent
9231d84dbf
commit
0454463e50
3 changed files with 19 additions and 13 deletions
|
|
@ -70,8 +70,9 @@ impl DockItem {
|
||||||
.connect_local(
|
.connect_local(
|
||||||
"menu-hide",
|
"menu-hide",
|
||||||
false,
|
false,
|
||||||
glib::clone!(@weak popover => @default-return None, move |_| {
|
glib::clone!(@weak popover, @weak popover_menu => @default-return None, move |_| {
|
||||||
popover.popdown();
|
popover.popdown();
|
||||||
|
popover_menu.reset_menu();
|
||||||
None
|
None
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
|
|
@ -140,7 +141,8 @@ impl DockItem {
|
||||||
pub fn clear_popover(&self) {
|
pub fn clear_popover(&self) {
|
||||||
let imp = imp::DockItem::from_instance(self);
|
let imp = imp::DockItem::from_instance(self);
|
||||||
let popover = imp.popover.borrow();
|
let popover = imp.popover.borrow();
|
||||||
|
let popover_menu = imp.popover_menu.borrow();
|
||||||
popover.popdown();
|
popover.popdown();
|
||||||
|
popover_menu.reset_menu();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -44,13 +44,7 @@ impl DockPopover {
|
||||||
pub fn update_layout(&self) {
|
pub fn update_layout(&self) {
|
||||||
let imp = imp::DockPopover::from_instance(&self);
|
let imp = imp::DockPopover::from_instance(&self);
|
||||||
let dock_object = imp.dock_object.borrow();
|
let dock_object = imp.dock_object.borrow();
|
||||||
|
let menu_handle = imp.menu_handle.borrow();
|
||||||
// reset menu
|
|
||||||
let menu_handle = cascade! {
|
|
||||||
Box::new(Orientation::Vertical, 4);
|
|
||||||
};
|
|
||||||
self.append(&menu_handle);
|
|
||||||
|
|
||||||
// build menu
|
// build menu
|
||||||
if let Some(dock_object) = dock_object.as_ref() {
|
if let Some(dock_object) = dock_object.as_ref() {
|
||||||
cascade! {
|
cascade! {
|
||||||
|
|
@ -183,14 +177,12 @@ impl DockPopover {
|
||||||
}
|
}
|
||||||
self.setup_handlers();
|
self.setup_handlers();
|
||||||
}
|
}
|
||||||
let old_menu_handle = imp.menu_handle.replace(menu_handle);
|
|
||||||
self.remove(&old_menu_handle);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn layout(&self) {
|
fn layout(&self) {
|
||||||
let imp = imp::DockPopover::from_instance(&self);
|
let imp = imp::DockPopover::from_instance(&self);
|
||||||
let menu_handle = cascade! {
|
let menu_handle = cascade! {
|
||||||
Box::default();
|
Box::new(Orientation::Vertical, 4);
|
||||||
};
|
};
|
||||||
self.append(&menu_handle);
|
self.append(&menu_handle);
|
||||||
imp.menu_handle.replace(menu_handle);
|
imp.menu_handle.replace(menu_handle);
|
||||||
|
|
@ -200,6 +192,18 @@ impl DockPopover {
|
||||||
self.emit_by_name::<&str>("menu-hide", &[]).unwrap();
|
self.emit_by_name::<&str>("menu-hide", &[]).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn reset_menu(&self) {
|
||||||
|
// reset menu
|
||||||
|
let menu_handle = cascade! {
|
||||||
|
Box::new(Orientation::Vertical, 4);
|
||||||
|
};
|
||||||
|
self.append(&menu_handle);
|
||||||
|
|
||||||
|
let imp = imp::DockPopover::from_instance(&self);
|
||||||
|
let old_menu_handle = imp.menu_handle.replace(menu_handle);
|
||||||
|
self.remove(&old_menu_handle);
|
||||||
|
}
|
||||||
|
|
||||||
fn setup_handlers(&self) {
|
fn setup_handlers(&self) {
|
||||||
let imp = imp::DockPopover::from_instance(&self);
|
let imp = imp::DockPopover::from_instance(&self);
|
||||||
let dock_object = imp.dock_object.borrow();
|
let dock_object = imp.dock_object.borrow();
|
||||||
|
|
|
||||||
|
|
@ -221,7 +221,7 @@ impl Window {
|
||||||
glib::clone!(@weak revealer, @weak drop_controller => move |_evc| {
|
glib::clone!(@weak revealer, @weak drop_controller => move |_evc| {
|
||||||
// only hide if DnD is not happening
|
// only hide if DnD is not happening
|
||||||
if drop_controller.current_drop().is_none() {
|
if drop_controller.current_drop().is_none() {
|
||||||
dbg!("hello, mouse left me :)");
|
// dbg!("hello, mouse left me :)");
|
||||||
revealer.set_reveal_child(false);
|
revealer.set_reveal_child(false);
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue