diff --git a/src/app/mod.rs b/src/app/mod.rs index e5b516c3..bcacd3b3 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -708,7 +708,8 @@ impl ApplicationExt for App { .title(&core.window.header_title) .on_drag(Message::Cosmic(cosmic::Message::Drag)) .on_close(Message::Cosmic(cosmic::Message::Close)) - .on_right_click(Message::Cosmic(cosmic::Message::ShowWindowMenu)); + .on_right_click(Message::Cosmic(cosmic::Message::ShowWindowMenu)) + .on_double_click(Message::Cosmic(cosmic::Message::Maximize)); if self.nav_model().is_some() { let toggle = crate::widget::nav_bar_toggle() diff --git a/src/widget/header_bar.rs b/src/widget/header_bar.rs index d27a7252..4975215a 100644 --- a/src/widget/header_bar.rs +++ b/src/widget/header_bar.rs @@ -23,6 +23,7 @@ pub fn header_bar<'a, Message>() -> HeaderBar<'a, Message> { end: Vec::new(), density: None, focused: false, + on_double_click: None, } } @@ -48,6 +49,11 @@ pub struct HeaderBar<'a, Message> { #[setters(strip_option)] on_minimize: Option, + /// A message emitted when the header is double clicked, + /// usually used to maximize the window. + #[setters(strip_option)] + on_double_click: Option, + /// A message emitted when the header is right clicked. #[setters(strip_option)] on_right_click: Option, @@ -327,7 +333,9 @@ impl<'a, Message: Clone + 'static> HeaderBar<'a, Message> { if let Some(message) = self.on_maximize.clone() { widget = widget.on_release(message); } - + if let Some(message) = self.on_double_click.clone() { + widget = widget.on_double_press(message); + } if let Some(message) = self.on_right_click.clone() { widget = widget.on_right_press(message); }