feat(header_bar): Show window menu on right click
With this, apps like cosmic-term require no changes to show the compositor window menu when the header is right clicked.
This commit is contained in:
parent
6adc037f40
commit
cc8033d74b
3 changed files with 16 additions and 1 deletions
|
|
@ -71,6 +71,7 @@ pub enum Message {
|
|||
SurfaceClosed(window::Id),
|
||||
/// Activate the application
|
||||
Activate(String),
|
||||
ShowWindowMenu,
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
|
|
@ -412,6 +413,10 @@ impl<T: Application> Cosmic<T> {
|
|||
return self.app.update(msg);
|
||||
}
|
||||
}
|
||||
Message::ShowWindowMenu => {
|
||||
#[cfg(not(feature = "wayland"))]
|
||||
return window::show_window_menu(window::Id::MAIN);
|
||||
}
|
||||
}
|
||||
|
||||
iced::Command::none()
|
||||
|
|
|
|||
|
|
@ -661,7 +661,8 @@ impl<App: Application> ApplicationExt for App {
|
|||
.window_id(window::Id::MAIN)
|
||||
.title(&core.window.header_title)
|
||||
.on_drag(Message::Cosmic(cosmic::Message::Drag))
|
||||
.on_close(Message::Cosmic(cosmic::Message::Close));
|
||||
.on_close(Message::Cosmic(cosmic::Message::Close))
|
||||
.on_right_click(Message::Cosmic(cosmic::Message::ShowWindowMenu));
|
||||
|
||||
if self.nav_model().is_some() {
|
||||
let toggle = crate::widget::nav_bar_toggle()
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ pub fn header_bar<'a, Message>() -> HeaderBar<'a, Message> {
|
|||
on_drag: None,
|
||||
on_maximize: None,
|
||||
on_minimize: None,
|
||||
on_right_click: None,
|
||||
start: Vec::new(),
|
||||
center: Vec::new(),
|
||||
end: Vec::new(),
|
||||
|
|
@ -45,6 +46,10 @@ pub struct HeaderBar<'a, Message> {
|
|||
#[setters(strip_option)]
|
||||
on_minimize: Option<Message>,
|
||||
|
||||
/// A message emitted when the header is right clicked.
|
||||
#[setters(strip_option)]
|
||||
on_right_click: Option<Message>,
|
||||
|
||||
/// The window id for the headerbar.
|
||||
#[setters(strip_option)]
|
||||
window_id: Option<iced::window::Id>,
|
||||
|
|
@ -337,6 +342,10 @@ impl<'a, Message: Clone + 'static> HeaderBar<'a, Message> {
|
|||
widget = widget.on_release(message);
|
||||
}
|
||||
|
||||
if let Some(message) = self.on_right_click.clone() {
|
||||
widget = widget.on_right_press(message);
|
||||
}
|
||||
|
||||
widget.into()
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue