fix(applets): multi-window fix (#42)

This commit is contained in:
Ashley Wulber 2023-06-06 15:42:42 -04:00 committed by GitHub
parent 82ac6aac1c
commit cd299892b2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 55 additions and 36 deletions

62
Cargo.lock generated
View file

@ -731,7 +731,7 @@ dependencies = [
[[package]]
name = "cosmic-config"
version = "0.1.0"
source = "git+https://github.com/pop-os/libcosmic#cf2818c4a163caaa6a627e7aa6bcd40e455c7a6a"
source = "git+https://github.com/pop-os/libcosmic#31d7c75098a9ea4857bc16321306aa40ed14eac2"
dependencies = [
"atomicwrites",
"calloop",
@ -746,7 +746,7 @@ dependencies = [
[[package]]
name = "cosmic-config-derive"
version = "0.1.0"
source = "git+https://github.com/pop-os/libcosmic#cf2818c4a163caaa6a627e7aa6bcd40e455c7a6a"
source = "git+https://github.com/pop-os/libcosmic#31d7c75098a9ea4857bc16321306aa40ed14eac2"
dependencies = [
"quote",
"syn 1.0.109",
@ -874,7 +874,7 @@ dependencies = [
[[package]]
name = "cosmic-theme"
version = "0.1.0"
source = "git+https://github.com/pop-os/libcosmic#cf2818c4a163caaa6a627e7aa6bcd40e455c7a6a"
source = "git+https://github.com/pop-os/libcosmic#31d7c75098a9ea4857bc16321306aa40ed14eac2"
dependencies = [
"anyhow",
"cosmic-config",
@ -1099,7 +1099,7 @@ dependencies = [
"hashbrown 0.12.3",
"lock_api",
"once_cell",
"parking_lot_core 0.9.7",
"parking_lot_core 0.9.8",
]
[[package]]
@ -1828,9 +1828,9 @@ dependencies = [
[[package]]
name = "getrandom"
version = "0.2.9"
version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4"
checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
dependencies = [
"cfg-if",
"js-sys",
@ -2123,7 +2123,7 @@ dependencies = [
[[package]]
name = "iced"
version = "0.9.0"
source = "git+https://github.com/pop-os/libcosmic#cf2818c4a163caaa6a627e7aa6bcd40e455c7a6a"
source = "git+https://github.com/pop-os/libcosmic#31d7c75098a9ea4857bc16321306aa40ed14eac2"
dependencies = [
"iced_accessibility",
"iced_core",
@ -2139,7 +2139,7 @@ dependencies = [
[[package]]
name = "iced_accessibility"
version = "0.1.0"
source = "git+https://github.com/pop-os/libcosmic#cf2818c4a163caaa6a627e7aa6bcd40e455c7a6a"
source = "git+https://github.com/pop-os/libcosmic#31d7c75098a9ea4857bc16321306aa40ed14eac2"
dependencies = [
"accesskit",
"accesskit_unix",
@ -2148,7 +2148,7 @@ dependencies = [
[[package]]
name = "iced_core"
version = "0.9.0"
source = "git+https://github.com/pop-os/libcosmic#cf2818c4a163caaa6a627e7aa6bcd40e455c7a6a"
source = "git+https://github.com/pop-os/libcosmic#31d7c75098a9ea4857bc16321306aa40ed14eac2"
dependencies = [
"bitflags 1.3.2",
"iced_accessibility",
@ -2163,7 +2163,7 @@ dependencies = [
[[package]]
name = "iced_futures"
version = "0.6.0"
source = "git+https://github.com/pop-os/libcosmic#cf2818c4a163caaa6a627e7aa6bcd40e455c7a6a"
source = "git+https://github.com/pop-os/libcosmic#31d7c75098a9ea4857bc16321306aa40ed14eac2"
dependencies = [
"futures",
"iced_core",
@ -2176,7 +2176,7 @@ dependencies = [
[[package]]
name = "iced_graphics"
version = "0.8.0"
source = "git+https://github.com/pop-os/libcosmic#cf2818c4a163caaa6a627e7aa6bcd40e455c7a6a"
source = "git+https://github.com/pop-os/libcosmic#31d7c75098a9ea4857bc16321306aa40ed14eac2"
dependencies = [
"bitflags 1.3.2",
"bytemuck",
@ -2193,7 +2193,7 @@ dependencies = [
[[package]]
name = "iced_renderer"
version = "0.1.0"
source = "git+https://github.com/pop-os/libcosmic#cf2818c4a163caaa6a627e7aa6bcd40e455c7a6a"
source = "git+https://github.com/pop-os/libcosmic#31d7c75098a9ea4857bc16321306aa40ed14eac2"
dependencies = [
"iced_graphics",
"iced_tiny_skia",
@ -2205,7 +2205,7 @@ dependencies = [
[[package]]
name = "iced_runtime"
version = "0.1.0"
source = "git+https://github.com/pop-os/libcosmic#cf2818c4a163caaa6a627e7aa6bcd40e455c7a6a"
source = "git+https://github.com/pop-os/libcosmic#31d7c75098a9ea4857bc16321306aa40ed14eac2"
dependencies = [
"iced_accessibility",
"iced_core",
@ -2217,7 +2217,7 @@ dependencies = [
[[package]]
name = "iced_sctk"
version = "0.1.0"
source = "git+https://github.com/pop-os/libcosmic#cf2818c4a163caaa6a627e7aa6bcd40e455c7a6a"
source = "git+https://github.com/pop-os/libcosmic#31d7c75098a9ea4857bc16321306aa40ed14eac2"
dependencies = [
"enum-repr",
"float-cmp",
@ -2238,7 +2238,7 @@ dependencies = [
[[package]]
name = "iced_style"
version = "0.8.0"
source = "git+https://github.com/pop-os/libcosmic#cf2818c4a163caaa6a627e7aa6bcd40e455c7a6a"
source = "git+https://github.com/pop-os/libcosmic#31d7c75098a9ea4857bc16321306aa40ed14eac2"
dependencies = [
"iced_core",
"once_cell",
@ -2248,7 +2248,7 @@ dependencies = [
[[package]]
name = "iced_tiny_skia"
version = "0.1.0"
source = "git+https://github.com/pop-os/libcosmic#cf2818c4a163caaa6a627e7aa6bcd40e455c7a6a"
source = "git+https://github.com/pop-os/libcosmic#31d7c75098a9ea4857bc16321306aa40ed14eac2"
dependencies = [
"bytemuck",
"cosmic-text",
@ -2266,7 +2266,7 @@ dependencies = [
[[package]]
name = "iced_wgpu"
version = "0.10.0"
source = "git+https://github.com/pop-os/libcosmic#cf2818c4a163caaa6a627e7aa6bcd40e455c7a6a"
source = "git+https://github.com/pop-os/libcosmic#31d7c75098a9ea4857bc16321306aa40ed14eac2"
dependencies = [
"bitflags 1.3.2",
"bytemuck",
@ -2288,7 +2288,7 @@ dependencies = [
[[package]]
name = "iced_widget"
version = "0.1.0"
source = "git+https://github.com/pop-os/libcosmic#cf2818c4a163caaa6a627e7aa6bcd40e455c7a6a"
source = "git+https://github.com/pop-os/libcosmic#31d7c75098a9ea4857bc16321306aa40ed14eac2"
dependencies = [
"iced_renderer",
"iced_runtime",
@ -2303,7 +2303,7 @@ dependencies = [
[[package]]
name = "iced_winit"
version = "0.9.1"
source = "git+https://github.com/pop-os/libcosmic#cf2818c4a163caaa6a627e7aa6bcd40e455c7a6a"
source = "git+https://github.com/pop-os/libcosmic#31d7c75098a9ea4857bc16321306aa40ed14eac2"
dependencies = [
"iced_graphics",
"iced_runtime",
@ -2610,14 +2610,14 @@ checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8"
[[package]]
name = "libc"
version = "0.2.145"
version = "0.2.146"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc86cde3ff845662b8f4ef6cb50ea0e20c524eb3d29ae048287e06a1b3fa6a81"
checksum = "f92be4933c13fd498862a9e02a3055f8a8d9c039ce33db97306fd5a6caa7f29b"
[[package]]
name = "libcosmic"
version = "0.1.0"
source = "git+https://github.com/pop-os/libcosmic#cf2818c4a163caaa6a627e7aa6bcd40e455c7a6a"
source = "git+https://github.com/pop-os/libcosmic#31d7c75098a9ea4857bc16321306aa40ed14eac2"
dependencies = [
"apply",
"cosmic-config",
@ -2693,9 +2693,9 @@ dependencies = [
[[package]]
name = "lock_api"
version = "0.4.9"
version = "0.4.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16"
dependencies = [
"autocfg",
"scopeguard",
@ -3167,9 +3167,9 @@ dependencies = [
[[package]]
name = "object"
version = "0.30.3"
version = "0.30.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439"
checksum = "03b4680b86d9cfafba8fc491dc9b6df26b68cf40e9e6cd73909194759a63c385"
dependencies = [
"memchr",
]
@ -3314,7 +3314,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
dependencies = [
"lock_api",
"parking_lot_core 0.9.7",
"parking_lot_core 0.9.8",
]
[[package]]
@ -3333,15 +3333,15 @@ dependencies = [
[[package]]
name = "parking_lot_core"
version = "0.9.7"
version = "0.9.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521"
checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447"
dependencies = [
"cfg-if",
"libc",
"redox_syscall 0.2.16",
"redox_syscall 0.3.5",
"smallvec",
"windows-sys 0.45.0",
"windows-targets 0.48.0",
]
[[package]]

View file

@ -418,6 +418,10 @@ impl Application for SettingsApp {
fn close_requested(&self, id: window::Id) -> Self::Message {
if id == window::Id(0) {
Message::Close
} else if id == applets::ADD_APPLET_DIALOGUE_ID {
Message::PageMessage(crate::pages::Message::Applet(
applets::Message::ClosedAppletDialogue,
))
} else {
Message::None
}

View file

@ -59,7 +59,9 @@ pub fn main() -> color_eyre::Result<()> {
cosmic::settings::set_default_icon_theme("Pop");
let mut settings = cosmic::settings();
settings.initial_surface = InitialSurface::XdgWindow(SctkWindowSettings {
title: Some(fl!("app")),
size_limits: Limits::NONE.min_width(600.0).min_height(300.0),
app_id: Some("com.system76.CosmicSettings".to_string()),
..Default::default()
});

View file

@ -78,6 +78,7 @@ pub struct Page {
current_config: Option<CosmicPanelConfig>,
reorder_widget_state: ReorderWidgetState,
search: String,
has_dialogue: bool,
}
impl Default for Page {
@ -95,6 +96,7 @@ impl Default for Page {
current_config,
reorder_widget_state: ReorderWidgetState::default(),
search: String::new(),
has_dialogue: false,
}
}
}
@ -135,6 +137,7 @@ pub enum Message {
AddApplet(Applet<'static>),
AddAppletDialogue,
CloseAppletDialogue,
ClosedAppletDialogue,
DragAppletDialogue,
Save,
Cancel,
@ -165,6 +168,7 @@ impl Debug for Message {
Message::AddAppletDialogue => write!(f, "AddAppletDialogue"),
Message::CloseAppletDialogue => write!(f, "CloseAppletDialogue"),
Message::DragAppletDialogue => write!(f, "DragAppletDialogue"),
Message::ClosedAppletDialogue => write!(f, "ClosedAppletDialogue"),
}
}
}
@ -428,11 +432,12 @@ impl Page {
return commands::window::close_window(ADD_APPLET_DIALOGUE_ID);
}
Message::AddAppletDialogue => {
self.has_dialogue = true;
let window_settings = SctkWindowSettings {
window_id: ADD_APPLET_DIALOGUE_ID,
app_id: Some("com.system76.CosmicSettings".to_string()),
title: Some(fl!("add-applet")),
parent: None,
parent: Some(window::Id(0)),
autosize: false,
size_limits: layout::Limits::NONE
.min_width(300.0)
@ -446,7 +451,11 @@ impl Page {
};
return commands::window::get_window(window_settings);
}
Message::ClosedAppletDialogue => {
self.has_dialogue = false;
}
Message::CloseAppletDialogue => {
self.has_dialogue = false;
return commands::window::close_window(ADD_APPLET_DIALOGUE_ID);
}
Message::DragAppletDialogue => {
@ -465,14 +474,18 @@ pub fn lists() -> Section<crate::pages::Message> {
text(fl!("unknown"))
);
};
let button = cosmic::iced::widget::button(text(fl!("add-applet")))
.style(theme::Button::Secondary)
.padding(8.0);
column![
column![
row![
text(fl!("applets")).width(Length::Fill).size(24),
cosmic::iced::widget::button(text(fl!("add-applet")))
.style(theme::Button::Secondary)
.padding(8.0)
.on_press(Message::AddAppletDialogue)
if page.has_dialogue {
button
} else {
button.on_press(Message::AddAppletDialogue)
}
],
text(fl!("start-segment")),
AppletReorderList::new(