diff --git a/src/shell/element/window.rs b/src/shell/element/window.rs index 84e577bc..46915f68 100644 --- a/src/shell/element/window.rs +++ b/src/shell/element/window.rs @@ -254,6 +254,7 @@ impl CosmicWindow { #[derive(Debug, Clone, Copy)] pub enum Message { DragStart, + Minimize, Maximize, Close, Menu, @@ -284,6 +285,17 @@ impl Program for CosmicWindowInternal { } } } + Message::Minimize => { + if let Some(surface) = self.window.wl_surface() { + loop_handle.insert_idle(move |state| { + if let Some(mapped) = + state.common.shell.element_for_wl_surface(&surface).cloned() + { + state.common.shell.minimize_request(&mapped) + } + }); + } + } Message::Maximize => { if let Some(surface) = self.window.wl_surface() { loop_handle.insert_idle(move |state| { @@ -412,6 +424,7 @@ impl Program for CosmicWindowInternal { cosmic::widget::header_bar() .title(self.last_title.lock().unwrap().clone()) .on_drag(Message::DragStart) + .on_minimize(Message::Minimize) .on_maximize(Message::Maximize) .on_close(Message::Close) .apply(mouse_area)