diff options
author | 2024-02-13 05:02:54 +0100 | |
---|---|---|
committer | 2024-02-13 05:02:54 +0100 | |
commit | 52e207b89bb79dba210c581b790f794e6e0c94e8 (patch) | |
tree | 574699133deaceb86ed3511d3d57782c1d433f5c /winit | |
parent | 7a1e10503697b68a4d6206551c34702ec8a69b79 (diff) | |
parent | a64cda6e3ed98fc805cb6331c3619e59840d4f75 (diff) | |
download | iced-52e207b89bb79dba210c581b790f794e6e0c94e8.tar.gz iced-52e207b89bb79dba210c581b790f794e6e0c94e8.tar.bz2 iced-52e207b89bb79dba210c581b790f794e6e0c94e8.zip |
Merge pull request #2243 from ids1024/show_window_menu
Add `show_window_menu` action
Diffstat (limited to '')
-rw-r--r-- | winit/src/application.rs | 8 | ||||
-rw-r--r-- | winit/src/multi_window.rs | 15 |
2 files changed, 23 insertions, 0 deletions
diff --git a/winit/src/application.rs b/winit/src/application.rs index ad461738..0c596b3f 100644 --- a/winit/src/application.rs +++ b/winit/src/application.rs @@ -807,6 +807,14 @@ pub fn run_command<A, C, E>( window::Action::ChangeLevel(_id, level) => { window.set_window_level(conversion::window_level(level)); } + window::Action::ShowSystemMenu(_id) => { + if let mouse::Cursor::Available(point) = state.cursor() { + window.show_window_menu(winit::dpi::LogicalPosition { + x: point.x, + y: point.y, + }); + } + } window::Action::FetchId(_id, tag) => { proxy .send_event(tag(window.id().into())) diff --git a/winit/src/multi_window.rs b/winit/src/multi_window.rs index 72cd939f..c63dd433 100644 --- a/winit/src/multi_window.rs +++ b/winit/src/multi_window.rs @@ -6,6 +6,7 @@ pub use state::State; use crate::conversion; use crate::core; +use crate::core::mouse; use crate::core::renderer; use crate::core::widget::operation; use crate::core::window; @@ -1058,6 +1059,20 @@ fn run_command<A, C, E>( .set_window_level(conversion::window_level(level)); } } + window::Action::ShowSystemMenu(id) => { + if let Some(window) = window_manager.get_mut(id) { + if let mouse::Cursor::Available(point) = + window.state.cursor() + { + window.raw.show_window_menu( + winit::dpi::LogicalPosition { + x: point.x, + y: point.y, + }, + ); + } + } + } window::Action::FetchId(id, tag) => { if let Some(window) = window_manager.get_mut(id) { proxy |