diff --git a/src/widget/context_menu.rs b/src/widget/context_menu.rs index b66f95b1..4b31fc01 100644 --- a/src/widget/context_menu.rs +++ b/src/widget/context_menu.rs @@ -82,7 +82,9 @@ impl ContextMenu<'_, Message> { ) { if self.window_id != window::Id::NONE && self.on_surface_action.is_some() { use crate::surface::action::{LiveSettings, destroy_popup}; - use crate::widget::menu::Menu; + use crate::theme::THEME; + use crate::widget::menu::{Menu, StyleSheet as _}; + use iced_runtime::platform_specific::wayland::CornerRadius; use iced_runtime::platform_specific::wayland::popup::{ SctkPopupSettings, SctkPositioner, }; @@ -185,9 +187,22 @@ impl ContextMenu<'_, Message> { ..Default::default() }; let parent = self.window_id; + let t = THEME.lock().unwrap(); + let styling = t.appearance(&crate::theme::menu_bar::MenuBarStyle::Default, false); + drop(t); + let rad = styling.menu_border_radius; + shell.publish((self.on_surface_action.as_ref().unwrap())( crate::surface::action::simple_popup( - || LiveSettings::default(), + move || LiveSettings { + corners: Some(CornerRadius { + top_left: rad[0] as u32, + top_right: rad[1] as u32, + bottom_left: rad[2] as u32, + bottom_right: rad[3] as u32, + }), + ..Default::default() + }, move || SctkPopupSettings { parent, id, diff --git a/src/widget/menu/menu_bar.rs b/src/widget/menu/menu_bar.rs index 560b8d2a..0e9fe1c3 100644 --- a/src/widget/menu/menu_bar.rs +++ b/src/widget/menu/menu_bar.rs @@ -385,9 +385,13 @@ where my_state: &mut MenuBarState, ) { if self.window_id != window::Id::NONE && self.on_surface_action.is_some() { - use crate::surface::action::{LiveSettings, destroy_popup}; - use iced_runtime::platform_specific::wayland::popup::{ - SctkPopupSettings, SctkPositioner, + use crate::{ + surface::action::{LiveSettings, destroy_popup}, + theme::THEME, + }; + use iced_runtime::platform_specific::wayland::{ + CornerRadius, + popup::{SctkPopupSettings, SctkPositioner}, }; let surface_action = self.on_surface_action.as_ref().unwrap(); @@ -500,8 +504,22 @@ where ..Default::default() }; let parent = self.window_id; + + let t = THEME.lock().unwrap(); + let styling = t.appearance(&crate::theme::menu_bar::MenuBarStyle::Default, false); + drop(t); + let rad = styling.menu_border_radius; + shell.publish((surface_action)(crate::surface::action::simple_popup( - || LiveSettings::default(), + move || LiveSettings { + corners: Some(CornerRadius { + top_left: rad[0] as u32, + top_right: rad[1] as u32, + bottom_left: rad[2] as u32, + bottom_right: rad[3] as u32, + }), + ..Default::default() + }, move || SctkPopupSettings { parent, id, diff --git a/src/widget/menu/menu_inner.rs b/src/widget/menu/menu_inner.rs index 47e8e30d..ead2d5ac 100644 --- a/src/widget/menu/menu_inner.rs +++ b/src/widget/menu/menu_inner.rs @@ -986,11 +986,12 @@ impl Widget Widget