@@ -10,7 +10,7 @@ use futures::prelude::*;
1010use glib:: { clone, Properties } ;
1111use gtk:: subclass:: prelude:: * ;
1212use gtk:: { gdk, gio, glib, CompositeTemplate , TemplateChild } ;
13- use log:: { error, info, warn} ;
13+ use log:: { debug , error, info, warn} ;
1414use url:: Url ;
1515
1616use 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