Skip to content

Commit b6b1371

Browse files
committed
Fixed errors w.r.t error reporting and also added default window size as centered size.
1 parent e74f80f commit b6b1371

File tree

1 file changed

+38
-33
lines changed

1 file changed

+38
-33
lines changed

appshell/browser/root_window_gtk.cc

Lines changed: 38 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,10 @@ void SaveWindowState(GtkWindow* window) {
8080

8181
GKeyFile* key_file = g_key_file_new();
8282
GError* err = NULL;
83+
gchar* filePath = NULL;
84+
8385
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");
8587
gboolean maximized = IsWindowMaximized(window);
8688

8789
// If window is not maximized, save current size and position
@@ -119,12 +121,12 @@ void SaveWindowState(GtkWindow* window) {
119121
g_key_file_set_integer(key_file, "size", "width", width - 1); // DelayedResize() 1 pixel compensation
120122
g_key_file_set_integer(key_file, "size", "height", height - 1); // DelayedResize() 1 pixel compensation
121123
g_key_file_set_boolean(key_file, "state", "maximized", maximized);
122-
124+
125+
err = NULL;
123126
g_key_file_save_to_file(key_file, filePath, &err);
124127

125128
if (err) {
126129
fprintf(stderr, "Err -> SaveWindowState(): could not write to `window.ini`. Error Description: %s\n", err->message);
127-
g_error_free(err);
128130
}
129131
} else {
130132
fprintf(stderr, "Err -> SaveWindowState(): could not write to `window.ini`\n");
@@ -143,46 +145,49 @@ void LoadWindowState(GtkWindow* window) {
143145
gint width = DEFAULT_WINDOW_WIDTH;
144146
gint height = DEFAULT_WINDOW_HEIGHT;
145147

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+
146155
gboolean maximized = false;
147156

148157
GKeyFile* key_file = g_key_file_new();
149158
bool any_error = false;
150159
GError* err = NULL;
160+
gchar* filePath = g_strdup_printf("%s/%s", appshell::AppGetSupportDirectory().ToString().c_str(), "window.ini");
151161

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)) {
155163

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);
161167

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);
164170

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);
167173

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);
170176

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+
}
179185

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);
182188

183-
if (maximized)
184-
MaximizeWindow(window);
185-
}
189+
if (maximized)
190+
MaximizeWindow(window);
186191

187192
} else {
188193
any_error = true;
@@ -196,12 +201,12 @@ void LoadWindowState(GtkWindow* window) {
196201
MaximizeWindow(window);
197202

198203
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);
201206
}
202207
g_error_free(err);
203208
} 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);
205210
}
206211
}
207212
}

0 commit comments

Comments
 (0)