Skip to content

Commit 82b647d

Browse files
committed
Save/restore window size
1 parent 8fee35b commit 82b647d

File tree

1 file changed

+25
-2
lines changed

1 file changed

+25
-2
lines changed

src/widgets/window.rs

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use futures::prelude::*;
1010
use glib::{clone, Properties};
1111
use gtk::subclass::prelude::*;
1212
use gtk::{gdk, gio, glib, CompositeTemplate, TemplateChild};
13-
use log::{error, info, warn};
13+
use log::{debug, error, info, warn};
1414
use url::Url;
1515

1616
use crate::common::{bookmarks_url, glibctx, BOOKMARK_FILE_PATH};
@@ -160,7 +160,22 @@ pub mod imp {
160160
}
161161
}
162162
impl WidgetImpl for Window {}
163-
impl WindowImpl for Window {}
163+
impl WindowImpl for Window {
164+
fn close_request(&self) -> glib::Propagation {
165+
debug!("Saving window geometry.");
166+
let width = self.obj().default_size().0;
167+
let height = self.obj().default_size().1;
168+
169+
self.settings.0.set_int("window-width", width).unwrap();
170+
self.settings.0.set_int("window-height", height).unwrap();
171+
self.settings
172+
.0
173+
.set_boolean("is-maximized", self.obj().is_maximized())
174+
.unwrap();
175+
176+
glib::Propagation::Proceed
177+
}
178+
}
164179
impl ApplicationWindowImpl for Window {}
165180
impl AdwApplicationWindowImpl for Window {}
166181
}
@@ -179,6 +194,7 @@ impl Window {
179194
imp.config.replace(config);
180195
imp.zoom.borrow_mut().value = 1.0;
181196

197+
this.apply_window_geometry_settings();
182198
this.setup_css_providers();
183199
this.setup_history_buttons();
184200
this.setup_settings();
@@ -188,6 +204,13 @@ impl Window {
188204

189205
this
190206
}
207+
fn apply_window_geometry_settings(&self) {
208+
let imp = self.imp();
209+
210+
self.set_default_width(imp.settings.0.int("window-width"));
211+
self.set_default_height(imp.settings.0.int("window-height"));
212+
self.set_maximized(imp.settings.0.boolean("is-maximized"));
213+
}
191214
fn setup_settings(&self) {
192215
let imp = self.imp();
193216
imp.settings.0.bind("zoom", self, "zoom").build();

0 commit comments

Comments
 (0)