fix(applets): multi-window fix (#42)
This commit is contained in:
parent
82ac6aac1c
commit
cd299892b2
4 changed files with 55 additions and 36 deletions
62
Cargo.lock
generated
62
Cargo.lock
generated
|
|
@ -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]]
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue