Recapture workspace/toplevel on damage; start code for filtering
For some reason using calloop makes output events not consistently occur?
This commit is contained in:
parent
04607b84aa
commit
c46ab4f1e6
4 changed files with 242 additions and 67 deletions
10
src/main.rs
10
src/main.rs
|
|
@ -93,6 +93,7 @@ struct App {
|
|||
toplevel_manager: Option<zcosmic_toplevel_manager_v1::ZcosmicToplevelManagerV1>,
|
||||
seats: Vec<wl_seat::WlSeat>,
|
||||
visible: bool,
|
||||
wayland_cmd_sender: Option<calloop::channel::Sender<wayland::Cmd>>,
|
||||
}
|
||||
|
||||
impl App {
|
||||
|
|
@ -140,7 +141,7 @@ impl App {
|
|||
get_layer_surface(SctkLayerSurfaceSettings {
|
||||
id,
|
||||
keyboard_interactivity: KeyboardInteractivity::Exclusive,
|
||||
namespace: "workspaces".into(),
|
||||
namespace: "workspace-overview".into(),
|
||||
layer: Layer::Overlay,
|
||||
size: Some((Some(width as _), Some(height as _))),
|
||||
output: IcedOutput::Output(output),
|
||||
|
|
@ -267,6 +268,9 @@ impl Application for App {
|
|||
wayland::Event::Connection(conn) => {
|
||||
self.conn = Some(conn);
|
||||
}
|
||||
wayland::Event::CmdSender(sender) => {
|
||||
self.wayland_cmd_sender = Some(sender);
|
||||
}
|
||||
wayland::Event::ToplevelManager(manager) => {
|
||||
self.toplevel_manager = Some(manager);
|
||||
}
|
||||
|
|
@ -437,7 +441,7 @@ fn workspace_sidebar_entry(workspace: &Workspace) -> cosmic::Element<Msg> {
|
|||
widget::column![
|
||||
close_button(Msg::CloseWorkspace(workspace.handle.clone())),
|
||||
widget::button(widget::Image::new(workspace.img.clone().unwrap_or_else(
|
||||
|| widget::image::Handle::from_pixels(0, 0, vec![0, 0, 0, 255])
|
||||
|| widget::image::Handle::from_pixels(1, 1, vec![0, 0, 0, 255])
|
||||
)))
|
||||
.style(theme)
|
||||
.on_press(Msg::ActivateWorkspace(workspace.handle.clone())),
|
||||
|
|
@ -464,7 +468,7 @@ fn toplevel_preview<'a>(toplevel: &'a Toplevel) -> cosmic::Element<'a, Msg> {
|
|||
widget::column![
|
||||
close_button(Msg::CloseToplevel(toplevel.handle.clone())),
|
||||
widget::button(widget::Image::new(toplevel.img.clone().unwrap_or_else(
|
||||
|| widget::image::Handle::from_pixels(0, 0, vec![0, 0, 0, 255]),
|
||||
|| widget::image::Handle::from_pixels(1, 1, vec![0, 0, 0, 255]),
|
||||
)))
|
||||
.on_press(Msg::ActivateToplevel(toplevel.handle.clone())),
|
||||
widget::text(&toplevel.info.title)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue