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,
Closed(SurfaceIdWrapper),
ActivateWorkspace(zcosmic_workspace_handle_v1::ZcosmicWorkspaceHandleV1),
CloseWorkspace(zcosmic_workspace_handle_v1::ZcosmicWorkspaceHandleV1),
ActivateToplevel(zcosmic_toplevel_handle_v1::ZcosmicToplevelHandleV1),
CloseToplevel(zcosmic_toplevel_handle_v1::ZcosmicToplevelHandleV1),
}
#[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()
@ -305,9 +314,10 @@ fn layer_surface<'a>(app: &'a App, surface: &'a LayerSurface) -> cosmic::Element
.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))
.style(cosmic::theme::Button::Destructive)
.on_press(on_press)
.into()
}
@ -319,7 +329,7 @@ fn workspace_sidebar_entry(workspace: &Workspace) -> cosmic::Element<Msg> {
cosmic::theme::Button::Secondary
};
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::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
// name of window
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::image::Handle::from_pixels(0, 0, vec![0, 0, 0, 255]),
)))