dock right click menu

This commit is contained in:
Ashley Wulber 2022-01-03 21:33:26 -05:00
parent 35eb571528
commit 3a72c74b08
9 changed files with 206 additions and 14 deletions

View file

@ -16,6 +16,7 @@ pub struct DockObject {
appinfo: RefCell<Option<DesktopAppInfo>>,
active: RefCell<BoxedWindowList>,
saved: Cell<bool>,
pub(super) popover: Cell<bool>,
}
// The central trait for subclassing a GObject
@ -60,6 +61,13 @@ impl ObjectImpl for DockObject {
false,
ParamFlags::READWRITE,
),
ParamSpec::new_boolean(
"popover",
"popover",
"Indicates whether there is a popover menu displayed for this object",
false,
ParamFlags::READWRITE,
),
]
});
PROPERTIES.as_ref()
@ -81,6 +89,11 @@ impl ObjectImpl for DockObject {
self.saved
.replace(value.get().expect("Value needs to be a boolean"));
}
"popover" => {
self.popover
.replace(value.get().expect("Value needs to be a boolean"));
}
_ => unimplemented!(),
}
}
@ -90,6 +103,7 @@ impl ObjectImpl for DockObject {
"appinfo" => self.appinfo.borrow().to_value(),
"active" => self.active.borrow().to_value(),
"saved" => self.saved.get().to_value(),
"popover" => self.popover.get().to_value(),
_ => unimplemented!(),
}
}

View file

@ -1,6 +1,7 @@
use std::path::Path;
use gdk4::glib::Object;
use gdk4::subclass::prelude::ObjectSubclassExt;
use gio::DesktopAppInfo;
use gtk4::glib;
use gtk4::prelude::AppInfoExt;
@ -70,4 +71,9 @@ impl DockObject {
Object::new(&[("appinfo", &appinfo), ("active", &results)])
.expect("Failed to create `DockObject`.")
}
pub fn set_popover(&self, b: bool) {
let imp = imp::DockObject::from_instance(self);
imp.popover.replace(b);
}
}