From 76954a6524a710efcdf035a3e43f161442899776 Mon Sep 17 00:00:00 2001 From: Ashley Wulber Date: Wed, 20 May 2026 14:49:19 -0400 Subject: [PATCH] fix: tooltip corner radius --- src/app/cosmic.rs | 8 ++++-- src/widget/wayland/tooltip/widget.rs | 41 +++++++++++++++++++--------- 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/src/app/cosmic.rs b/src/app/cosmic.rs index 0f5ef322..3ed4f30a 100644 --- a/src/app/cosmic.rs +++ b/src/app/cosmic.rs @@ -293,7 +293,7 @@ where return Task::none(); }; let settings = settings(); - let live_settings = Box::new(move |app: &T| live_settings()); + let live_settings = Box::new(move |_: &T| live_settings()); if let Some(view) = view.and_then(|view| { match std::sync::Arc::try_unwrap(view).ok()?.downcast:: Cosmic { ) -> Task> { use iced_winit::commands::corner_radius; use iced_winit::commands::layer_surface::set_padding; - + dbg!(id_wrapper, live_settings); let id = id_wrapper.inner(); let mut cmds = Vec::with_capacity(2); @@ -1553,12 +1553,14 @@ impl Cosmic { iced::window::disable_blur }; cmds.push(blur_cmd(id)); - } else if self.app.core().blur(&*t, Some(id_wrapper)) { + } else if self.app.core().blur(&t, Some(id_wrapper)) { cmds.push(iced::window::enable_blur(id)); } if let Some(corners) = live_settings.corners { + dbg!(corners); cmds.push(corner_radius::corner_radius(id, Some(corners)).discard()); } else { + dbg!("app corners"); let rounded = !self.app.core().window.sharp_corners && self.app.core().sync_window_border_radii_to_theme(); if let Some(cur_rad) = diff --git a/src/widget/wayland/tooltip/widget.rs b/src/widget/wayland/tooltip/widget.rs index b9de0a7c..a5e4520a 100644 --- a/src/widget/wayland/tooltip/widget.rs +++ b/src/widget/wayland/tooltip/widget.rs @@ -13,27 +13,20 @@ use std::time::Duration; use iced::Task; use iced_runtime::core::widget::Id; -use iced_core::event::{self, Event}; +use iced_core::event::Event; use iced_core::widget::Operation; use iced_core::widget::tree::{self, Tree}; use iced_core::{ Background, Border, Clipboard, Color, Layout, Length, Padding, Point, Rectangle, Shadow, Shell, - Vector, Widget, layout, mouse, overlay, renderer, svg, touch, + Vector, Widget, layout, mouse, overlay, renderer, touch, }; +use iced_runtime::platform_specific::wayland::CornerRadius; use crate::surface::action::LiveSettings; +use crate::theme::THEME; pub use super::{Catalog, Style}; -/// Internally defines different button widget variants. -enum Variant { - Normal, - Image { - close_icon: svg::Handle, - on_remove: Option, - }, -} - /// A generic button which emits a message when pressed. #[allow(missing_debug_implementations)] #[must_use] @@ -524,9 +517,20 @@ pub fn update<'a, Message: Clone + 'static, TopLevelMessage: Clone + 'static>( let boxed: Box = Box::new(boxed); + let theme = THEME.lock().unwrap(); + + let corners = theme.cosmic().corner_radii.radius_s; let boxed_live: Box< dyn Fn() -> LiveSettings + Send + Sync + 'static, - > = Box::new(move || Default::default()); + > = Box::new(move || LiveSettings { + corners: Some(CornerRadius { + top_left: corners[0] as u32, + top_right: corners[1] as u32, + bottom_left: corners[3] as u32, + bottom_right: corners[2] as u32, + }), + ..Default::default() + }); let boxed_live: Box = Box::new(boxed_live); crate::surface::Action::Popup( @@ -562,8 +566,19 @@ pub fn update<'a, Message: Clone + 'static, TopLevelMessage: Clone + 'static>( + 'static, > = Box::new(move || s(bounds)); let boxed: Box = Box::new(boxed); + let theme = THEME.lock().unwrap(); + + let corners = theme.cosmic().corner_radii.radius_s; let boxed_live: Box LiveSettings + Send + Sync + 'static> = - Box::new(move || Default::default()); + Box::new(move || LiveSettings { + corners: Some(CornerRadius { + top_left: corners[0] as u32, + top_right: corners[1] as u32, + bottom_left: corners[3] as u32, + bottom_right: corners[2] as u32, + }), + ..Default::default() + }); let boxed_live: Box = Box::new(boxed_live);