@@ -80,8 +80,10 @@ void SaveWindowState(GtkWindow* window) {
80
80
81
81
GKeyFile* key_file = g_key_file_new ();
82
82
GError* err = NULL ;
83
+ gchar* filePath = NULL ;
84
+
83
85
if (key_file) {
84
- gchar* filePath = g_strdup_printf (" %s/%s" , appshell::AppGetSupportDirectory ().ToString ().c_str (), " window.ini" );
86
+ filePath = g_strdup_printf (" %s/%s" , appshell::AppGetSupportDirectory ().ToString ().c_str (), " window.ini" );
85
87
gboolean maximized = IsWindowMaximized (window);
86
88
87
89
// If window is not maximized, save current size and position
@@ -119,12 +121,12 @@ void SaveWindowState(GtkWindow* window) {
119
121
g_key_file_set_integer (key_file, " size" , " width" , width - 1 ); // DelayedResize() 1 pixel compensation
120
122
g_key_file_set_integer (key_file, " size" , " height" , height - 1 ); // DelayedResize() 1 pixel compensation
121
123
g_key_file_set_boolean (key_file, " state" , " maximized" , maximized);
122
-
124
+
125
+ err = NULL ;
123
126
g_key_file_save_to_file (key_file, filePath, &err);
124
127
125
128
if (err) {
126
129
fprintf (stderr, " Err -> SaveWindowState(): could not write to `window.ini`. Error Description: %s\n " , err->message );
127
- g_error_free (err);
128
130
}
129
131
} else {
130
132
fprintf (stderr, " Err -> SaveWindowState(): could not write to `window.ini`\n " );
@@ -143,46 +145,49 @@ void LoadWindowState(GtkWindow* window) {
143
145
gint width = DEFAULT_WINDOW_WIDTH;
144
146
gint height = DEFAULT_WINDOW_HEIGHT;
145
147
148
+ // Try to center the window.
149
+ GdkScreen* screen = gdk_screen_get_default ();
150
+ if (screen) {
151
+ left = (gdk_screen_get_width (screen) - DEFAULT_WINDOW_WIDTH) / 2 ;
152
+ top = (gdk_screen_get_height (screen) - DEFAULT_WINDOW_HEIGHT) / 2 ;
153
+ }
154
+
146
155
gboolean maximized = false ;
147
156
148
157
GKeyFile* key_file = g_key_file_new ();
149
158
bool any_error = false ;
150
159
GError* err = NULL ;
160
+ gchar* filePath = g_strdup_printf (" %s/%s" , appshell::AppGetSupportDirectory ().ToString ().c_str (), " window.ini" );
151
161
152
- if (key_file) {
153
-
154
- gchar* filePath = g_strdup_printf (" %s/%s" , appshell::AppGetSupportDirectory ().ToString ().c_str (), " window.ini" );
162
+ if (key_file && g_key_file_load_from_file (key_file, filePath, G_KEY_FILE_NONE, &err)) {
155
163
156
- if (g_key_file_load_from_file (key_file, filePath, G_KEY_FILE_NONE, &err)) {
157
-
158
- left = g_key_file_get_integer (key_file, " position" , " left" , &err);
159
- if (!err)
160
- top = g_key_file_get_integer (key_file, " position" , " top" , &err);
164
+ left = g_key_file_get_integer (key_file, " position" , " left" , &err);
165
+ if (!err)
166
+ top = g_key_file_get_integer (key_file, " position" , " top" , &err);
161
167
162
- if (!err)
163
- width = g_key_file_get_integer (key_file, " size" , " width" , &err);
168
+ if (!err)
169
+ width = g_key_file_get_integer (key_file, " size" , " width" , &err);
164
170
165
- if (!err)
166
- height = g_key_file_get_integer (key_file, " size" , " height" , &err);
171
+ if (!err)
172
+ height = g_key_file_get_integer (key_file, " size" , " height" , &err);
167
173
168
- if (!err)
169
- maximized = g_key_file_get_boolean (key_file, " state" , " maximized" , &err);
174
+ if (!err)
175
+ maximized = g_key_file_get_boolean (key_file, " state" , " maximized" , &err);
170
176
171
- // If any value can not be readed, set defaults again
172
- if (err) {
173
- left = 1 ;
174
- top = 1 ;
175
- width = DEFAULT_WINDOW_WIDTH;
176
- height = DEFAULT_WINDOW_HEIGHT;
177
- maximized = TRUE ;
178
- }
177
+ // If any value can not be readed, set defaults again
178
+ if (err) {
179
+ left = 1 ;
180
+ top = 1 ;
181
+ width = DEFAULT_WINDOW_WIDTH;
182
+ height = DEFAULT_WINDOW_HEIGHT;
183
+ maximized = TRUE ;
184
+ }
179
185
180
- gtk_window_move (GTK_WINDOW (window), left, top);
181
- gtk_window_set_default_size (GTK_WINDOW (window), width, height);
186
+ gtk_window_move (GTK_WINDOW (window), left, top);
187
+ gtk_window_set_default_size (GTK_WINDOW (window), width, height);
182
188
183
- if (maximized)
184
- MaximizeWindow (window);
185
- }
189
+ if (maximized)
190
+ MaximizeWindow (window);
186
191
187
192
} else {
188
193
any_error = true ;
@@ -196,12 +201,12 @@ void LoadWindowState(GtkWindow* window) {
196
201
MaximizeWindow (window);
197
202
198
203
if (err) {
199
- if (err && err ->code != G_KEY_FILE_ERROR_KEY_NOT_FOUND){
200
- fprintf (stderr, " Err -> SaveWindowState (): could not create a file object to read `window.ini`. Error Description:%s.\n " , err->message );
204
+ if (err->code != G_KEY_FILE_ERROR_KEY_NOT_FOUND){
205
+ fprintf (stderr, " LoadWindowState (): Could not read %s. Error Description:%s.\n " , filePath , err->message );
201
206
}
202
207
g_error_free (err);
203
208
} else {
204
- fprintf (stderr, " Err -> SaveWindowState (): could not create a file object to read `window.ini`. \n " );
209
+ fprintf (stderr, " LoadWindowState (): Could not read %s. \n " , filePath );
205
210
}
206
211
}
207
212
}
0 commit comments