From ae89afcc5f1f742e1be8bec745ea58462cbf4b77 Mon Sep 17 00:00:00 2001 From: Ashley Wulber Date: Mon, 14 Nov 2022 13:20:02 +0100 Subject: [PATCH] fix: better popup size --- applets/cosmic-applet-graphics/src/main.rs | 2 +- applets/cosmic-applet-graphics/src/window.rs | 94 ++++++++++++-------- 2 files changed, 56 insertions(+), 40 deletions(-) diff --git a/applets/cosmic-applet-graphics/src/main.rs b/applets/cosmic-applet-graphics/src/main.rs index 35a34712..192a5017 100644 --- a/applets/cosmic-applet-graphics/src/main.rs +++ b/applets/cosmic-applet-graphics/src/main.rs @@ -4,8 +4,8 @@ mod window; use cosmic::{ iced::{sctk_settings::InitialSurface, Application}, - iced_native::window::Settings, iced_native::command::platform_specific::wayland::window::SctkWindowSettings, + iced_native::window::Settings, settings, }; use cosmic_panel_config::PanelSize; diff --git a/applets/cosmic-applet-graphics/src/window.rs b/applets/cosmic-applet-graphics/src/window.rs index ea45fe7a..6554b27b 100644 --- a/applets/cosmic-applet-graphics/src/window.rs +++ b/applets/cosmic-applet-graphics/src/window.rs @@ -14,13 +14,18 @@ use iced_sctk::alignment::Horizontal; use iced_sctk::commands::popup::{destroy_popup, get_popup}; use zbus::Connection; -#[derive(Default, Clone, Copy)] +#[derive(Clone, Copy)] enum State { - #[default] - SelectGraphicsMode, + SelectGraphicsMode(bool), SettingGraphicsMode(Graphics), } +impl Default for State { + fn default() -> Self { + Self::SelectGraphicsMode(false) + } +} + #[derive(Default)] pub struct Window { popup: Option, @@ -96,7 +101,7 @@ impl Application for Window { Message::AppliedGraphicsMode(g) => { if let Some(g) = g { self.graphics_mode.replace(g); - self.state = State::SelectGraphicsMode; + self.state = State::SelectGraphicsMode(true); } } Message::TogglePopup => { @@ -113,7 +118,9 @@ impl Application for Window { |cur_graphics| Message::CurrentGraphics(cur_graphics.ok()), )); } - let popup_settings = get_popup_settings(window::Id::new(0), new_id, None, None); + let mut popup_settings = + get_popup_settings(window::Id::new(0), new_id, None, None); + popup_settings.positioner.size = (200, 240); commands.push(get_popup(popup_settings)); return Command::batch(commands); } @@ -134,7 +141,6 @@ impl Application for Window { ); } Message::CurrentGraphics(g) => { - dbg!(g); if let Some(g) = g { self.graphics_mode.replace(g); } @@ -145,39 +151,49 @@ impl Application for Window { fn view_popup(&self, _: window::Id) -> Element { let content = match self.state { - State::SelectGraphicsMode => column(vec![ - radio( - "Integrated Graphics", - Graphics::Integrated, - self.graphics_mode, - |g| Message::SelectGraphicsMode(g), - ) - .into(), - radio( - "Nvidia Graphics", - Graphics::Nvidia, - self.graphics_mode, - |g| Message::SelectGraphicsMode(g), - ) - .into(), - radio( - "Hybrid Graphics", - Graphics::Hybrid, - self.graphics_mode, - |g| Message::SelectGraphicsMode(g), - ) - .into(), - radio( - "Compute Graphics", - Graphics::Compute, - self.graphics_mode, - |g| Message::SelectGraphicsMode(g), - ) - .into(), - ]) - .padding([8, 0]) - .spacing(8) - .into(), + State::SelectGraphicsMode(pending_restart) => { + let mut content_list = vec![ + radio( + "Integrated Graphics", + Graphics::Integrated, + self.graphics_mode, + |g| Message::SelectGraphicsMode(g), + ) + .into(), + radio( + "Nvidia Graphics", + Graphics::Nvidia, + self.graphics_mode, + |g| Message::SelectGraphicsMode(g), + ) + .into(), + radio( + "Hybrid Graphics", + Graphics::Hybrid, + self.graphics_mode, + |g| Message::SelectGraphicsMode(g), + ) + .into(), + radio( + "Compute Graphics", + Graphics::Compute, + self.graphics_mode, + |g| Message::SelectGraphicsMode(g), + ) + .into(), + ]; + if pending_restart { + content_list.insert( + 0, + text("Restart to apply changes") + .width(Length::Fill) + .horizontal_alignment(Horizontal::Center) + .size(16) + .into(), + ) + } + column(content_list).padding([8, 0]).spacing(8).into() + } State::SettingGraphicsMode(graphics) => { let graphics_str = match graphics { Graphics::Integrated => "integrated",