Changes behavior of the panel/dock size slider
- from: new size is committed as soon as the slider position is changed (triggers panel/dock restart), - to: new size is committed only when slider is released.
This commit is contained in:
parent
c06b184ecf
commit
95a82c0d69
1 changed files with 11 additions and 2 deletions
|
|
@ -24,6 +24,7 @@ pub struct PageInner {
|
|||
pub(crate) panel_config: Option<CosmicPanelConfig>,
|
||||
pub opacity: f32,
|
||||
pub opacity_changing: bool,
|
||||
pub size: PanelSize,
|
||||
pub outputs: Vec<String>,
|
||||
pub anchors: Vec<String>,
|
||||
pub backgrounds: Vec<String>,
|
||||
|
|
@ -41,6 +42,7 @@ impl Default for PageInner {
|
|||
panel_config: Option::default(),
|
||||
opacity: 0.0,
|
||||
opacity_changing: false,
|
||||
size: PanelSize::M,
|
||||
outputs: vec![fl!("all-displays")],
|
||||
anchors: vec![
|
||||
Anchor(PanelAnchor::Left).to_string(),
|
||||
|
|
@ -207,7 +209,7 @@ pub(crate) fn style<
|
|||
text::body(fl!("small")).into(),
|
||||
slider(
|
||||
0..=4,
|
||||
match panel_config.size {
|
||||
match inner.size {
|
||||
PanelSize::XS => 0,
|
||||
PanelSize::S => 1,
|
||||
PanelSize::M => 2,
|
||||
|
|
@ -229,6 +231,7 @@ pub(crate) fn style<
|
|||
}
|
||||
},
|
||||
)
|
||||
.on_release(Message::PanelSizeCommit)
|
||||
.width(Length::Fill)
|
||||
.apply(cosmic::widget::container)
|
||||
.max_width(250)
|
||||
|
|
@ -420,6 +423,7 @@ pub enum Message {
|
|||
Output(usize),
|
||||
AnchorGap(bool),
|
||||
PanelSize(PanelSize),
|
||||
PanelSizeCommit,
|
||||
Appearance(usize),
|
||||
ExtendToEdge(bool),
|
||||
OpacityRequest(f32),
|
||||
|
|
@ -500,6 +504,7 @@ impl PageInner {
|
|||
if let Err(err) = default.write_entry(config) {
|
||||
tracing::error!(?err, "Error resetting panel config.");
|
||||
}
|
||||
self.size.clone_from(&default.size);
|
||||
self.system_default = Some(default.clone());
|
||||
self.panel_config.clone_from(&self.system_default);
|
||||
} else {
|
||||
|
|
@ -598,7 +603,10 @@ impl PageInner {
|
|||
_ = panel_config.set_border_radius(helper, new_radius).unwrap();
|
||||
}
|
||||
Message::PanelSize(size) => {
|
||||
_ = panel_config.set_size(helper, size);
|
||||
self.size = size;
|
||||
}
|
||||
Message::PanelSizeCommit => {
|
||||
_ = panel_config.set_size(helper, self.size.clone());
|
||||
// Reset any size overrides the user might have set
|
||||
_ = panel_config.set_size_center(helper, None);
|
||||
_ = panel_config.set_size_wings(helper, None);
|
||||
|
|
@ -661,6 +669,7 @@ impl PageInner {
|
|||
}
|
||||
}
|
||||
Message::PanelConfig(c) => {
|
||||
self.size = c.size.clone();
|
||||
self.panel_config = Some(*c);
|
||||
return Task::none();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue