also save window position

This commit is contained in:
Erica Z 2024-11-13 18:40:43 +01:00
parent 3017ee3ee4
commit 72a985a9e4
2 changed files with 32 additions and 2 deletions

View file

@ -6,6 +6,15 @@
</key>
<key name="volume" type="i">
<default>100</default>
</key>
<key name="window-width" type="i">
<default>-1</default>
</key>
<key name="window-height" type="i">
<default>-1</default>
</key>
<key name="is-maximized" type="b">
<default>false</default>
</key>
</schema>
</schemalist>

View file

@ -172,7 +172,15 @@ mod imp {
let settings = gio::Settings::new(crate::APP_ID);
settings.bind("mute", self.obj().as_ref(), "mute").build();
settings.bind("volume", self.obj().as_ref(), "volume").build();
settings
.bind("volume", self.obj().as_ref(), "volume")
.build();
self.obj()
.set_default_size(settings.int("window-width"), settings.int("window-height"));
if settings.boolean("is-maximized") {
self.obj().maximize();
}
// update time-pos every 100 ms
let window = self.obj().downgrade();
@ -293,7 +301,20 @@ mod imp {
}
}
impl WindowImpl for Window {}
impl WindowImpl for Window {
fn close_request(&self) -> glib::Propagation {
let size = self.obj().default_size();
// TODO: don't instantiate this so many times maybe? OnceCell in imp struct?
let settings = gio::Settings::new(crate::APP_ID);
settings.set_int("window-width", size.0).unwrap();
settings.set_int("window-height", size.1).unwrap();
settings
.set_boolean("is-maximized", self.obj().is_maximized())
.unwrap();
glib::Propagation::Proceed
}
}
impl ApplicationWindowImpl for Window {}