[gtk] Revert "file chooser: Stop using gtk_window_get_position"
- From: Timm Bäder <baedert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk] Revert "file chooser: Stop using gtk_window_get_position"
- Date: Fri, 19 Jul 2019 16:16:43 +0000 (UTC)
commit a9364bc053c0cf1ccd892d775e60cc4d7de26b93
Author: Timm Bäder <mail baedert org>
Date: Fri Jul 19 09:47:16 2019 +0200
Revert "file chooser: Stop using gtk_window_get_position"
This reverts commit 2ed533c3e1f0fe776fb24cc370447a0c63e49f24.
This also made the filechooser dialog not save the window size anymore,
which does not depend on the gtk_window_get_position() removal.
gtk/gtkfilechooserdialog.c | 32 ++++++++++++++++++++++++++++++++
gtk/gtkfilechooserprivate.h | 1 +
gtk/gtkfilechooserwidget.c | 5 +++--
3 files changed, 36 insertions(+), 2 deletions(-)
---
diff --git a/gtk/gtkfilechooserdialog.c b/gtk/gtkfilechooserdialog.c
index 85a182f8a8..40e19c8a87 100644
--- a/gtk/gtkfilechooserdialog.c
+++ b/gtk/gtkfilechooserdialog.c
@@ -577,9 +577,39 @@ 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 old_x, old_y, old_width, old_height;
+ 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_get (settings, SETTINGS_KEY_WINDOW_POSITION, "(ii)", &old_x, &old_y);
+ if (old_x != x || old_y != y)
+ g_settings_set (settings, SETTINGS_KEY_WINDOW_POSITION, "(ii)", x, y);
+
+ g_settings_get (settings, SETTINGS_KEY_WINDOW_SIZE, "(ii)", &old_width, &old_height);
+ if (old_width != width || old_height != height)
+ g_settings_set (settings, SETTINGS_KEY_WINDOW_SIZE, "(ii)", width, height);
+
+ g_settings_apply (settings);
+}
+
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);
}
@@ -593,6 +623,8 @@ gtk_file_chooser_dialog_size_allocate (GtkWidget *widget,
width,
height,
baseline);
+ if (gtk_widget_is_drawable (widget))
+ save_dialog_geometry (GTK_FILE_CHOOSER_DIALOG (widget));
}
/* We do a signal connection here rather than overriding the method in
diff --git a/gtk/gtkfilechooserprivate.h b/gtk/gtkfilechooserprivate.h
index 6379e0ab60..a0a622c111 100644
--- a/gtk/gtkfilechooserprivate.h
+++ b/gtk/gtkfilechooserprivate.h
@@ -41,6 +41,7 @@ G_BEGIN_DECLS
#define SETTINGS_KEY_SHOW_TYPE_COLUMN "show-type-column"
#define SETTINGS_KEY_SORT_COLUMN "sort-column"
#define SETTINGS_KEY_SORT_ORDER "sort-order"
+#define SETTINGS_KEY_WINDOW_POSITION "window-position"
#define SETTINGS_KEY_WINDOW_SIZE "window-size"
#define SETTINGS_KEY_SIDEBAR_WIDTH "sidebar-width"
#define SETTINGS_KEY_STARTUP_MODE "startup-mode"
diff --git a/gtk/gtkfilechooserwidget.c b/gtk/gtkfilechooserwidget.c
index 0a37e2834d..59fb176040 100644
--- a/gtk/gtkfilechooserwidget.c
+++ b/gtk/gtkfilechooserwidget.c
@@ -6177,14 +6177,15 @@ gtk_file_chooser_widget_get_default_size (GtkFileChooserEmbed *chooser_embed,
GtkFileChooserWidget *impl = GTK_FILE_CHOOSER_WIDGET (chooser_embed);
GtkFileChooserWidgetPrivate *priv = gtk_file_chooser_widget_get_instance_private (impl);
GtkRequisition req;
- int width, height;
+ int x, y, width, height;
GSettings *settings;
settings = _gtk_file_chooser_get_settings_for_widget (GTK_WIDGET (impl));
+ g_settings_get (settings, SETTINGS_KEY_WINDOW_POSITION, "(ii)", &x, &y);
g_settings_get (settings, SETTINGS_KEY_WINDOW_SIZE, "(ii)", &width, &height);
- if (width > 0 && height > 0)
+ if (x >= 0 && y >= 0 && width > 0 && height > 0)
{
*default_width = width;
*default_height = height;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]