static void gtk_file_chooser_dialog_notify (GObject *object,
GParamSpec *pspec);
+static void gtk_file_chooser_dialog_realize (GtkWidget *widget);
static void gtk_file_chooser_dialog_map (GtkWidget *widget);
static void gtk_file_chooser_dialog_unmap (GtkWidget *widget);
static void gtk_file_chooser_dialog_size_allocate (GtkWidget *widget,
int baseline);
static void file_chooser_widget_file_activated (GtkFileChooser *chooser,
GtkFileChooserDialog *dialog);
-static void file_chooser_widget_default_size_changed (GtkWidget *widget,
- GtkFileChooserDialog *dialog);
static void file_chooser_widget_response_requested (GtkWidget *widget,
GtkFileChooserDialog *dialog);
static void file_chooser_widget_selection_changed (GtkWidget *widget,
gobject_class->get_property = gtk_file_chooser_dialog_get_property;
gobject_class->notify = gtk_file_chooser_dialog_notify;
+ widget_class->realize = gtk_file_chooser_dialog_realize;
widget_class->map = gtk_file_chooser_dialog_map;
widget_class->unmap = gtk_file_chooser_dialog_unmap;
widget_class->size_allocate = gtk_file_chooser_dialog_size_allocate;
gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserDialog, buttons);
gtk_widget_class_bind_template_callback (widget_class, response_cb);
gtk_widget_class_bind_template_callback (widget_class, file_chooser_widget_file_activated);
- gtk_widget_class_bind_template_callback (widget_class, file_chooser_widget_default_size_changed);
gtk_widget_class_bind_template_callback (widget_class, file_chooser_widget_response_requested);
gtk_widget_class_bind_template_callback (widget_class, file_chooser_widget_selection_changed);
}
gtk_widget_activate_default (GTK_WIDGET (chooser));
}
-static void
-file_chooser_widget_default_size_changed (GtkWidget *widget,
- GtkFileChooserDialog *dialog)
-{
- GtkFileChooserDialogPrivate *priv = gtk_file_chooser_dialog_get_instance_private (dialog);
- gint default_width, default_height;
- GtkRequisition req, widget_req;
-
- /* Unset any previously set size */
- gtk_widget_set_size_request (GTK_WIDGET (dialog), -1, -1);
-
- if (gtk_widget_is_drawable (widget))
- {
- /* Force a size request of everything before we start. This will make sure
- * that widget->requisition is meaningful.
- */
- gtk_widget_get_preferred_size (GTK_WIDGET (dialog), &req, NULL);
- gtk_widget_get_preferred_size (widget, &widget_req, NULL);
- }
-
- _gtk_file_chooser_embed_get_default_size (GTK_FILE_CHOOSER_EMBED (priv->widget),
- &default_width, &default_height);
-
- gtk_window_resize (GTK_WINDOW (dialog), default_width, default_height);
-}
-
static void
file_chooser_widget_selection_changed (GtkWidget *widget,
GtkFileChooserDialog *dialog)
gtk_window_set_default_widget (GTK_WINDOW (dialog), widget);
}
+static void
+gtk_file_chooser_dialog_realize (GtkWidget *widget)
+{
+ GtkFileChooserDialog *dialog = GTK_FILE_CHOOSER_DIALOG (widget);
+ GSettings *settings;
+ gint width, height;
+
+ settings = _gtk_file_chooser_get_settings_for_widget (widget);
+ g_settings_get (settings, SETTINGS_KEY_WINDOW_SIZE, "(ii)", &width, &height);
+
+ if (width != 0 && height != 0)
+ gtk_window_set_default_size (GTK_WINDOW (dialog), width, height);
+ g_print ("%d %d\n", width, height);
+
+ GTK_WIDGET_CLASS (gtk_file_chooser_dialog_parent_class)->realize (widget);
+}
+
static void
gtk_file_chooser_dialog_map (GtkWidget *widget)
{
#include "gtkintl.h"
static void gtk_file_chooser_embed_class_init (gpointer g_iface);
-static void delegate_get_default_size (GtkFileChooserEmbed *chooser_embed,
- gint *default_width,
- gint *default_height);
static gboolean delegate_should_respond (GtkFileChooserEmbed *chooser_embed);
static void delegate_initial_focus (GtkFileChooserEmbed *chooser_embed);
-static void delegate_default_size_changed (GtkFileChooserEmbed *chooser_embed,
- gpointer data);
static void delegate_response_requested (GtkFileChooserEmbed *chooser_embed,
gpointer data);
void
_gtk_file_chooser_embed_delegate_iface_init (GtkFileChooserEmbedIface *iface)
{
- iface->get_default_size = delegate_get_default_size;
iface->should_respond = delegate_should_respond;
iface->initial_focus = delegate_initial_focus;
}
g_object_set_data (G_OBJECT (receiver), I_("gtk-file-chooser-embed-delegate"), delegate);
- g_signal_connect (delegate, "default-size-changed",
- G_CALLBACK (delegate_default_size_changed), receiver);
g_signal_connect (delegate, "response-requested",
G_CALLBACK (delegate_response_requested), receiver);
}
-static void
-delegate_get_default_size (GtkFileChooserEmbed *chooser_embed,
- gint *default_width,
- gint *default_height)
-{
- _gtk_file_chooser_embed_get_default_size (get_delegate (chooser_embed), default_width, default_height);
-}
-
static gboolean
delegate_should_respond (GtkFileChooserEmbed *chooser_embed)
{
_gtk_file_chooser_embed_initial_focus (get_delegate (chooser_embed));
}
-static void
-delegate_default_size_changed (GtkFileChooserEmbed *chooser_embed,
- gpointer data)
-{
- g_signal_emit_by_name (data, "default-size-changed");
-}
-
static void
delegate_response_requested (GtkFileChooserEmbed *chooser_embed,
gpointer data)
{
GType iface_type = G_TYPE_FROM_INTERFACE (g_iface);
- g_signal_new (I_("default-size-changed"),
- iface_type,
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (GtkFileChooserEmbedIface, default_size_changed),
- NULL, NULL,
- NULL,
- G_TYPE_NONE, 0);
g_signal_new (I_("response-requested"),
iface_type,
G_SIGNAL_RUN_LAST,
G_TYPE_NONE, 0);
}
-void
-_gtk_file_chooser_embed_get_default_size (GtkFileChooserEmbed *chooser_embed,
- gint *default_width,
- gint *default_height)
-{
- g_return_if_fail (GTK_IS_FILE_CHOOSER_EMBED (chooser_embed));
- g_return_if_fail (default_width != NULL);
- g_return_if_fail (default_height != NULL);
-
- GTK_FILE_CHOOSER_EMBED_GET_IFACE (chooser_embed)->get_default_size (chooser_embed, default_width, default_height);
-}
-
gboolean
_gtk_file_chooser_embed_should_respond (GtkFileChooserEmbed *chooser_embed)
{
/* Methods
*/
- void (*get_default_size) (GtkFileChooserEmbed *chooser_embed,
- gint *default_width,
- gint *default_height);
-
gboolean (*should_respond) (GtkFileChooserEmbed *chooser_embed);
void (*initial_focus) (GtkFileChooserEmbed *chooser_embed);
/* Signals
*/
- void (*default_size_changed) (GtkFileChooserEmbed *chooser_embed);
void (*response_requested) (GtkFileChooserEmbed *chooser_embed);
};
GType _gtk_file_chooser_embed_get_type (void) G_GNUC_CONST;
-void _gtk_file_chooser_embed_get_default_size (GtkFileChooserEmbed *chooser_embed,
- gint *default_width,
- gint *default_height);
gboolean _gtk_file_chooser_embed_should_respond (GtkFileChooserEmbed *chooser_embed);
void _gtk_file_chooser_embed_initial_focus (GtkFileChooserEmbed *chooser_embed);
GValue *value,
GParamSpec *pspec);
static void gtk_file_chooser_widget_dispose (GObject *object);
-static void gtk_file_chooser_widget_realize (GtkWidget *widget);
static void gtk_file_chooser_widget_map (GtkWidget *widget);
static void gtk_file_chooser_widget_unmap (GtkWidget *widget);
static void gtk_file_chooser_widget_root (GtkWidget *widget);
GError **error);
static GSList * gtk_file_chooser_widget_list_shortcut_folders (GtkFileChooser *chooser);
-static void gtk_file_chooser_widget_get_default_size (GtkFileChooserEmbed *chooser_embed,
- gint *default_width,
- gint *default_height);
static gboolean gtk_file_chooser_widget_should_respond (GtkFileChooserEmbed *chooser_embed);
static void gtk_file_chooser_widget_initial_focus (GtkFileChooserEmbed *chooser_embed);
static void
gtk_file_chooser_embed_default_iface_init (GtkFileChooserEmbedIface *iface)
{
- iface->get_default_size = gtk_file_chooser_widget_get_default_size;
iface->should_respond = gtk_file_chooser_widget_should_respond;
iface->initial_focus = gtk_file_chooser_widget_initial_focus;
}
return result;
}
-static void
-emit_default_size_changed (GtkFileChooserWidget *impl)
-{
- 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);
-}
-
static void
update_preview_widget_visibility (GtkFileChooserWidget *impl)
{
gtk_widget_show (priv->preview_box);
else
gtk_widget_hide (priv->preview_box);
-
- if (!gtk_widget_get_mapped (GTK_WIDGET (impl)))
- emit_default_size_changed (impl);
}
static void
* of files may change depending whether we are in a file or folder-only mode.
*/
gtk_widget_queue_draw (priv->browse_files_tree_view);
-
- emit_default_size_changed (impl);
}
static gchar *
change_icon_theme (impl);
- emit_default_size_changed (impl);
-
profile_end ("end", NULL);
}
g_settings_apply (settings);
}
-/* GtkWidget::realize method */
-static void
-gtk_file_chooser_widget_realize (GtkWidget *widget)
-{
- GtkFileChooserWidget *impl;
-
- impl = GTK_FILE_CHOOSER_WIDGET (widget);
-
- GTK_WIDGET_CLASS (gtk_file_chooser_widget_parent_class)->realize (widget);
-
- emit_default_size_changed (impl);
-}
-
/* Changes the current folder to $CWD */
static void
switch_to_cwd (GtkFileChooserWidget *impl)
return gtk_places_sidebar_list_shortcuts (GTK_PLACES_SIDEBAR (priv->places_sidebar));
}
-/* Guesses a size based upon font sizes */
-static void
-find_good_size_from_style (GtkWidget *widget,
- gint *width,
- gint *height)
-{
- GtkCssStyle *style;
- double font_size;
-
- style = gtk_css_node_get_style (gtk_widget_get_css_node (widget));
- font_size = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_FONT_SIZE), 100);
-
- *width = font_size * NUM_CHARS;
- *height = font_size * NUM_LINES;
-}
-
-static void
-gtk_file_chooser_widget_get_default_size (GtkFileChooserEmbed *chooser_embed,
- gint *default_width,
- gint *default_height)
-{
- GtkFileChooserWidget *impl = GTK_FILE_CHOOSER_WIDGET (chooser_embed);
- GtkFileChooserWidgetPrivate *priv = gtk_file_chooser_widget_get_instance_private (impl);
- GtkRequisition req;
- int width, height;
- GSettings *settings;
-
- settings = _gtk_file_chooser_get_settings_for_widget (GTK_WIDGET (impl));
-
- g_settings_get (settings, SETTINGS_KEY_WINDOW_SIZE, "(ii)", &width, &height);
-
- if (width > 0 && height > 0)
- {
- *default_width = width;
- *default_height = height;
- return;
- }
-
- find_good_size_from_style (GTK_WIDGET (chooser_embed), default_width, default_height);
-
- if (priv->preview_widget_active &&
- priv->preview_widget &&
- gtk_widget_get_visible (priv->preview_widget))
- {
- gtk_widget_get_preferred_size (priv->preview_box,
- &req, NULL);
- *default_width += PREVIEW_HBOX_SPACING + req.width;
- }
-
- if (priv->extra_widget &&
- gtk_widget_get_visible (priv->extra_widget))
- {
- gtk_widget_get_preferred_size (priv->extra_align,
- &req, NULL);
- *default_height += gtk_box_get_spacing (GTK_BOX (priv->box)) + req.height;
- }
-}
-
struct switch_folder_closure {
GtkFileChooserWidget *impl;
GFile *file;
gobject_class->get_property = gtk_file_chooser_widget_get_property;
gobject_class->dispose = gtk_file_chooser_widget_dispose;
- widget_class->realize = gtk_file_chooser_widget_realize;
widget_class->map = gtk_file_chooser_widget_map;
widget_class->unmap = gtk_file_chooser_widget_unmap;
widget_class->root = gtk_file_chooser_widget_root;
GtkFontChooserWidgetPrivate *priv = gtk_font_chooser_widget_get_instance_private (fontchooser);
GtkWidget *treeview = priv->family_face_list;
GtkStyleContext *context;
- double dpi, font_size;
+ double font_size;
context = gtk_widget_get_style_context (treeview);
- dpi = _gtk_css_number_value_get (_gtk_style_context_peek_property (context,
- GTK_CSS_PROPERTY_DPI),
- 100);
- gtk_style_context_get (context,
- "font-size", &font_size,
- NULL);
-
- return (dpi < 0.0 ? 96.0 : dpi) / 72.0 * PANGO_SCALE_X_LARGE * font_size * PANGO_SCALE;
+ font_size = _gtk_css_number_value_get (_gtk_style_context_peek_property (context,
+ GTK_CSS_PROPERTY_FONT_SIZE),
+ 100);
+
+ return PANGO_SCALE_X_LARGE * font_size * PANGO_SCALE;
}
static PangoAttrList *
<child>
<object class="GtkFileChooserWidget" id="widget">
<property name="expand">1</property>
- <signal name="default-size-changed" handler="file_chooser_widget_default_size_changed" swapped="no"/>
<signal name="file-activated" handler="file_chooser_widget_file_activated" swapped="no"/>
<signal name="response-requested" handler="file_chooser_widget_response_requested" swapped="no"/>
<signal name="selection-changed" handler="file_chooser_widget_selection_changed" swapped="no"/>