fix: refactor & handle close requests

This commit is contained in:
Ashley Wulber 2022-11-15 12:00:41 +01:00
parent e55ce3e519
commit 5b722286a1
No known key found for this signature in database
GPG key ID: 5216D4F46A90A820
3 changed files with 109 additions and 110 deletions

View file

@ -1271,7 +1271,7 @@ checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df"
[[package]] [[package]]
name = "iced" name = "iced"
version = "0.5.1" version = "0.5.1"
source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#21f8ec347081b262e22ddc7ec8377cc97df005a2" source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#e5d0240fab766a308916af0899a01e95daf2edf2"
dependencies = [ dependencies = [
"iced_core", "iced_core",
"iced_futures", "iced_futures",
@ -1287,7 +1287,7 @@ dependencies = [
[[package]] [[package]]
name = "iced_core" name = "iced_core"
version = "0.6.0" version = "0.6.0"
source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#21f8ec347081b262e22ddc7ec8377cc97df005a2" source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#e5d0240fab766a308916af0899a01e95daf2edf2"
dependencies = [ dependencies = [
"bitflags", "bitflags",
"palette", "palette",
@ -1297,7 +1297,7 @@ dependencies = [
[[package]] [[package]]
name = "iced_futures" name = "iced_futures"
version = "0.5.0" version = "0.5.0"
source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#21f8ec347081b262e22ddc7ec8377cc97df005a2" source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#e5d0240fab766a308916af0899a01e95daf2edf2"
dependencies = [ dependencies = [
"futures", "futures",
"log", "log",
@ -1308,7 +1308,7 @@ dependencies = [
[[package]] [[package]]
name = "iced_glow" name = "iced_glow"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#21f8ec347081b262e22ddc7ec8377cc97df005a2" source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#e5d0240fab766a308916af0899a01e95daf2edf2"
dependencies = [ dependencies = [
"bytemuck", "bytemuck",
"euclid", "euclid",
@ -1323,7 +1323,7 @@ dependencies = [
[[package]] [[package]]
name = "iced_graphics" name = "iced_graphics"
version = "0.4.0" version = "0.4.0"
source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#21f8ec347081b262e22ddc7ec8377cc97df005a2" source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#e5d0240fab766a308916af0899a01e95daf2edf2"
dependencies = [ dependencies = [
"bitflags", "bitflags",
"bytemuck", "bytemuck",
@ -1343,7 +1343,7 @@ dependencies = [
[[package]] [[package]]
name = "iced_lazy" name = "iced_lazy"
version = "0.2.0" version = "0.2.0"
source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#21f8ec347081b262e22ddc7ec8377cc97df005a2" source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#e5d0240fab766a308916af0899a01e95daf2edf2"
dependencies = [ dependencies = [
"iced_native", "iced_native",
"ouroboros", "ouroboros",
@ -1352,7 +1352,7 @@ dependencies = [
[[package]] [[package]]
name = "iced_native" name = "iced_native"
version = "0.6.0" version = "0.6.0"
source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#21f8ec347081b262e22ddc7ec8377cc97df005a2" source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#e5d0240fab766a308916af0899a01e95daf2edf2"
dependencies = [ dependencies = [
"iced_core", "iced_core",
"iced_futures", "iced_futures",
@ -1366,7 +1366,7 @@ dependencies = [
[[package]] [[package]]
name = "iced_sctk" name = "iced_sctk"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/pop-os/iced-sctk#b3c070635c6023602f6c66d4a99802b7f610e5cb" source = "git+https://github.com/pop-os/iced-sctk#f3d278aef51e237e3da02fafb309d7afd73d3548"
dependencies = [ dependencies = [
"enum-repr", "enum-repr",
"futures", "futures",
@ -1385,7 +1385,7 @@ dependencies = [
[[package]] [[package]]
name = "iced_style" name = "iced_style"
version = "0.5.0" version = "0.5.0"
source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#21f8ec347081b262e22ddc7ec8377cc97df005a2" source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#e5d0240fab766a308916af0899a01e95daf2edf2"
dependencies = [ dependencies = [
"iced_core", "iced_core",
"once_cell", "once_cell",
@ -1395,7 +1395,7 @@ dependencies = [
[[package]] [[package]]
name = "iced_wgpu" name = "iced_wgpu"
version = "0.6.0" version = "0.6.0"
source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#21f8ec347081b262e22ddc7ec8377cc97df005a2" source = "git+https://github.com/pop-os/iced?branch=sctk-cosmic#e5d0240fab766a308916af0899a01e95daf2edf2"
dependencies = [ dependencies = [
"bitflags", "bitflags",
"bytemuck", "bytemuck",
@ -1546,7 +1546,7 @@ checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89"
[[package]] [[package]]
name = "libcosmic" name = "libcosmic"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/pop-os/libcosmic/?branch=sctk-cosmic-design-system#9174e4209964f3d924fb280c89301e8fba4967fb" source = "git+https://github.com/pop-os/libcosmic/?branch=sctk-cosmic-design-system#c48fca40fe2c9068b5fec95605ad1f11bf3415bf"
dependencies = [ dependencies = [
"apply", "apply",
"cosmic-panel-config", "cosmic-panel-config",
@ -3401,9 +3401,9 @@ dependencies = [
[[package]] [[package]]
name = "zvariant" name = "zvariant"
version = "3.7.1" version = "3.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b794fb7f59af4105697b0449ba31731ee5dbb3e773a17dbdf3d36206ea1b1644" checksum = "5c817f416f05fcbc833902f1e6064b72b1778573978cfeac54731451ccc9e207"
dependencies = [ dependencies = [
"byteorder", "byteorder",
"enumflags2", "enumflags2",
@ -3415,9 +3415,9 @@ dependencies = [
[[package]] [[package]]
name = "zvariant_derive" name = "zvariant_derive"
version = "3.7.1" version = "3.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd58d4b6c8e26d3dd2149c8c40c6613ef6451b9885ff1296d1ac86c388351a54" checksum = "fdd24fffd02794a76eb10109de463444064c88f5adb9e9d1a78488adc332bfef"
dependencies = [ dependencies = [
"proc-macro-crate", "proc-macro-crate",
"proc-macro2", "proc-macro2",

View file

@ -10,5 +10,6 @@ zbus = "3.4"
libcosmic = { git = "https://github.com/pop-os/libcosmic/", branch = "sctk-cosmic-design-system", default-features = false, features = ["wayland", "applet"] } libcosmic = { git = "https://github.com/pop-os/libcosmic/", branch = "sctk-cosmic-design-system", default-features = false, features = ["wayland", "applet"] }
cosmic-panel-config = {git = "https://github.com/pop-os/cosmic-panel", default-features = false } cosmic-panel-config = {git = "https://github.com/pop-os/cosmic-panel", default-features = false }
iced_sctk = { git = "https://github.com/pop-os/iced-sctk" } iced_sctk = { git = "https://github.com/pop-os/iced-sctk" }
# iced_sctk = { path = "../../../fork/iced-sctk" }
sctk = { package = "smithay-client-toolkit", git = "https://github.com/Smithay/client-toolkit" } sctk = { package = "smithay-client-toolkit", git = "https://github.com/Smithay/client-toolkit" }

View file

@ -12,6 +12,7 @@ use cosmic::{
}; };
use cosmic_panel_config::{PanelAnchor, PanelSize}; use cosmic_panel_config::{PanelAnchor, PanelSize};
use iced_sctk::alignment::Horizontal; use iced_sctk::alignment::Horizontal;
use iced_sctk::application::SurfaceIdWrapper;
use iced_sctk::commands::popup::{destroy_popup, get_popup}; use iced_sctk::commands::popup::{destroy_popup, get_popup};
use iced_sctk::Color; use iced_sctk::Color;
use zbus::Connection; use zbus::Connection;
@ -63,6 +64,7 @@ pub enum Message {
DBusInit(Option<(Connection, PowerDaemonProxy<'static>)>), DBusInit(Option<(Connection, PowerDaemonProxy<'static>)>),
SelectGraphicsMode(Graphics), SelectGraphicsMode(Graphics),
TogglePopup, TogglePopup,
PopupClosed(window::Id),
} }
impl Application for Window { impl Application for Window {
@ -136,9 +138,8 @@ impl Application for Window {
|cur_graphics| Message::CurrentGraphics(cur_graphics.ok()), |cur_graphics| Message::CurrentGraphics(cur_graphics.ok()),
)); ));
} }
let mut popup_settings = let popup_settings =
get_popup_settings(window::Id::new(0), new_id, None, None); get_popup_settings(window::Id::new(0), new_id, (200, 240), None, None);
popup_settings.positioner.size = (200, 240);
commands.push(get_popup(popup_settings)); commands.push(get_popup(popup_settings));
return Command::batch(commands); return Command::batch(commands);
} }
@ -168,11 +169,20 @@ impl Application for Window {
}); });
} }
} }
Message::PopupClosed(id) => {
if self.popup.as_ref() == Some(&id) {
self.popup = None;
}
},
} }
Command::none() Command::none()
} }
fn view_popup(&self, _: window::Id) -> Element<Message> { fn view(&self, id: SurfaceIdWrapper) -> Element<Message> {
match id {
SurfaceIdWrapper::LayerSurface(_) => unimplemented!(),
SurfaceIdWrapper::Window(_) => icon_button().on_press(Message::TogglePopup).into(),
SurfaceIdWrapper::Popup(_) => {
let content = match self.state { let content = match self.state {
State::SelectGraphicsMode(pending_restart) => { State::SelectGraphicsMode(pending_restart) => {
let mut content_list = vec![ let mut content_list = vec![
@ -247,22 +257,17 @@ impl Application for Window {
.spacing(4), .spacing(4),
) )
.into() .into()
},
}
} }
fn view_layer_surface( fn close_requested(&self, id: SurfaceIdWrapper) -> Self::Message {
&self, match id {
_: cosmic::iced_native::window::Id, SurfaceIdWrapper::LayerSurface(_) | SurfaceIdWrapper::Window(_) => unimplemented!(),
) -> iced::Element<'_, Self::Message, iced::Renderer<Self::Theme>> { SurfaceIdWrapper::Popup(id) => {
unimplemented!() Message::PopupClosed(id)
},
} }
fn close_window_requested(&self, _: cosmic::iced_native::window::Id) -> Self::Message {
unimplemented!()
}
fn popup_done(&self, _: cosmic::iced_native::window::Id) -> Self::Message {
unimplemented!()
}
fn layer_surface_done(&self, _: cosmic::iced_native::window::Id) -> Self::Message {
unimplemented!()
} }
fn style(&self) -> <Self::Theme as application::StyleSheet>::Style { fn style(&self) -> <Self::Theme as application::StyleSheet>::Style {
@ -272,13 +277,6 @@ impl Application for Window {
}) })
} }
fn view_window(&self, _: window::Id) -> Element<Message> {
// TODO use panel config crate after resolving version mismatch
let btn = icon_button().on_press(Message::TogglePopup);
btn.into()
}
fn should_exit(&self) -> bool { fn should_exit(&self) -> bool {
false false
} }