diff --git a/data/geany.glade b/data/geany.glade index d0f49bd248..4e16497a53 100644 --- a/data/geany.glade +++ b/data/geany.glade @@ -941,12 +941,12 @@ True False - - Save window position and geometry + + Save window size True True False - Saves the window position and geometry and restores it at the start + Saves the window size and restores it at the start True True @@ -956,6 +956,22 @@ 0 + + + Save window position + True + True + False + Saves the window position and restores it at the start + True + True + + + False + False + 1 + + Confirm exit @@ -969,7 +985,7 @@ False False - 1 + 2 diff --git a/src/keyfile.c b/src/keyfile.c index 6a91988b5d..ef586b554e 100644 --- a/src/keyfile.c +++ b/src/keyfile.c @@ -418,7 +418,8 @@ static void save_dialog_prefs(GKeyFile *config) g_key_file_set_boolean(config, PACKAGE, "pref_main_load_session", prefs.load_session); g_key_file_set_boolean(config, PACKAGE, "pref_main_project_session", project_prefs.project_session); g_key_file_set_boolean(config, PACKAGE, "pref_main_project_file_in_basedir", project_prefs.project_file_in_basedir); - g_key_file_set_boolean(config, PACKAGE, "pref_main_save_winpos", prefs.save_winpos); + g_key_file_set_boolean(config, PACKAGE, "pref_main_save_winpos", prefs.save_winpos); + g_key_file_set_boolean(config, PACKAGE, "pref_main_save_wingeom", prefs.save_wingeom); g_key_file_set_boolean(config, PACKAGE, "pref_main_confirm_exit", prefs.confirm_exit); g_key_file_set_boolean(config, PACKAGE, "pref_main_suppress_status_messages", prefs.suppress_status_messages); g_key_file_set_boolean(config, PACKAGE, "switch_msgwin_pages", prefs.switch_to_status); @@ -572,7 +573,7 @@ static void save_ui_prefs(GKeyFile *config) g_key_file_set_integer(config, PACKAGE, "scribble_pos", scribble_pos); } - if (prefs.save_winpos) + if (prefs.save_winpos || prefs.save_wingeom) { GdkWindowState wstate; @@ -754,7 +755,8 @@ static void load_dialog_prefs(GKeyFile *config) prefs.load_session = utils_get_setting_boolean(config, PACKAGE, "pref_main_load_session", TRUE); project_prefs.project_session = utils_get_setting_boolean(config, PACKAGE, "pref_main_project_session", TRUE); project_prefs.project_file_in_basedir = utils_get_setting_boolean(config, PACKAGE, "pref_main_project_file_in_basedir", FALSE); - prefs.save_winpos = utils_get_setting_boolean(config, PACKAGE, "pref_main_save_winpos", TRUE); + prefs.save_winpos = utils_get_setting_boolean(config, PACKAGE, "pref_main_save_winpos", TRUE); + prefs.save_wingeom = utils_get_setting_boolean(config, PACKAGE, "pref_main_save_wingeom", TRUE); prefs.beep_on_errors = utils_get_setting_boolean(config, PACKAGE, "beep_on_errors", TRUE); prefs.switch_to_status = utils_get_setting_boolean(config, PACKAGE, "switch_msgwin_pages", FALSE); prefs.auto_focus = utils_get_setting_boolean(config, PACKAGE, "auto_focus", FALSE); diff --git a/src/libmain.c b/src/libmain.c index fe4f377259..9e7d5cd547 100644 --- a/src/libmain.c +++ b/src/libmain.c @@ -148,19 +148,22 @@ static GOptionEntry entries[] = static void setup_window_position(void) { /* interprets the saved window geometry */ - if (!prefs.save_winpos) - return; - - if (ui_prefs.geometry[0] != -1 && ui_prefs.geometry[1] != -1) - gtk_window_move(GTK_WINDOW(main_widgets.window), - ui_prefs.geometry[0], ui_prefs.geometry[1]); - - if (ui_prefs.geometry[2] != -1 && ui_prefs.geometry[3] != -1) - gtk_window_set_default_size(GTK_WINDOW(main_widgets.window), - ui_prefs.geometry[2], ui_prefs.geometry[3]); - - if (ui_prefs.geometry[4] == 1) - gtk_window_maximize(GTK_WINDOW(main_widgets.window)); + if (prefs.save_wingeom) + { + if (ui_prefs.geometry[2] != -1 && ui_prefs.geometry[3] != -1) + gtk_window_set_default_size(GTK_WINDOW(main_widgets.window), + ui_prefs.geometry[2], ui_prefs.geometry[3]); + } + + if (prefs.save_winpos) + { + if (ui_prefs.geometry[0] != -1 && ui_prefs.geometry[1] != -1) + gtk_window_move(GTK_WINDOW(main_widgets.window), + ui_prefs.geometry[0], ui_prefs.geometry[1]); + + if (ui_prefs.geometry[4] == 1) + gtk_window_maximize(GTK_WINDOW(main_widgets.window)); + } } diff --git a/src/prefs.c b/src/prefs.c index 714b7bc5cd..9b60e09aef 100644 --- a/src/prefs.c +++ b/src/prefs.c @@ -417,8 +417,11 @@ static void prefs_init_dialog(void) widget = ui_lookup_widget(ui_widgets.prefs_dialog, "check_project_file_in_basedir"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), project_prefs.project_file_in_basedir); - widget = ui_lookup_widget(ui_widgets.prefs_dialog, "check_save_win_pos"); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.save_winpos); + widget = ui_lookup_widget(ui_widgets.prefs_dialog, "check_save_win_pos"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.save_winpos); + + widget = ui_lookup_widget(ui_widgets.prefs_dialog, "check_save_win_geom"); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.save_wingeom); widget = ui_lookup_widget(ui_widgets.prefs_dialog, "check_ask_for_quit"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), prefs.confirm_exit); @@ -897,8 +900,11 @@ on_prefs_dialog_response(GtkDialog *dialog, gint response, gpointer user_data) widget = ui_lookup_widget(ui_widgets.prefs_dialog, "check_project_file_in_basedir"); project_prefs.project_file_in_basedir = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)); - widget = ui_lookup_widget(ui_widgets.prefs_dialog, "check_save_win_pos"); - prefs.save_winpos = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)); + widget = ui_lookup_widget(ui_widgets.prefs_dialog, "check_save_win_pos"); + prefs.save_winpos = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)); + + widget = ui_lookup_widget(ui_widgets.prefs_dialog, "check_save_win_geom"); + prefs.save_wingeom = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)); widget = ui_lookup_widget(ui_widgets.prefs_dialog, "check_ask_for_quit"); prefs.confirm_exit = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)); diff --git a/src/prefs.h b/src/prefs.h index 68a83b26d0..25ce2eea26 100644 --- a/src/prefs.h +++ b/src/prefs.h @@ -31,7 +31,8 @@ typedef struct GeanyPrefs { gboolean load_session; gboolean load_plugins; - gboolean save_winpos; + gboolean save_winpos; + gboolean save_wingeom; gboolean confirm_exit; gboolean beep_on_errors; /* use utils_beep() instead */ gboolean suppress_status_messages;