fix(applets): multi-window fix (#42)
This commit is contained in:
parent
82ac6aac1c
commit
cd299892b2
4 changed files with 55 additions and 36 deletions
|
|
@ -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