diff options
author | Benjamin Otte <otte@redhat.com> | 2013-01-26 18:29:21 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2013-01-26 21:04:55 +0100 |
commit | e26031e0c7e96dea0d9a0b5bf52bbcfd6df709e8 (patch) | |
tree | 1b30b1b1b5536bdb2e05ad311d29afc1a86a1462 /gtk/gtkfilechooserdialog.c | |
parent | c83a7a13e1464d135bfb32b0abc91e28f4ca2040 (diff) | |
download | gtk+-e26031e0c7e96dea0d9a0b5bf52bbcfd6df709e8.tar.gz |
filechooser: Move saving geometry to where it belongs
Move it from the filechooserwidget to the filechooserdialog unmap
function. It was previously only working for filechooserdialogs, too.
Diffstat (limited to 'gtk/gtkfilechooserdialog.c')
-rw-r--r-- | gtk/gtkfilechooserdialog.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/gtk/gtkfilechooserdialog.c b/gtk/gtkfilechooserdialog.c index 01fe9afd5d..6ed41b68f3 100644 --- a/gtk/gtkfilechooserdialog.c +++ b/gtk/gtkfilechooserdialog.c @@ -210,6 +210,7 @@ static void gtk_file_chooser_dialog_get_property (GObject *obj GParamSpec *pspec); static void gtk_file_chooser_dialog_map (GtkWidget *widget); +static void gtk_file_chooser_dialog_unmap (GtkWidget *widget); static void response_cb (GtkDialog *dialog, gint response_id); @@ -230,6 +231,7 @@ gtk_file_chooser_dialog_class_init (GtkFileChooserDialogClass *class) gobject_class->finalize = gtk_file_chooser_dialog_finalize; widget_class->map = gtk_file_chooser_dialog_map; + widget_class->unmap = gtk_file_chooser_dialog_unmap; gtk_widget_class_set_accessible_role (widget_class, ATK_ROLE_FILE_CHOOSER); @@ -537,6 +539,35 @@ gtk_file_chooser_dialog_map (GtkWidget *widget) GTK_WIDGET_CLASS (gtk_file_chooser_dialog_parent_class)->map (widget); } +static void +save_dialog_geometry (GtkFileChooserDialog *dialog) +{ + GtkWindow *window; + GSettings *settings; + int x, y, width, height; + + settings = _gtk_file_chooser_get_settings_for_widget (GTK_WIDGET (dialog)); + + window = GTK_WINDOW (dialog); + + gtk_window_get_position (window, &x, &y); + gtk_window_get_size (window, &width, &height); + + g_settings_set (settings, SETTINGS_KEY_WINDOW_POSITION, "(ii)", x, y); + g_settings_set (settings, SETTINGS_KEY_WINDOW_SIZE, "(ii)", width, height); +} + +/* GtkWidget::unmap handler */ +static void +gtk_file_chooser_dialog_unmap (GtkWidget *widget) +{ + GtkFileChooserDialog *dialog = GTK_FILE_CHOOSER_DIALOG (widget); + + save_dialog_geometry (dialog); + + GTK_WIDGET_CLASS (gtk_file_chooser_dialog_parent_class)->unmap (widget); +} + /* GtkDialog::response handler */ static void response_cb (GtkDialog *dialog, |