(_gtk_file_chooser_settings_get_geometry): New public function.
(_gtk_file_chooser_settings_set_geometry): New public function.
+ * gtk/gtkfilechooserdefault.c (gtk_file_chooser_default_map):
+ Don't change the default size in ::map() so we don't flicker...
+ (gtk_file_chooser_default_realize): ... so do it in ::realize()
+ instead, when the window is not yet visible. This avoids a
+ dialog-that-resizes when you first pop up the file chooser.
+ (emit_default_size_changed): Just emit the signal; don't check for
+ the widget's state so we can be emitted during the initial
+ ::realize() when we are not mapped yet.
+ (update_preview_widget_visibility): Only emit default_size_changed
+ if the widget is not mapped, to avoid resizing the dialog while it
+ is visible.
+
2009-01-13 Matthias Clasen <mclasen@redhat.com>
Bug 450716 – New API to change global IM
GParamSpec *pspec);
static void gtk_file_chooser_default_dispose (GObject *object);
static void gtk_file_chooser_default_show_all (GtkWidget *widget);
+static void gtk_file_chooser_default_realize (GtkWidget *widget);
static void gtk_file_chooser_default_map (GtkWidget *widget);
static void gtk_file_chooser_default_unmap (GtkWidget *widget);
static void gtk_file_chooser_default_hierarchy_changed (GtkWidget *widget,
gobject_class->dispose = gtk_file_chooser_default_dispose;
widget_class->show_all = gtk_file_chooser_default_show_all;
+ widget_class->realize = gtk_file_chooser_default_realize;
widget_class->map = gtk_file_chooser_default_map;
widget_class->unmap = gtk_file_chooser_default_unmap;
widget_class->hierarchy_changed = gtk_file_chooser_default_hierarchy_changed;
static void
emit_default_size_changed (GtkFileChooserDefault *impl)
{
- if (!GTK_WIDGET_MAPPED (impl))
- return;
-
profile_msg (" emit default-size-changed start", NULL);
g_signal_emit_by_name (impl, "default-size-changed");
profile_msg (" emit default-size-changed end", NULL);
else
gtk_widget_hide (impl->preview_box);
- emit_default_size_changed (impl);
+ if (!GTK_WIDGET_MAPPED (impl))
+ emit_default_size_changed (impl);
}
static void
g_object_unref (settings);
}
+/* GtkWidget::realize method */
+static void
+gtk_file_chooser_default_realize (GtkWidget *widget)
+{
+ GtkFileChooserDefault *impl;
+ char *current_working_dir;
+
+ impl = GTK_FILE_CHOOSER_DEFAULT (widget);
+
+ GTK_WIDGET_CLASS (_gtk_file_chooser_default_parent_class)->realize (widget);
+
+ emit_default_size_changed (impl);
+}
+
/* GtkWidget::map method */
static void
gtk_file_chooser_default_map (GtkWidget *widget)
settings_load (impl);
- emit_default_size_changed (impl);
-
profile_end ("end", NULL);
}