Make button close toplevels

This commit is contained in:
Ian Douglas Scott 2023-01-18 10:58:22 -08:00
parent 039e0a9585
commit 0226f20da1

View file

@ -41,7 +41,9 @@ enum Msg {
Close, Close,
Closed(SurfaceIdWrapper), Closed(SurfaceIdWrapper),
ActivateWorkspace(zcosmic_workspace_handle_v1::ZcosmicWorkspaceHandleV1), ActivateWorkspace(zcosmic_workspace_handle_v1::ZcosmicWorkspaceHandleV1),
CloseWorkspace(zcosmic_workspace_handle_v1::ZcosmicWorkspaceHandleV1),
ActivateToplevel(zcosmic_toplevel_handle_v1::ZcosmicToplevelHandleV1), ActivateToplevel(zcosmic_toplevel_handle_v1::ZcosmicToplevelHandleV1),
CloseToplevel(zcosmic_toplevel_handle_v1::ZcosmicToplevelHandleV1),
} }
#[derive(Debug)] #[derive(Debug)]
@ -245,6 +247,13 @@ impl Application for App {
} }
} }
} }
Msg::CloseWorkspace(workspace_handle) => {}
Msg::CloseToplevel(toplevel_handle) => {
// TODO confirmation?
if let Some(toplevel_manager) = self.toplevel_manager.as_ref() {
toplevel_manager.close(&toplevel_handle);
}
}
} }
Command::none() Command::none()
@ -305,9 +314,10 @@ fn layer_surface<'a>(app: &'a App, surface: &'a LayerSurface) -> cosmic::Element
.into() .into()
} }
fn close_button() -> cosmic::Element<'static, Msg> { fn close_button(on_press: Msg) -> cosmic::Element<'static, Msg> {
iced::widget::button(cosmic::widget::icon("window-close-symbolic", 16)) iced::widget::button(cosmic::widget::icon("window-close-symbolic", 16))
.style(cosmic::theme::Button::Destructive) .style(cosmic::theme::Button::Destructive)
.on_press(on_press)
.into() .into()
} }
@ -319,7 +329,7 @@ fn workspace_sidebar_entry(workspace: &Workspace) -> cosmic::Element<Msg> {
cosmic::theme::Button::Secondary cosmic::theme::Button::Secondary
}; };
widget::column![ widget::column![
close_button(), // TODO close button close_button(Msg::CloseWorkspace(workspace.handle.clone())),
widget::button(widget::Image::new(workspace.img.clone().unwrap_or_else( 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(0, 0, vec![0, 0, 0, 255])
))) )))
@ -346,7 +356,7 @@ fn toplevel_preview<'a>(toplevel: &'a Toplevel) -> cosmic::Element<'a, Msg> {
// - selectable // - selectable
// name of window // name of window
widget::column![ widget::column![
close_button(), // TODO close button close_button(Msg::CloseToplevel(toplevel.handle.clone())),
widget::button(widget::Image::new(toplevel.img.clone().unwrap_or_else( 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(0, 0, vec![0, 0, 0, 255]),
))) )))