diff --git a/Cargo.lock b/Cargo.lock index 0508920..fd9ac4f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -330,9 +330,9 @@ checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f02882884d3e1bc524fb12c79f107f6ad0e1cfd498c536ffb494301740995dfe" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "as-raw-xcb-connection" @@ -1338,7 +1338,7 @@ dependencies = [ [[package]] name = "cosmic-client-toolkit" version = "0.2.0" -source = "git+https://github.com/pop-os/cosmic-protocols?rev=c253ec1#c253ec1d6804afbcdf250f5cc37ae1194bba7bd2" +source = "git+https://github.com/pop-os/cosmic-protocols?rev=32283d7#32283d76a8d0342da74c4cc022a533c52dcf378f" dependencies = [ "bitflags 2.13.0", "cosmic-protocols", @@ -1351,7 +1351,7 @@ dependencies = [ [[package]] name = "cosmic-config" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic.git#18a7a75e3316b1f4855777af677d989467f2da74" +source = "git+https://github.com/pop-os/libcosmic.git#ee5d965983957271cf759fd76e3e4eed4f188d35" dependencies = [ "atomicwrites", "cosmic-config-derive", @@ -1372,7 +1372,7 @@ dependencies = [ [[package]] name = "cosmic-config-derive" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic.git#18a7a75e3316b1f4855777af677d989467f2da74" +source = "git+https://github.com/pop-os/libcosmic.git#ee5d965983957271cf759fd76e3e4eed4f188d35" dependencies = [ "quote", "syn", @@ -1484,7 +1484,7 @@ dependencies = [ [[package]] name = "cosmic-protocols" version = "0.2.0" -source = "git+https://github.com/pop-os/cosmic-protocols?rev=c253ec1#c253ec1d6804afbcdf250f5cc37ae1194bba7bd2" +source = "git+https://github.com/pop-os/cosmic-protocols?rev=32283d7#32283d76a8d0342da74c4cc022a533c52dcf378f" dependencies = [ "bitflags 2.13.0", "wayland-backend", @@ -1543,13 +1543,14 @@ dependencies = [ [[package]] name = "cosmic-theme" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic.git#18a7a75e3316b1f4855777af677d989467f2da74" +source = "git+https://github.com/pop-os/libcosmic.git#ee5d965983957271cf759fd76e3e4eed4f188d35" dependencies = [ "almost", "configparser", "cosmic-config", "csscolorparser", "dirs 6.0.0", + "hex_color", "palette", "ron 0.12.2", "serde", @@ -2973,6 +2974,17 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "hex_color" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d37f101bf4c633f7ca2e4b5e136050314503dd198e78e325ea602c327c484ef0" +dependencies = [ + "arrayvec", + "rand 0.8.6", + "serde", +] + [[package]] name = "hexf-parse" version = "0.2.1" @@ -3091,7 +3103,7 @@ dependencies = [ [[package]] name = "iced" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#18a7a75e3316b1f4855777af677d989467f2da74" +source = "git+https://github.com/pop-os/libcosmic.git#ee5d965983957271cf759fd76e3e4eed4f188d35" dependencies = [ "dnd", "iced_accessibility", @@ -3112,7 +3124,7 @@ dependencies = [ [[package]] name = "iced_accessibility" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic.git#18a7a75e3316b1f4855777af677d989467f2da74" +source = "git+https://github.com/pop-os/libcosmic.git#ee5d965983957271cf759fd76e3e4eed4f188d35" dependencies = [ "accesskit", "accesskit_winit", @@ -3121,7 +3133,7 @@ dependencies = [ [[package]] name = "iced_core" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#18a7a75e3316b1f4855777af677d989467f2da74" +source = "git+https://github.com/pop-os/libcosmic.git#ee5d965983957271cf759fd76e3e4eed4f188d35" dependencies = [ "bitflags 2.13.0", "bytes", @@ -3146,7 +3158,7 @@ dependencies = [ [[package]] name = "iced_debug" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#18a7a75e3316b1f4855777af677d989467f2da74" +source = "git+https://github.com/pop-os/libcosmic.git#ee5d965983957271cf759fd76e3e4eed4f188d35" dependencies = [ "iced_core", "iced_futures", @@ -3156,7 +3168,7 @@ dependencies = [ [[package]] name = "iced_futures" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#18a7a75e3316b1f4855777af677d989467f2da74" +source = "git+https://github.com/pop-os/libcosmic.git#ee5d965983957271cf759fd76e3e4eed4f188d35" dependencies = [ "futures", "iced_core", @@ -3170,7 +3182,7 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#18a7a75e3316b1f4855777af677d989467f2da74" +source = "git+https://github.com/pop-os/libcosmic.git#ee5d965983957271cf759fd76e3e4eed4f188d35" dependencies = [ "bitflags 2.13.0", "bytemuck", @@ -3191,7 +3203,7 @@ dependencies = [ [[package]] name = "iced_program" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#18a7a75e3316b1f4855777af677d989467f2da74" +source = "git+https://github.com/pop-os/libcosmic.git#ee5d965983957271cf759fd76e3e4eed4f188d35" dependencies = [ "iced_graphics", "iced_runtime", @@ -3200,7 +3212,7 @@ dependencies = [ [[package]] name = "iced_renderer" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#18a7a75e3316b1f4855777af677d989467f2da74" +source = "git+https://github.com/pop-os/libcosmic.git#ee5d965983957271cf759fd76e3e4eed4f188d35" dependencies = [ "iced_graphics", "iced_tiny_skia", @@ -3212,7 +3224,7 @@ dependencies = [ [[package]] name = "iced_runtime" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#18a7a75e3316b1f4855777af677d989467f2da74" +source = "git+https://github.com/pop-os/libcosmic.git#ee5d965983957271cf759fd76e3e4eed4f188d35" dependencies = [ "bytes", "cosmic-client-toolkit", @@ -3227,7 +3239,7 @@ dependencies = [ [[package]] name = "iced_tiny_skia" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#18a7a75e3316b1f4855777af677d989467f2da74" +source = "git+https://github.com/pop-os/libcosmic.git#ee5d965983957271cf759fd76e3e4eed4f188d35" dependencies = [ "bytemuck", "cosmic-text", @@ -3244,7 +3256,7 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#18a7a75e3316b1f4855777af677d989467f2da74" +source = "git+https://github.com/pop-os/libcosmic.git#ee5d965983957271cf759fd76e3e4eed4f188d35" dependencies = [ "as-raw-xcb-connection", "bitflags 2.13.0", @@ -3275,7 +3287,7 @@ dependencies = [ [[package]] name = "iced_widget" version = "0.14.2" -source = "git+https://github.com/pop-os/libcosmic.git#18a7a75e3316b1f4855777af677d989467f2da74" +source = "git+https://github.com/pop-os/libcosmic.git#ee5d965983957271cf759fd76e3e4eed4f188d35" dependencies = [ "cosmic-client-toolkit", "dnd", @@ -3293,7 +3305,7 @@ dependencies = [ [[package]] name = "iced_winit" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git#18a7a75e3316b1f4855777af677d989467f2da74" +source = "git+https://github.com/pop-os/libcosmic.git#ee5d965983957271cf759fd76e3e4eed4f188d35" dependencies = [ "cosmic-client-toolkit", "cursor-icon", @@ -3750,9 +3762,9 @@ dependencies = [ [[package]] name = "ignore" -version = "0.4.26" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b915661dd01db3f05050265b2477bcc6527b3792388e2749b41623cc592be67d" +checksum = "fe112b004901c62c2faa11f4f75e9864e0cc5af8da71c9115d184a3aa888749f" dependencies = [ "crossbeam-deque", "globset", @@ -3864,9 +3876,9 @@ dependencies = [ [[package]] name = "inotify-sys" -version = "0.1.5" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +checksum = "9ea94e891b3606826e9c998be69ddca42247dad8ad50b1649a5cb7e1c9ae06fd" dependencies = [ "libc", ] @@ -4018,9 +4030,9 @@ dependencies = [ [[package]] name = "jiff-tzdb" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c900ef84826f1338a557697dc8fc601df9ca9af4ac137c7fb61d4c6f2dfd3076" +checksum = "6142247df1a93c2b3587402a19710be3e6e942f1581a1702e76408f2c21d6590" [[package]] name = "jiff-tzdb-platform" @@ -4403,7 +4415,7 @@ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libcosmic" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic.git#18a7a75e3316b1f4855777af677d989467f2da74" +source = "git+https://github.com/pop-os/libcosmic.git#ee5d965983957271cf759fd76e3e4eed4f188d35" dependencies = [ "apply", "ashpd 0.12.3", @@ -4416,6 +4428,7 @@ dependencies = [ "cosmic-theme", "css-color", "derive_setters", + "enumflags2", "float-cmp 0.10.0", "freedesktop-desktop-entry", "futures", @@ -4481,14 +4494,14 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3" +checksum = "c943259e342f1e06ff2da7a83eabdfe7f92ce10262688dbf1895ff0b3e6e4652" dependencies = [ "bitflags 2.13.0", "libc", "plain", - "redox_syscall 0.8.1", + "redox_syscall 0.9.0", ] [[package]] @@ -5859,15 +5872,6 @@ dependencies = [ "serde", ] -[[package]] -name = "quick-xml" -version = "0.37.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" -dependencies = [ - "memchr", -] - [[package]] name = "quick-xml" version = "0.38.4" @@ -6094,9 +6098,9 @@ dependencies = [ [[package]] name = "redox_event" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c07d0d6d291e3a951bd847b1cd4af32fc6243d64116cf7702838c02797688b7" +checksum = "c5018d583d6d2f5499352aea8d177e9067d1eb03ab17c78169d5ba7a30001b15" dependencies = [ "bitflags 2.13.0", "libredox", @@ -6113,9 +6117,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.8.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b44b894f2a6e36457d665d1e08c3866add6ed5e70050c1b4ba8a8ddedb02ce7" +checksum = "c5102a6aaa05aa011a238e178e6bca86d2cb56fc9f586d37cb80f5bca6e07759" dependencies = [ "bitflags 2.13.0", ] @@ -6961,11 +6965,10 @@ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca" [[package]] name = "tauri-winrt-notification" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b1e66e07de489fe43a46678dd0b8df65e0c973909df1b60ba33874e297ba9b9" +checksum = "9ed071c670382e85fc2f48ae706492d8c338f4f89bf72520d32f8abfe880aade" dependencies = [ - "quick-xml 0.37.5", "thiserror 2.0.18", "windows 0.61.3", "windows-version", @@ -7122,9 +7125,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.52" +version = "0.3.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e48db7b415311b615f910b3dcaa4557bcd4bf1982379c95c223fd8c2a20e210" +checksum = "18dfaaeddcb932337b5e7866ee7d0ce9b76d2fd092997146f187ec09b4558a50" dependencies = [ "deranged", "js-sys", @@ -9349,9 +9352,9 @@ dependencies = [ [[package]] name = "zlib-rs" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "977347db8caa080403f6b6b7c1cda9479a8e869316f7e13a59b19076a40f94e3" +checksum = "5431d5661c32445236631278f27946e444ddafe4684cac70b185272d4f9c52d5" [[package]] name = "zmij" diff --git a/Cargo.toml b/Cargo.toml index da030fc..ada532f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,7 @@ anyhow = "1" jiff = "0.2" jiff-icu = "0.2" icu = { version = "2.2.0", features = ["compiled_data"] } -cctk = { git = "https://github.com/pop-os/cosmic-protocols", package = "cosmic-client-toolkit", rev = "c253ec1", optional = true } +cctk = { git = "https://github.com/pop-os/cosmic-protocols", package = "cosmic-client-toolkit", rev = "32283d7", optional = true } cosmic-mime-apps = { git = "https://github.com/pop-os/cosmic-mime-apps.git", optional = true } dirs = "6.0.0" gio = { version = "0.21", optional = true } @@ -153,9 +153,9 @@ tokio = { version = "1", features = ["rt", "macros"] } # libcosmic = { path = "../libcosmic" } # cosmic-config = { path = "../libcosmic/cosmic-config" } # cosmic-theme = { path = "../libcosmic/cosmic-theme" } -# libcosmic = { git = "https://github.com/pop-os/libcosmic//", branch = "iced-rebase" } -# cosmic-config = { git = "https://github.com/pop-os/libcosmic//", branch = "iced-rebase" } -# cosmic-theme = { git = "https://github.com/pop-os/libcosmic//", branch = "iced-rebase" } +# libcosmic = { git = "https://github.com/pop-os/libcosmic//", branch = "theme-v2" } +# cosmic-config = { git = "https://github.com/pop-os/libcosmic//", branch = "theme-v2" } +# cosmic-theme = { git = "https://github.com/pop-os/libcosmic//", branch = "theme-v2" } # [patch.'https://github.com/pop-os/smithay-clipboard'] diff --git a/src/app.rs b/src/app.rs index e9fe8cc..fe7404b 100644 --- a/src/app.rs +++ b/src/app.rs @@ -2,6 +2,7 @@ // SPDX-License-Identifier: GPL-3.0-only use cosmic::app::{self, Core, Task, context_drawer}; +use cosmic::core::Auto; use cosmic::cosmic_config::{self, ConfigSet}; use cosmic::iced::clipboard::dnd::DndAction; use cosmic::iced::core::SmolStr; @@ -27,7 +28,7 @@ use cosmic::iced::{ IcedMargin, IcedOutput, SctkLayerSurfaceSettings, }, platform_specific::shell::wayland::commands::layer_surface::{ - Anchor, KeyboardInteractivity, Layer, destroy_layer_surface, get_layer_surface, + Anchor, KeyboardInteractivity, Layer, destroy_layer_surface, }, }; use cosmic::widget::about::About; @@ -2405,6 +2406,9 @@ impl Application for App { ), ]); + if matches!(flags.mode, Mode::Desktop) { + core.set_auto_blur(Auto::Window | Auto::Popup); + } let mut app = Self { core, about, @@ -2521,9 +2525,17 @@ impl Application for App { .on_middle_press(|entity| { cosmic::Action::App(Message::NavMenuAction(NavMenuAction::OpenInNewTab(entity))) }) - .context_menu(self.nav_context_menu(self.nav_bar_context_id)) - .close_icon(icon::from_name("media-eject-symbolic").size(16).icon()) - .into_container(); + .context_menu(self.nav_context_menu()) + .close_icon(icon::from_name("media-eject-symbolic").size(16).icon()); + + #[cfg(feature = "wayland")] + { + nav = nav + .window_id_maybe(self.core().main_window_id()) + .on_surface_action(|m| cosmic::Action::Cosmic(cosmic::app::Action::Surface(m))) + } + + let mut nav = nav.into_container(); if !self.core.is_condensed() { nav = nav.max_width(280); @@ -2534,97 +2546,100 @@ impl Application for App { )) } - fn nav_context_menu( - &self, - entity: widget::nav_bar::Id, - ) -> Option>>> { - let favorite_index_opt = self.nav_model.data::(entity); - let location_opt = self.nav_model.data::(entity); + fn nav_context_menu(&self) -> Option>>> { + let items = self.nav_model.iter().map(|entity| { + let favorite_index_opt = self.nav_model.data::(entity); + let location_opt = self.nav_model.data::(entity); - let mut items = Vec::with_capacity(7); + let mut items: Vec> = Vec::with_capacity(7); - if location_opt - .and_then(Location::path_opt) - .is_some_and(|x| x.is_file()) - { - items.push(cosmic::widget::menu::Item::Button( - fl!("open"), - None, - NavMenuAction::Open(entity), - )); - items.push(cosmic::widget::menu::Item::Button( - fl!("menu-open-with"), - None, - NavMenuAction::OpenWith(entity), - )); - } else { - items.push(cosmic::widget::menu::Item::Button( - fl!("open-in-new-tab"), - None, - NavMenuAction::OpenInNewTab(entity), - )); - items.push(cosmic::widget::menu::Item::Button( - fl!("open-in-new-window"), - None, - NavMenuAction::OpenInNewWindow(entity), - )); - } - if let Some(path) = location_opt.and_then(Location::path_opt) { - let selected_dir = usize::from(path.is_dir()); - let action_items: Vec<_> = self - .config - .context_actions - .iter() - .enumerate() - .filter(|(_, action)| action.matches_selection(1, selected_dir)) - .map(|(i, action)| { - cosmic::widget::menu::Item::Button( - action.name.clone(), - None, - NavMenuAction::RunContextAction(entity, i), - ) - }) - .collect(); - - if !action_items.is_empty() { - items.push(cosmic::widget::menu::Item::Divider); - items.extend(action_items); + if location_opt + .and_then(Location::path_opt) + .is_some_and(|x| x.is_file()) + { + items.push(cosmic::widget::menu::Item::Button( + fl!("open"), + None, + NavMenuAction::Open(entity), + )); + items.push(cosmic::widget::menu::Item::Button( + fl!("menu-open-with"), + None, + NavMenuAction::OpenWith(entity), + )); + } else { + items.push(cosmic::widget::menu::Item::Button( + fl!("open-in-new-tab"), + None, + NavMenuAction::OpenInNewTab(entity), + )); + items.push(cosmic::widget::menu::Item::Button( + fl!("open-in-new-window"), + None, + NavMenuAction::OpenInNewWindow(entity), + )); } - } - items.push(cosmic::widget::menu::Item::Divider); - if matches!(location_opt, Some(Location::Path(..))) { - items.push(cosmic::widget::menu::Item::Button( - fl!("show-details"), - None, - NavMenuAction::Preview(entity), - )); - } - items.push(cosmic::widget::menu::Item::Divider); - if favorite_index_opt.is_some() { - items.push(cosmic::widget::menu::Item::Button( - fl!("remove-from-sidebar"), - None, - NavMenuAction::RemoveFromSidebar(entity), - )); - } + if let Some(path) = location_opt.and_then(Location::path_opt) { + let selected_dir = usize::from(path.is_dir()); + let action_items: Vec<_> = self + .config + .context_actions + .iter() + .enumerate() + .filter(|(_, action)| action.matches_selection(1, selected_dir)) + .map(|(i, action)| { + cosmic::widget::menu::Item::Button( + action.name.clone(), + None, + NavMenuAction::RunContextAction(entity, i), + ) + }) + .collect(); - if matches!(location_opt, Some(Location::Recents)) && tab::has_recents() { - items.push(cosmic::widget::menu::Item::Button( - fl!("clear-recents-history"), - None, - NavMenuAction::ClearRecents, - )); - } + if !action_items.is_empty() { + items.push(cosmic::widget::menu::Item::Divider); + items.extend(action_items); + } + } + items.push(cosmic::widget::menu::Item::Divider); + if matches!(location_opt, Some(Location::Path(..))) { + items.push(cosmic::widget::menu::Item::Button( + fl!("show-details"), + None, + NavMenuAction::Preview(entity), + )); + } + items.push(cosmic::widget::menu::Item::Divider); + if favorite_index_opt.is_some() { + items.push(cosmic::widget::menu::Item::Button( + fl!("remove-from-sidebar"), + None, + NavMenuAction::RemoveFromSidebar(entity), + )); + } - if matches!(location_opt, Some(Location::Trash)) && !Trash::is_empty() { - items.push(cosmic::widget::menu::Item::Button( - fl!("empty-trash"), - None, - NavMenuAction::EmptyTrash, - )); - } + if matches!(location_opt, Some(Location::Recents)) && tab::has_recents() { + items.push(cosmic::widget::menu::Item::Button( + fl!("clear-recents-history"), + None, + NavMenuAction::ClearRecents, + )); + } - Some(cosmic::widget::menu::items(&HashMap::new(), items)) + if matches!(location_opt, Some(Location::Trash)) && !Trash::is_empty() { + items.push(cosmic::widget::menu::Item::Button( + fl!("empty-trash"), + None, + NavMenuAction::EmptyTrash, + )); + } + items + }); + + Some(cosmic::widget::menu::nav_context( + &HashMap::new(), + items.collect(), + )) } fn nav_model(&self) -> Option<&segmented_button::SingleSelectModel> { @@ -4481,9 +4496,10 @@ impl Application for App { use cctk::wayland_protocols::xdg::shell::client::xdg_positioner::{ Anchor, Gravity, }; - use cosmic::iced::runtime::platform_specific::wayland::popup::{ + use cosmic::{iced::runtime::platform_specific::wayland::popup::{ SctkPopupSettings, SctkPositioner, - }; + }, widget::menu::StyleSheet as _}; + let window_id = WindowId::unique(); self.windows.insert( window_id, @@ -4493,9 +4509,24 @@ impl Application for App { )), ); commands.push(self.update(Message::CheckClipboard)); + let t = self.core.system_theme(); + let styling = t.appearance( + &cosmic::theme::menu_bar::MenuBarStyle::Default, + false, + ); + let rad = styling.menu_border_radius; + commands.push(self.update(Message::Surface( cosmic::surface::action::app_popup( - move |app: &mut Self| -> SctkPopupSettings { + move |_| cosmic::surface::action::LiveSettings { + corners: Some(iced::runtime::platform_specific::wayland::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 |app: &mut Self| -> SctkPopupSettings { let anchor_rect = Rectangle { x: point.x as i32, y: point.y as i32, @@ -5264,24 +5295,37 @@ impl Application for App { .insert(surface_id, Window::new(WindowKind::Desktop(entity))); return Task::batch([ command, - get_layer_surface(SctkLayerSurfaceSettings { - id: surface_id, - layer: Layer::Bottom, - keyboard_interactivity: KeyboardInteractivity::OnDemand, - input_zone: None, - anchor: Anchor::TOP | Anchor::BOTTOM | Anchor::LEFT | Anchor::RIGHT, - output: IcedOutput::Output(output), - namespace: "cosmic-files-applet".into(), - size: Some((None, None)), - margin: IcedMargin { - top: 0, - bottom: 0, - left: 0, - right: 0, - }, - exclusive_zone: 0, - size_limits: Limits::NONE.min_width(1.0).min_height(1.0), - }), + cosmic::task::message(cosmic::action::cosmic( + cosmic::app::Action::Surface( + cosmic::surface::action::app_layer_shell( + |_| Default::default(), + move |_: &mut App| SctkLayerSurfaceSettings { + id: surface_id, + layer: Layer::Bottom, + keyboard_interactivity: KeyboardInteractivity::OnDemand, + input_zone: None, + anchor: Anchor::TOP + | Anchor::BOTTOM + | Anchor::LEFT + | Anchor::RIGHT, + output: IcedOutput::Output(output.clone()), + namespace: "cosmic-files-applet".into(), + size: Some((None, None)), + margin: IcedMargin { + top: 0, + bottom: 0, + left: 0, + right: 0, + }, + exclusive_zone: 0, + size_limits: Limits::NONE + .min_width(1.0) + .min_height(1.0), + }, + None, + ), + ), + )), #[cfg(all(feature = "wayland", feature = "desktop-applet"))] overlap_notify(surface_id, true), ]); @@ -6451,7 +6495,6 @@ impl Application for App { }) .drag_id(self.tab_drag_id), ) - .class(style::Container::Background) .width(Length::Fill) .padding([0, space_s]), ); diff --git a/src/dialog.rs b/src/dialog.rs index 7b47b7a..b369b73 100644 --- a/src/dialog.rs +++ b/src/dialog.rs @@ -1790,11 +1790,28 @@ impl Application for App { SctkPopupSettings, SctkPositioner, }; use cosmic::iced::Rectangle; + use cosmic::widget::menu::StyleSheet as _; + let window_id = window::Id::unique(); self.context_menu_window = Some(window_id); let autosize_id = widget::Id::unique(); + let t = self.core.system_theme(); + let styling = t.appearance( + &cosmic::theme::menu_bar::MenuBarStyle::Default, + false, + ); + let rad = styling.menu_border_radius; commands.push(self.update(Message::Surface( cosmic::surface::action::app_popup( + move |_| cosmic::surface::action::LiveSettings { + corners: Some(iced::runtime::platform_specific::wayland::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 |app: &mut Self| -> SctkPopupSettings { let anchor_rect = Rectangle { x: point.x as i32, diff --git a/src/menu.rs b/src/menu.rs index 4708826..86db158 100644 --- a/src/menu.rs +++ b/src/menu.rs @@ -69,7 +69,7 @@ pub fn context_menu<'a>( String::new() }; fn key_style(theme: &cosmic::Theme) -> TextStyle { - let mut color = theme.cosmic().background.component.on; + let mut color = theme.cosmic().background(theme.transparent).component.on; color.alpha *= 0.75; TextStyle { color: Some(color.into()), @@ -77,7 +77,7 @@ pub fn context_menu<'a>( } } fn disabled_style(theme: &cosmic::Theme) -> TextStyle { - let mut color = theme.cosmic().background.component.on; + let mut color = theme.cosmic().background(theme.transparent).component.on; color.alpha *= 0.5; TextStyle { color: Some(color.into()), @@ -436,12 +436,12 @@ pub fn context_menu<'a>( } } - container(column::with_children(children)) + container(cosmic::widget::menu::menu_column::MenuColumn::with_children(children)) .padding(1) //TODO: move style to libcosmic .style(|theme| { let cosmic = theme.cosmic(); - let component = &cosmic.background.component; + let component = &cosmic.background(theme.transparent); container::Style { icon_color: Some(component.on.into()), text_color: Some(component.on.into()), @@ -835,7 +835,7 @@ pub fn location_context_menu<'a>(ancestor_index: usize) -> Element<'a, tab::Mess .padding(1) .style(|theme| { let cosmic = theme.cosmic(); - let component = &cosmic.background.component; + let component = &cosmic.background(theme.transparent).component; container::Style { icon_color: Some(component.on.into()), text_color: Some(component.on.into()), diff --git a/src/tab.rs b/src/tab.rs index 26a7ea7..b3a0ede 100644 --- a/src/tab.rs +++ b/src/tab.rs @@ -180,7 +180,9 @@ fn button_appearance( appearance.icon_color = Some(Color::from(cosmic.on_bg_component_color())); appearance.text_color = Some(Color::from(cosmic.on_bg_component_color())); if cut { - appearance.text_color = Some(Color::from(cosmic.background.component.on_disabled)); + appearance.text_color = Some(Color::from( + cosmic.background(theme.transparent).component.on_disabled, + )); } else { appearance.text_color = Some(Color::from(cosmic.on_bg_component_color())); } @@ -191,12 +193,16 @@ fn button_appearance( appearance.background = Some(Color::from(cosmic.bg_color()).into()); appearance.icon_color = Some(Color::from(cosmic.on_bg_color())); if cut { - appearance.text_color = Some(Color::from(cosmic.background.component.disabled)); + appearance.text_color = Some(Color::from( + cosmic.background(theme.transparent).component.disabled, + )); } else { appearance.text_color = Some(Color::from(cosmic.on_bg_color())); } } else if cut { - appearance.text_color = Some(Color::from(cosmic.background.component.on_disabled)); + appearance.text_color = Some(Color::from( + cosmic.background(theme.transparent).component.on_disabled, + )); } if focused && accent { appearance.outline_width = 1.0;