[gtk+/composite-templates-new: 18/18] GtkFileChooserDefault: Define children with a GtkBuilder template
- From: Tristan Van Berkom <tvb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/composite-templates-new: 18/18] GtkFileChooserDefault: Define children with a GtkBuilder template
- Date: Mon, 25 Mar 2013 11:22:33 +0000 (UTC)
commit 1fad392493595508647221c5966d0a59d3034748
Author: Tristan Van Berkom <tristanvb openismus com>
Date: Mon Mar 25 01:40:08 2013 +0900
GtkFileChooserDefault: Define children with a GtkBuilder template
gtk/Makefile.am | 1 +
gtk/gtk.gresource.xml | 1 +
gtk/gtkfilechooserdefault.c | 3830 ++++++++++++++++++++----------------------
gtk/gtkfilechooserdefault.ui | 552 ++++++
gtk/gtkfilechooserprivate.h | 154 +--
gtk/tests/templates.c | 63 +
po/POTFILES.in | 1 +
7 files changed, 2404 insertions(+), 2198 deletions(-)
---
diff --git a/gtk/Makefile.am b/gtk/Makefile.am
index 2551732..65e1db3 100644
--- a/gtk/Makefile.am
+++ b/gtk/Makefile.am
@@ -1100,6 +1100,7 @@ COMPOSITE_TEMPLATES = \
gtkassistant.ui \
gtkcolorchooserdialog.ui \
gtkdialog.ui \
+ gtkfilechooserdefault.ui \
gtkinfobar.ui \
gtklockbutton.ui \
gtkmessagedialog.ui \
diff --git a/gtk/gtk.gresource.xml b/gtk/gtk.gresource.xml
index 6e65b4b..d6631cb 100644
--- a/gtk/gtk.gresource.xml
+++ b/gtk/gtk.gresource.xml
@@ -17,6 +17,7 @@
<file>gtkassistant.ui</file>
<file>gtkcolorchooserdialog.ui</file>
<file>gtkdialog.ui</file>
+ <file>gtkfilechooserdefault.ui</file>
<file>gtkinfobar.ui</file>
<file>gtklockbutton.ui</file>
<file>gtkmessagedialog.ui</file>
diff --git a/gtk/gtkfilechooserdefault.c b/gtk/gtkfilechooserdefault.c
index 99c4200..316178c 100644
--- a/gtk/gtkfilechooserdefault.c
+++ b/gtk/gtkfilechooserdefault.c
@@ -141,6 +141,164 @@ _gtk_file_chooser_profile_log (const char *func, int indent, const char *msg1, c
+struct _GtkFileChooserDefaultPrivate
+{
+ GtkFileChooserAction action;
+
+ GtkFileSystem *file_system;
+
+ /* Save mode widgets */
+ GtkWidget *save_widgets;
+ GtkWidget *save_widgets_table;
+
+ GtkWidget *save_folder_label;
+
+ /* The file browsing widgets */
+ GtkWidget *browse_widgets_box;
+ GtkWidget *browse_widgets_hpaned;
+ GtkWidget *browse_header_box;
+ GtkWidget *browse_shortcuts_swin;
+ GtkWidget *browse_shortcuts_toolbar;
+ GtkWidget *browse_shortcuts_tree_view;
+ GtkWidget *browse_shortcuts_add_button;
+ GtkWidget *browse_shortcuts_remove_button;
+ GtkWidget *browse_shortcuts_popup_menu;
+ GtkWidget *browse_shortcuts_popup_menu_remove_item;
+ GtkWidget *browse_shortcuts_popup_menu_rename_item;
+ GtkWidget *browse_files_tree_view;
+ GtkWidget *browse_files_popup_menu;
+ GtkWidget *browse_files_popup_menu_add_shortcut_item;
+ GtkWidget *browse_files_popup_menu_hidden_files_item;
+ GtkWidget *browse_files_popup_menu_size_column_item;
+ GtkWidget *browse_files_popup_menu_copy_file_location_item;
+ GtkWidget *browse_files_popup_menu_visit_file_item;
+ GtkWidget *browse_new_folder_button;
+ GtkWidget *browse_path_bar_hbox;
+ GtkSizeGroup *browse_path_bar_size_group;
+ GtkWidget *browse_path_bar;
+ GtkWidget *browse_special_mode_icon;
+ GtkWidget *browse_special_mode_label;
+ GtkWidget *browse_select_a_folder_info_bar;
+ GtkWidget *browse_select_a_folder_label;
+ GtkWidget *browse_select_a_folder_icon;
+
+ GtkFileSystemModel *browse_files_model;
+ char *browse_files_last_selected_name;
+
+ /* OPERATION_MODE_SEARCH */
+ GtkWidget *search_hbox;
+ GtkWidget *search_entry;
+ GtkSearchEngine *search_engine;
+ GtkQuery *search_query;
+ GtkFileSystemModel *search_model;
+
+ /* OPERATION_MODE_RECENT */
+ GtkRecentManager *recent_manager;
+ GtkFileSystemModel *recent_model;
+ guint load_recent_id;
+
+ GtkWidget *filter_combo_hbox;
+ GtkWidget *filter_combo;
+ GtkWidget *preview_box;
+ GtkWidget *preview_label;
+ GtkWidget *preview_widget;
+ GtkWidget *extra_align;
+ GtkWidget *extra_widget;
+
+ GtkWidget *location_button;
+ GtkWidget *location_entry_box;
+ GtkWidget *location_label;
+ GtkWidget *location_entry;
+ LocationMode location_mode;
+
+ GtkListStore *shortcuts_model;
+
+ /* Filter for the shortcuts pane. We filter out the "current folder" row and
+ * the separator that we use for the "Save in folder" combo.
+ */
+ GtkTreeModel *shortcuts_pane_filter_model;
+
+ /* Handles */
+ GSList *loading_shortcuts;
+ GSList *reload_icon_cancellables;
+ GCancellable *file_list_drag_data_received_cancellable;
+ GCancellable *update_current_folder_cancellable;
+ GCancellable *should_respond_get_info_cancellable;
+ GCancellable *file_exists_get_info_cancellable;
+ GCancellable *update_from_entry_cancellable;
+ GCancellable *shortcuts_activate_iter_cancellable;
+
+ LoadState load_state;
+ ReloadState reload_state;
+ guint load_timeout_id;
+
+ OperationMode operation_mode;
+
+ GSList *pending_select_files;
+
+ GtkFileFilter *current_filter;
+ GSList *filters;
+
+ int num_volumes;
+ int num_shortcuts;
+ int num_bookmarks;
+
+ gulong volumes_changed_id;
+ gulong bookmarks_changed_id;
+
+ GFile *current_volume_file;
+ GFile *current_folder;
+ GFile *preview_file;
+ char *preview_display_name;
+
+ GtkTreeViewColumn *list_name_column;
+ GtkCellRenderer *list_pixbuf_renderer;
+ GtkCellRenderer *list_name_renderer;
+ GtkTreeViewColumn *list_mtime_column;
+ GtkTreeViewColumn *list_size_column;
+
+ GSource *edited_idle;
+ char *edited_new_text;
+
+ gulong settings_signal_id;
+ int icon_size;
+
+ GSource *focus_entry_idle;
+
+ gulong toplevel_set_focus_id;
+ GtkWidget *toplevel_last_focus_widget;
+
+ gint sort_column;
+ GtkSortType sort_order;
+
+#if 0
+ GdkDragContext *shortcuts_drag_context;
+ GSource *shortcuts_drag_outside_idle;
+#endif
+
+ /* Flags */
+
+ guint local_only : 1;
+ guint preview_widget_active : 1;
+ guint use_preview_label : 1;
+ guint select_multiple : 1;
+ guint show_hidden : 1;
+ guint do_overwrite_confirmation : 1;
+ guint list_sort_ascending : 1;
+ guint changing_folder : 1;
+ guint shortcuts_current_folder_active : 1;
+ guint has_home : 1;
+ guint has_desktop : 1;
+ guint has_search : 1;
+ guint has_recent: 1;
+ guint show_size_column : 1;
+ guint create_folders : 1;
+
+#if 0
+ guint shortcuts_drag_outside : 1;
+#endif
+};
+
typedef struct _GtkFileChooserDefaultClass GtkFileChooserDefaultClass;
#define GTK_FILE_CHOOSER_DEFAULT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),
GTK_TYPE_FILE_CHOOSER_DEFAULT, GtkFileChooserDefaultClass))
@@ -423,7 +581,6 @@ static void set_file_system_backend (GtkFileChooserDefault *impl);
static void unset_file_system_backend (GtkFileChooserDefault *impl);
-
/* Drag and drop interface declarations */
@@ -451,10 +608,6 @@ G_DEFINE_TYPE_WITH_CODE (ShortcutsPaneModelFilter,
G_IMPLEMENT_INTERFACE (GTK_TYPE_TREE_DRAG_SOURCE,
shortcuts_pane_model_filter_drag_source_iface_init))
-static GtkTreeModel *shortcuts_pane_model_filter_new (GtkFileChooserDefault *impl,
- GtkTreeModel *child_model,
- GtkTreePath *root);
-
G_DEFINE_TYPE_WITH_CODE (GtkFileChooserDefault, _gtk_file_chooser_default, GTK_TYPE_BOX,
@@ -479,384 +632,112 @@ add_normal_and_shifted_binding (GtkBindingSet *binding_set,
signal_name, 0);
}
+/* Frees the data columns for the specified iter in the shortcuts model*/
static void
-_gtk_file_chooser_default_class_init (GtkFileChooserDefaultClass *class)
+shortcuts_free_row_data (GtkFileChooserDefault *impl,
+ GtkTreeIter *iter)
{
- static const guint quick_bookmark_keyvals[10] = {
- GDK_KEY_1, GDK_KEY_2, GDK_KEY_3, GDK_KEY_4, GDK_KEY_5, GDK_KEY_6, GDK_KEY_7, GDK_KEY_8, GDK_KEY_9,
GDK_KEY_0
- };
- GObjectClass *gobject_class = G_OBJECT_CLASS (class);
- GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class);
- GtkBindingSet *binding_set;
- int i;
+ gpointer col_data;
+ ShortcutType shortcut_type;
+ GCancellable *cancellable;
- gobject_class->finalize = gtk_file_chooser_default_finalize;
- gobject_class->constructor = gtk_file_chooser_default_constructor;
- gobject_class->set_property = gtk_file_chooser_default_set_property;
- gobject_class->get_property = gtk_file_chooser_default_get_property;
- gobject_class->dispose = gtk_file_chooser_default_dispose;
+ gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->shortcuts_model), iter,
+ SHORTCUTS_COL_DATA, &col_data,
+ SHORTCUTS_COL_TYPE, &shortcut_type,
+ SHORTCUTS_COL_CANCELLABLE, &cancellable,
+ -1);
- 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;
- widget_class->style_updated = gtk_file_chooser_default_style_updated;
- widget_class->screen_changed = gtk_file_chooser_default_screen_changed;
+ if (cancellable)
+ {
+ g_cancellable_cancel (cancellable);
+ g_object_unref (cancellable);
+ }
- signals[LOCATION_POPUP] =
- g_signal_new_class_handler (I_("location-popup"),
- G_OBJECT_CLASS_TYPE (class),
- G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
- G_CALLBACK (location_popup_handler),
- NULL, NULL,
- _gtk_marshal_VOID__STRING,
- G_TYPE_NONE, 1, G_TYPE_STRING);
+ if (!(shortcut_type == SHORTCUT_TYPE_FILE ||
+ shortcut_type == SHORTCUT_TYPE_VOLUME) ||
+ !col_data)
+ return;
- signals[LOCATION_POPUP_ON_PASTE] =
- g_signal_new_class_handler (I_("location-popup-on-paste"),
- G_OBJECT_CLASS_TYPE (class),
- G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
- G_CALLBACK (location_popup_on_paste_handler),
- NULL, NULL,
- _gtk_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
+ if (shortcut_type == SHORTCUT_TYPE_VOLUME)
+ {
+ GtkFileSystemVolume *volume;
- signals[LOCATION_TOGGLE_POPUP] =
- g_signal_new_class_handler (I_("location-toggle-popup"),
- G_OBJECT_CLASS_TYPE (class),
- G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
- G_CALLBACK (location_toggle_popup_handler),
- NULL, NULL,
- _gtk_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
+ volume = col_data;
+ _gtk_file_system_volume_unref (volume);
+ }
+ if (shortcut_type == SHORTCUT_TYPE_FILE)
+ {
+ GFile *file;
- signals[UP_FOLDER] =
- g_signal_new_class_handler (I_("up-folder"),
- G_OBJECT_CLASS_TYPE (class),
- G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
- G_CALLBACK (up_folder_handler),
- NULL, NULL,
- _gtk_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
+ file = col_data;
+ g_object_unref (file);
+ }
+}
- signals[DOWN_FOLDER] =
- g_signal_new_class_handler (I_("down-folder"),
- G_OBJECT_CLASS_TYPE (class),
- G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
- G_CALLBACK (down_folder_handler),
- NULL, NULL,
- _gtk_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
+/* Frees all the data columns in the shortcuts model */
+static void
+shortcuts_free (GtkFileChooserDefault *impl)
+{
+ GtkTreeIter iter;
- signals[HOME_FOLDER] =
- g_signal_new_class_handler (I_("home-folder"),
- G_OBJECT_CLASS_TYPE (class),
- G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
- G_CALLBACK (home_folder_handler),
- NULL, NULL,
- _gtk_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
+ if (!impl->priv->shortcuts_model)
+ return;
- signals[DESKTOP_FOLDER] =
- g_signal_new_class_handler (I_("desktop-folder"),
- G_OBJECT_CLASS_TYPE (class),
- G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
- G_CALLBACK (desktop_folder_handler),
- NULL, NULL,
- _gtk_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
+ if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter))
+ do
+ {
+ shortcuts_free_row_data (impl, &iter);
+ }
+ while (gtk_tree_model_iter_next (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter));
- signals[QUICK_BOOKMARK] =
- g_signal_new_class_handler (I_("quick-bookmark"),
- G_OBJECT_CLASS_TYPE (class),
- G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
- G_CALLBACK (quick_bookmark_handler),
- NULL, NULL,
- _gtk_marshal_VOID__INT,
- G_TYPE_NONE, 1, G_TYPE_INT);
+ impl->priv->shortcuts_model = NULL;
+}
- signals[SHOW_HIDDEN] =
- g_signal_new_class_handler (I_("show-hidden"),
- G_OBJECT_CLASS_TYPE (class),
- G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
- G_CALLBACK (show_hidden_handler),
- NULL, NULL,
- _gtk_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
+static void
+pending_select_files_free (GtkFileChooserDefault *impl)
+{
+ g_slist_free_full (impl->priv->pending_select_files, g_object_unref);
+ impl->priv->pending_select_files = NULL;
+}
- signals[SEARCH_SHORTCUT] =
- g_signal_new_class_handler (I_("search-shortcut"),
- G_OBJECT_CLASS_TYPE (class),
- G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
- G_CALLBACK (search_shortcut_handler),
- NULL, NULL,
- _gtk_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
+static void
+pending_select_files_add (GtkFileChooserDefault *impl,
+ GFile *file)
+{
+ impl->priv->pending_select_files =
+ g_slist_prepend (impl->priv->pending_select_files, g_object_ref (file));
+}
- signals[RECENT_SHORTCUT] =
- g_signal_new_class_handler (I_("recent-shortcut"),
- G_OBJECT_CLASS_TYPE (class),
- G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
- G_CALLBACK (recent_shortcut_handler),
- NULL, NULL,
- _gtk_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
+static void
+gtk_file_chooser_default_finalize (GObject *object)
+{
+ GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (object);
+ GSList *l;
- binding_set = gtk_binding_set_by_class (class);
+ unset_file_system_backend (impl);
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_l, GDK_CONTROL_MASK,
- "location-toggle-popup",
- 0);
+ g_free (impl->priv->browse_files_last_selected_name);
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_slash, 0,
- "location-popup",
- 1, G_TYPE_STRING, "/");
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_KP_Divide, 0,
- "location-popup",
- 1, G_TYPE_STRING, "/");
+ for (l = impl->priv->filters; l; l = l->next)
+ {
+ GtkFileFilter *filter;
-#ifdef G_OS_UNIX
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_asciitilde, 0,
- "location-popup",
- 1, G_TYPE_STRING, "~");
-#endif
+ filter = GTK_FILE_FILTER (l->data);
+ g_object_unref (filter);
+ }
+ g_slist_free (impl->priv->filters);
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_v, GDK_CONTROL_MASK,
- "location-popup-on-paste",
- 0);
+ if (impl->priv->current_filter)
+ g_object_unref (impl->priv->current_filter);
- add_normal_and_shifted_binding (binding_set,
- GDK_KEY_Up, GDK_MOD1_MASK,
- "up-folder");
+ if (impl->priv->current_volume_file)
+ g_object_unref (impl->priv->current_volume_file);
- add_normal_and_shifted_binding (binding_set,
- GDK_KEY_KP_Up, GDK_MOD1_MASK,
- "up-folder");
+ if (impl->priv->current_folder)
+ g_object_unref (impl->priv->current_folder);
- add_normal_and_shifted_binding (binding_set,
- GDK_KEY_Down, GDK_MOD1_MASK,
- "down-folder");
- add_normal_and_shifted_binding (binding_set,
- GDK_KEY_KP_Down, GDK_MOD1_MASK,
- "down-folder");
-
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_Home, GDK_MOD1_MASK,
- "home-folder",
- 0);
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_KP_Home, GDK_MOD1_MASK,
- "home-folder",
- 0);
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_d, GDK_MOD1_MASK,
- "desktop-folder",
- 0);
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_h, GDK_CONTROL_MASK,
- "show-hidden",
- 0);
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_s, GDK_MOD1_MASK,
- "search-shortcut",
- 0);
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_r, GDK_MOD1_MASK,
- "recent-shortcut",
- 0);
-
- for (i = 0; i < 10; i++)
- gtk_binding_entry_add_signal (binding_set,
- quick_bookmark_keyvals[i], GDK_MOD1_MASK,
- "quick-bookmark",
- 1, G_TYPE_INT, i);
-
- _gtk_file_chooser_install_properties (gobject_class);
-}
-
-static void
-gtk_file_chooser_default_iface_init (GtkFileChooserIface *iface)
-{
- iface->select_file = gtk_file_chooser_default_select_file;
- iface->unselect_file = gtk_file_chooser_default_unselect_file;
- iface->select_all = gtk_file_chooser_default_select_all;
- iface->unselect_all = gtk_file_chooser_default_unselect_all;
- iface->get_files = gtk_file_chooser_default_get_files;
- iface->get_preview_file = gtk_file_chooser_default_get_preview_file;
- iface->get_file_system = gtk_file_chooser_default_get_file_system;
- iface->set_current_folder = gtk_file_chooser_default_set_current_folder;
- iface->get_current_folder = gtk_file_chooser_default_get_current_folder;
- iface->set_current_name = gtk_file_chooser_default_set_current_name;
- iface->add_filter = gtk_file_chooser_default_add_filter;
- iface->remove_filter = gtk_file_chooser_default_remove_filter;
- iface->list_filters = gtk_file_chooser_default_list_filters;
- iface->add_shortcut_folder = gtk_file_chooser_default_add_shortcut_folder;
- iface->remove_shortcut_folder = gtk_file_chooser_default_remove_shortcut_folder;
- iface->list_shortcut_folders = gtk_file_chooser_default_list_shortcut_folders;
-}
-
-static void
-gtk_file_chooser_embed_default_iface_init (GtkFileChooserEmbedIface *iface)
-{
- iface->get_default_size = gtk_file_chooser_default_get_default_size;
- iface->should_respond = gtk_file_chooser_default_should_respond;
- iface->initial_focus = gtk_file_chooser_default_initial_focus;
-}
-
-static void
-_gtk_file_chooser_default_init (GtkFileChooserDefault *impl)
-{
- profile_start ("start", NULL);
-#ifdef PROFILE_FILE_CHOOSER
- access ("MARK: *** CREATE FILE CHOOSER", F_OK);
-#endif
- impl->local_only = TRUE;
- impl->preview_widget_active = TRUE;
- impl->use_preview_label = TRUE;
- impl->select_multiple = FALSE;
- impl->show_hidden = FALSE;
- impl->show_size_column = TRUE;
- impl->icon_size = FALLBACK_ICON_SIZE;
- impl->load_state = LOAD_EMPTY;
- impl->reload_state = RELOAD_EMPTY;
- impl->pending_select_files = NULL;
- impl->location_mode = LOCATION_MODE_PATH_BAR;
- impl->operation_mode = OPERATION_MODE_BROWSE;
- impl->sort_column = MODEL_COL_NAME;
- impl->sort_order = GTK_SORT_ASCENDING;
- impl->recent_manager = gtk_recent_manager_get_default ();
- impl->create_folders = TRUE;
-
- gtk_orientable_set_orientation (GTK_ORIENTABLE (impl),
- GTK_ORIENTATION_VERTICAL);
- gtk_box_set_spacing (GTK_BOX (impl), 12);
-
- set_file_system_backend (impl);
-
- profile_end ("end", NULL);
-}
-
-/* Frees the data columns for the specified iter in the shortcuts model*/
-static void
-shortcuts_free_row_data (GtkFileChooserDefault *impl,
- GtkTreeIter *iter)
-{
- gpointer col_data;
- ShortcutType shortcut_type;
- GCancellable *cancellable;
-
- gtk_tree_model_get (GTK_TREE_MODEL (impl->shortcuts_model), iter,
- SHORTCUTS_COL_DATA, &col_data,
- SHORTCUTS_COL_TYPE, &shortcut_type,
- SHORTCUTS_COL_CANCELLABLE, &cancellable,
- -1);
-
- if (cancellable)
- {
- g_cancellable_cancel (cancellable);
- g_object_unref (cancellable);
- }
-
- if (!(shortcut_type == SHORTCUT_TYPE_FILE ||
- shortcut_type == SHORTCUT_TYPE_VOLUME) ||
- !col_data)
- return;
-
- if (shortcut_type == SHORTCUT_TYPE_VOLUME)
- {
- GtkFileSystemVolume *volume;
-
- volume = col_data;
- _gtk_file_system_volume_unref (volume);
- }
- if (shortcut_type == SHORTCUT_TYPE_FILE)
- {
- GFile *file;
-
- file = col_data;
- g_object_unref (file);
- }
-}
-
-/* Frees all the data columns in the shortcuts model */
-static void
-shortcuts_free (GtkFileChooserDefault *impl)
-{
- GtkTreeIter iter;
-
- if (!impl->shortcuts_model)
- return;
-
- if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (impl->shortcuts_model), &iter))
- do
- {
- shortcuts_free_row_data (impl, &iter);
- }
- while (gtk_tree_model_iter_next (GTK_TREE_MODEL (impl->shortcuts_model), &iter));
-
- g_object_unref (impl->shortcuts_model);
- impl->shortcuts_model = NULL;
-}
-
-static void
-pending_select_files_free (GtkFileChooserDefault *impl)
-{
- g_slist_free_full (impl->pending_select_files, g_object_unref);
- impl->pending_select_files = NULL;
-}
-
-static void
-pending_select_files_add (GtkFileChooserDefault *impl,
- GFile *file)
-{
- impl->pending_select_files =
- g_slist_prepend (impl->pending_select_files, g_object_ref (file));
-}
-
-static void
-gtk_file_chooser_default_finalize (GObject *object)
-{
- GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (object);
- GSList *l;
-
- unset_file_system_backend (impl);
-
- if (impl->shortcuts_pane_filter_model)
- g_object_unref (impl->shortcuts_pane_filter_model);
-
- shortcuts_free (impl);
-
- g_free (impl->browse_files_last_selected_name);
-
- for (l = impl->filters; l; l = l->next)
- {
- GtkFileFilter *filter;
-
- filter = GTK_FILE_FILTER (l->data);
- g_object_unref (filter);
- }
- g_slist_free (impl->filters);
-
- if (impl->current_filter)
- g_object_unref (impl->current_filter);
-
- if (impl->current_volume_file)
- g_object_unref (impl->current_volume_file);
-
- if (impl->current_folder)
- g_object_unref (impl->current_folder);
-
- if (impl->preview_file)
- g_object_unref (impl->preview_file);
-
- if (impl->browse_path_bar_size_group)
- g_object_unref (impl->browse_path_bar_size_group);
+ if (impl->priv->preview_file)
+ g_object_unref (impl->priv->preview_file);
/* Free all the Models we have */
stop_loading_and_clear_list_model (impl, FALSE);
@@ -864,11 +745,11 @@ gtk_file_chooser_default_finalize (GObject *object)
recent_clear_model (impl, FALSE);
/* stopping the load above should have cleared this */
- g_assert (impl->load_timeout_id == 0);
+ g_assert (impl->priv->load_timeout_id == 0);
- g_free (impl->preview_display_name);
+ g_free (impl->priv->preview_display_name);
- g_free (impl->edited_new_text);
+ g_free (impl->priv->edited_new_text);
G_OBJECT_CLASS (_gtk_file_chooser_default_parent_class)->finalize (object);
}
@@ -1090,30 +971,30 @@ emit_default_size_changed (GtkFileChooserDefault *impl)
static void
update_preview_widget_visibility (GtkFileChooserDefault *impl)
{
- if (impl->use_preview_label)
+ if (impl->priv->use_preview_label)
{
- if (!impl->preview_label)
+ if (!impl->priv->preview_label)
{
- impl->preview_label = gtk_label_new (impl->preview_display_name);
- gtk_box_pack_start (GTK_BOX (impl->preview_box), impl->preview_label, FALSE, FALSE, 0);
- gtk_box_reorder_child (GTK_BOX (impl->preview_box), impl->preview_label, 0);
- gtk_label_set_ellipsize (GTK_LABEL (impl->preview_label), PANGO_ELLIPSIZE_MIDDLE);
- gtk_widget_show (impl->preview_label);
+ impl->priv->preview_label = gtk_label_new (impl->priv->preview_display_name);
+ gtk_box_pack_start (GTK_BOX (impl->priv->preview_box), impl->priv->preview_label, FALSE, FALSE, 0);
+ gtk_box_reorder_child (GTK_BOX (impl->priv->preview_box), impl->priv->preview_label, 0);
+ gtk_label_set_ellipsize (GTK_LABEL (impl->priv->preview_label), PANGO_ELLIPSIZE_MIDDLE);
+ gtk_widget_show (impl->priv->preview_label);
}
}
else
{
- if (impl->preview_label)
+ if (impl->priv->preview_label)
{
- gtk_widget_destroy (impl->preview_label);
- impl->preview_label = NULL;
+ gtk_widget_destroy (impl->priv->preview_label);
+ impl->priv->preview_label = NULL;
}
}
- if (impl->preview_widget_active && impl->preview_widget)
- gtk_widget_show (impl->preview_box);
+ if (impl->priv->preview_widget_active && impl->priv->preview_widget)
+ gtk_widget_show (impl->priv->preview_box);
else
- gtk_widget_hide (impl->preview_box);
+ gtk_widget_hide (impl->priv->preview_box);
if (!gtk_widget_get_mapped (GTK_WIDGET (impl)))
emit_default_size_changed (impl);
@@ -1123,21 +1004,21 @@ static void
set_preview_widget (GtkFileChooserDefault *impl,
GtkWidget *preview_widget)
{
- if (preview_widget == impl->preview_widget)
+ if (preview_widget == impl->priv->preview_widget)
return;
- if (impl->preview_widget)
- gtk_container_remove (GTK_CONTAINER (impl->preview_box),
- impl->preview_widget);
+ if (impl->priv->preview_widget)
+ gtk_container_remove (GTK_CONTAINER (impl->priv->preview_box),
+ impl->priv->preview_widget);
- impl->preview_widget = preview_widget;
- if (impl->preview_widget)
+ impl->priv->preview_widget = preview_widget;
+ if (impl->priv->preview_widget)
{
- gtk_widget_show (impl->preview_widget);
- gtk_box_pack_start (GTK_BOX (impl->preview_box), impl->preview_widget, TRUE, TRUE, 0);
- gtk_box_reorder_child (GTK_BOX (impl->preview_box),
- impl->preview_widget,
- (impl->use_preview_label && impl->preview_label) ? 1 : 0);
+ gtk_widget_show (impl->priv->preview_widget);
+ gtk_box_pack_start (GTK_BOX (impl->priv->preview_box), impl->priv->preview_widget, TRUE, TRUE, 0);
+ gtk_box_reorder_child (GTK_BOX (impl->priv->preview_box),
+ impl->priv->preview_widget,
+ (impl->priv->use_preview_label && impl->priv->preview_label) ? 1 : 0);
}
update_preview_widget_visibility (impl);
@@ -1162,7 +1043,7 @@ render_recent_icon (GtkFileChooserDefault *impl)
theme = gtk_icon_theme_get_default ();
retval = gtk_icon_theme_load_icon (theme, "document-open-recent",
- impl->icon_size, 0,
+ impl->priv->icon_size, 0,
NULL);
/* fallback */
@@ -1192,21 +1073,21 @@ shortcuts_reload_icons_get_info_cb (GCancellable *cancellable,
gboolean cancelled = g_cancellable_is_cancelled (cancellable);
struct ReloadIconsData *data = user_data;
- if (!g_slist_find (data->impl->reload_icon_cancellables, cancellable))
+ if (!g_slist_find (data->impl->priv->reload_icon_cancellables, cancellable))
goto out;
- data->impl->reload_icon_cancellables = g_slist_remove (data->impl->reload_icon_cancellables, cancellable);
+ data->impl->priv->reload_icon_cancellables = g_slist_remove (data->impl->priv->reload_icon_cancellables,
cancellable);
if (cancelled || error)
goto out;
- pixbuf = _gtk_file_info_render_icon (info, GTK_WIDGET (data->impl), data->impl->icon_size);
+ pixbuf = _gtk_file_info_render_icon (info, GTK_WIDGET (data->impl), data->impl->priv->icon_size);
path = gtk_tree_row_reference_get_path (data->row_ref);
if (path)
{
- gtk_tree_model_get_iter (GTK_TREE_MODEL (data->impl->shortcuts_model), &iter, path);
- gtk_list_store_set (data->impl->shortcuts_model, &iter,
+ gtk_tree_model_get_iter (GTK_TREE_MODEL (data->impl->priv->shortcuts_model), &iter, path);
+ gtk_list_store_set (data->impl->priv->shortcuts_model, &iter,
SHORTCUTS_COL_PIXBUF, pixbuf,
-1);
gtk_tree_path_free (path);
@@ -1231,16 +1112,16 @@ shortcuts_reload_icons (GtkFileChooserDefault *impl)
profile_start ("start", NULL);
- if (!gtk_tree_model_get_iter_first (GTK_TREE_MODEL (impl->shortcuts_model), &iter))
+ if (!gtk_tree_model_get_iter_first (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter))
goto out;
- for (l = impl->reload_icon_cancellables; l; l = l->next)
+ for (l = impl->priv->reload_icon_cancellables; l; l = l->next)
{
GCancellable *cancellable = G_CANCELLABLE (l->data);
g_cancellable_cancel (cancellable);
}
- g_slist_free (impl->reload_icon_cancellables);
- impl->reload_icon_cancellables = NULL;
+ g_slist_free (impl->priv->reload_icon_cancellables);
+ impl->priv->reload_icon_cancellables = NULL;
do
{
@@ -1249,7 +1130,7 @@ shortcuts_reload_icons (GtkFileChooserDefault *impl)
gboolean pixbuf_visible;
GdkPixbuf *pixbuf;
- gtk_tree_model_get (GTK_TREE_MODEL (impl->shortcuts_model), &iter,
+ gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter,
SHORTCUTS_COL_DATA, &data,
SHORTCUTS_COL_TYPE, &shortcut_type,
SHORTCUTS_COL_PIXBUF_VISIBLE, &pixbuf_visible,
@@ -1264,7 +1145,7 @@ shortcuts_reload_icons (GtkFileChooserDefault *impl)
volume = data;
pixbuf = _gtk_file_system_volume_render_icon (volume, GTK_WIDGET (impl),
- impl->icon_size, NULL);
+ impl->priv->icon_size, NULL);
}
else if (shortcut_type == SHORTCUT_TYPE_FILE)
{
@@ -1279,15 +1160,15 @@ shortcuts_reload_icons (GtkFileChooserDefault *impl)
info = g_new0 (struct ReloadIconsData, 1);
info->impl = g_object_ref (impl);
- tree_path = gtk_tree_model_get_path (GTK_TREE_MODEL (impl->shortcuts_model), &iter);
- info->row_ref = gtk_tree_row_reference_new (GTK_TREE_MODEL (impl->shortcuts_model),
tree_path);
+ tree_path = gtk_tree_model_get_path (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter);
+ info->row_ref = gtk_tree_row_reference_new (GTK_TREE_MODEL (impl->priv->shortcuts_model),
tree_path);
gtk_tree_path_free (tree_path);
- cancellable = _gtk_file_system_get_info (impl->file_system, file,
+ cancellable = _gtk_file_system_get_info (impl->priv->file_system, file,
"standard::icon",
shortcuts_reload_icons_get_info_cb,
info);
- impl->reload_icon_cancellables = g_slist_append (impl->reload_icon_cancellables,
cancellable);
+ impl->priv->reload_icon_cancellables = g_slist_append
(impl->priv->reload_icon_cancellables, cancellable);
}
else
{
@@ -1300,7 +1181,7 @@ shortcuts_reload_icons (GtkFileChooserDefault *impl)
*/
icon_theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (impl)));
pixbuf = gtk_icon_theme_load_icon (icon_theme, "folder-remote",
- impl->icon_size, 0, NULL);
+ impl->priv->icon_size, 0, NULL);
}
}
else if (shortcut_type == SHORTCUT_TYPE_SEARCH)
@@ -1312,7 +1193,7 @@ shortcuts_reload_icons (GtkFileChooserDefault *impl)
pixbuf = render_recent_icon (impl);
}
- gtk_list_store_set (impl->shortcuts_model, &iter,
+ gtk_list_store_set (impl->priv->shortcuts_model, &iter,
SHORTCUTS_COL_PIXBUF, pixbuf,
-1);
@@ -1321,7 +1202,7 @@ shortcuts_reload_icons (GtkFileChooserDefault *impl)
}
}
- while (gtk_tree_model_iter_next (GTK_TREE_MODEL (impl->shortcuts_model),&iter));
+ while (gtk_tree_model_iter_next (GTK_TREE_MODEL (impl->priv->shortcuts_model),&iter));
out:
@@ -1336,7 +1217,7 @@ shortcuts_find_folder (GtkFileChooserDefault *impl,
int pos;
GtkTreePath *path;
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view));
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_shortcuts_tree_view));
g_assert (folder != NULL);
pos = shortcut_find_position (impl, folder);
@@ -1355,7 +1236,7 @@ shortcuts_find_folder (GtkFileChooserDefault *impl,
static void
shortcuts_find_current_folder (GtkFileChooserDefault *impl)
{
- shortcuts_find_folder (impl, impl->current_folder);
+ shortcuts_find_folder (impl, impl->priv->current_folder);
}
/* Removes the specified number of rows from the shortcuts list */
@@ -1372,11 +1253,11 @@ shortcuts_remove_rows (GtkFileChooserDefault *impl,
{
GtkTreeIter iter;
- if (!gtk_tree_model_get_iter (GTK_TREE_MODEL (impl->shortcuts_model), &iter, path))
+ if (!gtk_tree_model_get_iter (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter, path))
g_assert_not_reached ();
shortcuts_free_row_data (impl, &iter);
- gtk_list_store_remove (impl->shortcuts_model, &iter);
+ gtk_list_store_remove (impl->priv->shortcuts_model, &iter);
}
gtk_tree_path_free (path);
@@ -1391,35 +1272,35 @@ shortcuts_update_count (GtkFileChooserDefault *impl,
{
case SHORTCUTS_HOME:
if (value < 0)
- impl->has_home = FALSE;
+ impl->priv->has_home = FALSE;
else
- impl->has_home = TRUE;
+ impl->priv->has_home = TRUE;
break;
case SHORTCUTS_DESKTOP:
if (value < 0)
- impl->has_desktop = FALSE;
+ impl->priv->has_desktop = FALSE;
else
- impl->has_desktop = TRUE;
+ impl->priv->has_desktop = TRUE;
break;
case SHORTCUTS_VOLUMES:
- impl->num_volumes += value;
+ impl->priv->num_volumes += value;
break;
case SHORTCUTS_SHORTCUTS:
- impl->num_shortcuts += value;
+ impl->priv->num_shortcuts += value;
break;
case SHORTCUTS_BOOKMARKS:
- impl->num_bookmarks += value;
+ impl->priv->num_bookmarks += value;
break;
case SHORTCUTS_CURRENT_FOLDER:
if (value < 0)
- impl->shortcuts_current_folder_active = FALSE;
+ impl->priv->shortcuts_current_folder_active = FALSE;
else
- impl->shortcuts_current_folder_active = TRUE;
+ impl->priv->shortcuts_current_folder_active = TRUE;
break;
default:
@@ -1458,19 +1339,19 @@ get_file_info_finished (GCancellable *cancellable,
/* Handle doesn't exist anymore in the model */
goto out;
- gtk_tree_model_get_iter (GTK_TREE_MODEL (request->impl->shortcuts_model),
+ gtk_tree_model_get_iter (GTK_TREE_MODEL (request->impl->priv->shortcuts_model),
&iter, path);
gtk_tree_path_free (path);
/* validate cancellable, else goto out */
- gtk_tree_model_get (GTK_TREE_MODEL (request->impl->shortcuts_model), &iter,
+ gtk_tree_model_get (GTK_TREE_MODEL (request->impl->priv->shortcuts_model), &iter,
SHORTCUTS_COL_CANCELLABLE, &model_cancellable,
-1);
if (cancellable != model_cancellable)
goto out;
/* set the cancellable to NULL in the model (we unref later on) */
- gtk_list_store_set (request->impl->shortcuts_model, &iter,
+ gtk_list_store_set (request->impl->priv->shortcuts_model, &iter,
SHORTCUTS_COL_CANCELLABLE, NULL,
-1);
@@ -1479,7 +1360,7 @@ get_file_info_finished (GCancellable *cancellable,
if (!info)
{
- gtk_list_store_remove (request->impl->shortcuts_model, &iter);
+ gtk_list_store_remove (request->impl->priv->shortcuts_model, &iter);
shortcuts_update_count (request->impl, request->type, -1);
if (request->type == SHORTCUTS_HOME)
@@ -1503,9 +1384,9 @@ get_file_info_finished (GCancellable *cancellable,
if (!request->label_copy)
request->label_copy = g_strdup (g_file_info_get_display_name (info));
pixbuf = _gtk_file_info_render_icon (info, GTK_WIDGET (request->impl),
- request->impl->icon_size);
+ request->impl->priv->icon_size);
- gtk_list_store_set (request->impl->shortcuts_model, &iter,
+ gtk_list_store_set (request->impl->priv->shortcuts_model, &iter,
SHORTCUTS_COL_PIXBUF, pixbuf,
SHORTCUTS_COL_PIXBUF_VISIBLE, TRUE,
SHORTCUTS_COL_NAME, request->label_copy,
@@ -1513,8 +1394,8 @@ get_file_info_finished (GCancellable *cancellable,
SHORTCUTS_COL_REMOVABLE, request->removable,
-1);
- if (request->impl->shortcuts_pane_filter_model)
- gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (request->impl->shortcuts_pane_filter_model));
+ if (request->impl->priv->shortcuts_pane_filter_model)
+ gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER
(request->impl->priv->shortcuts_pane_filter_model));
if (pixbuf)
g_object_unref (pixbuf);
@@ -1612,7 +1493,7 @@ shortcuts_insert_file (GtkFileChooserDefault *impl,
data = volume;
label_copy = _gtk_file_system_volume_get_display_name (volume);
pixbuf = _gtk_file_system_volume_render_icon (volume, GTK_WIDGET (impl),
- impl->icon_size, NULL);
+ impl->priv->icon_size, NULL);
}
else if (shortcut_type == SHORTCUT_TYPE_FILE)
{
@@ -1633,19 +1514,19 @@ shortcuts_insert_file (GtkFileChooserDefault *impl,
request->label_copy = g_strdup (label);
if (pos == -1)
- gtk_list_store_append (impl->shortcuts_model, &iter);
+ gtk_list_store_append (impl->priv->shortcuts_model, &iter);
else
- gtk_list_store_insert (impl->shortcuts_model, &iter, pos);
+ gtk_list_store_insert (impl->priv->shortcuts_model, &iter, pos);
- p = gtk_tree_model_get_path (GTK_TREE_MODEL (impl->shortcuts_model), &iter);
- request->row_ref = gtk_tree_row_reference_new (GTK_TREE_MODEL (impl->shortcuts_model), p);
+ p = gtk_tree_model_get_path (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter);
+ request->row_ref = gtk_tree_row_reference_new (GTK_TREE_MODEL (impl->priv->shortcuts_model), p);
gtk_tree_path_free (p);
- cancellable = _gtk_file_system_get_info (request->impl->file_system, request->file,
+ cancellable = _gtk_file_system_get_info (request->impl->priv->file_system, request->file,
"standard::is-hidden,standard::is-backup,standard::display-name,standard::icon",
get_file_info_finished, request);
- gtk_list_store_set (impl->shortcuts_model, &iter,
+ gtk_list_store_set (impl->priv->shortcuts_model, &iter,
SHORTCUTS_COL_DATA, g_object_ref (file),
SHORTCUTS_COL_TYPE, SHORTCUT_TYPE_FILE,
SHORTCUTS_COL_CANCELLABLE, cancellable,
@@ -1671,7 +1552,7 @@ shortcuts_insert_file (GtkFileChooserDefault *impl,
*/
icon_theme = gtk_icon_theme_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (impl)));
pixbuf = gtk_icon_theme_load_icon (icon_theme, "folder-remote",
- impl->icon_size, 0, NULL);
+ impl->priv->icon_size, 0, NULL);
}
}
else
@@ -1682,13 +1563,13 @@ shortcuts_insert_file (GtkFileChooserDefault *impl,
}
if (pos == -1)
- gtk_list_store_append (impl->shortcuts_model, &iter);
+ gtk_list_store_append (impl->priv->shortcuts_model, &iter);
else
- gtk_list_store_insert (impl->shortcuts_model, &iter, pos);
+ gtk_list_store_insert (impl->priv->shortcuts_model, &iter, pos);
shortcuts_update_count (impl, type, 1);
- gtk_list_store_set (impl->shortcuts_model, &iter,
+ gtk_list_store_set (impl->priv->shortcuts_model, &iter,
SHORTCUTS_COL_PIXBUF, pixbuf,
SHORTCUTS_COL_PIXBUF_VISIBLE, TRUE,
SHORTCUTS_COL_NAME, label_copy,
@@ -1698,8 +1579,8 @@ shortcuts_insert_file (GtkFileChooserDefault *impl,
SHORTCUTS_COL_CANCELLABLE, NULL,
-1);
- if (impl->shortcuts_pane_filter_model)
- gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (impl->shortcuts_pane_filter_model));
+ if (impl->priv->shortcuts_pane_filter_model)
+ gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (impl->priv->shortcuts_pane_filter_model));
g_free (label_copy);
@@ -1717,8 +1598,8 @@ shortcuts_append_search (GtkFileChooserDefault *impl)
pixbuf = render_search_icon (impl);
- gtk_list_store_append (impl->shortcuts_model, &iter);
- gtk_list_store_set (impl->shortcuts_model, &iter,
+ gtk_list_store_append (impl->priv->shortcuts_model, &iter);
+ gtk_list_store_set (impl->priv->shortcuts_model, &iter,
SHORTCUTS_COL_PIXBUF, pixbuf,
SHORTCUTS_COL_PIXBUF_VISIBLE, TRUE,
SHORTCUTS_COL_NAME, _("Search"),
@@ -1730,7 +1611,7 @@ shortcuts_append_search (GtkFileChooserDefault *impl)
if (pixbuf)
g_object_unref (pixbuf);
- impl->has_search = TRUE;
+ impl->priv->has_search = TRUE;
}
static gboolean
@@ -1761,8 +1642,8 @@ shortcuts_append_recent (GtkFileChooserDefault *impl)
pixbuf = render_recent_icon (impl);
- gtk_list_store_append (impl->shortcuts_model, &iter);
- gtk_list_store_set (impl->shortcuts_model, &iter,
+ gtk_list_store_append (impl->priv->shortcuts_model, &iter);
+ gtk_list_store_set (impl->priv->shortcuts_model, &iter,
SHORTCUTS_COL_PIXBUF, pixbuf,
SHORTCUTS_COL_PIXBUF_VISIBLE, TRUE,
SHORTCUTS_COL_NAME, _("Recently Used"),
@@ -1774,7 +1655,7 @@ shortcuts_append_recent (GtkFileChooserDefault *impl)
if (pixbuf)
g_object_unref (pixbuf);
- impl->has_recent = TRUE;
+ impl->priv->has_recent = TRUE;
}
/* Appends an item for the user's home directory to the shortcuts model */
@@ -1795,7 +1676,7 @@ shortcuts_append_home (GtkFileChooserDefault *impl)
home = g_file_new_for_path (home_path);
shortcuts_insert_file (impl, -1, SHORTCUT_TYPE_FILE, NULL, home, NULL, FALSE, SHORTCUTS_HOME);
- impl->has_home = TRUE;
+ impl->priv->has_home = TRUE;
g_object_unref (home);
@@ -1823,7 +1704,7 @@ shortcuts_append_desktop (GtkFileChooserDefault *impl)
file = g_file_new_for_path (name);
shortcuts_insert_file (impl, -1, SHORTCUT_TYPE_FILE, NULL, file, _("Desktop"), FALSE, SHORTCUTS_DESKTOP);
- impl->has_desktop = TRUE;
+ impl->priv->has_desktop = TRUE;
/* We do not actually pop up an error dialog if there is no desktop directory
* because some people may really not want to have one.
@@ -1854,13 +1735,13 @@ shortcuts_append_bookmarks (GtkFileChooserDefault *impl,
file = bookmarks->data;
- if (impl->local_only && !_gtk_file_has_native_path (file))
+ if (impl->priv->local_only && !_gtk_file_has_native_path (file))
continue;
if (shortcut_find_position (impl, file) != -1)
continue;
- label = _gtk_file_system_get_bookmark_label (impl->file_system, file);
+ label = _gtk_file_system_get_bookmark_label (impl->priv->file_system, file);
shortcuts_insert_file (impl, start_row + num_inserted, SHORTCUT_TYPE_FILE, NULL, file, label, TRUE,
SHORTCUTS_BOOKMARKS);
g_free (label);
@@ -1885,12 +1766,12 @@ shortcuts_get_index (GtkFileChooserDefault *impl,
if (where == SHORTCUTS_SEARCH)
goto out;
- n += impl->has_search ? 1 : 0;
+ n += impl->priv->has_search ? 1 : 0;
if (where == SHORTCUTS_RECENT)
goto out;
- n += impl->has_recent ? 1 : 0;
+ n += impl->priv->has_recent ? 1 : 0;
if (where == SHORTCUTS_RECENT_SEPARATOR)
goto out;
@@ -1900,33 +1781,33 @@ shortcuts_get_index (GtkFileChooserDefault *impl,
if (where == SHORTCUTS_HOME)
goto out;
- n += impl->has_home ? 1 : 0;
+ n += impl->priv->has_home ? 1 : 0;
if (where == SHORTCUTS_DESKTOP)
goto out;
- n += impl->has_desktop ? 1 : 0;
+ n += impl->priv->has_desktop ? 1 : 0;
if (where == SHORTCUTS_VOLUMES)
goto out;
- n += impl->num_volumes;
+ n += impl->priv->num_volumes;
if (where == SHORTCUTS_SHORTCUTS)
goto out;
- n += impl->num_shortcuts;
+ n += impl->priv->num_shortcuts;
if (where == SHORTCUTS_BOOKMARKS_SEPARATOR)
goto out;
/* If there are no bookmarks there won't be a separator */
- n += (impl->num_bookmarks > 0) ? 1 : 0;
+ n += (impl->priv->num_bookmarks > 0) ? 1 : 0;
if (where == SHORTCUTS_BOOKMARKS)
goto out;
- n += impl->num_bookmarks;
+ n += impl->priv->num_bookmarks;
if (where == SHORTCUTS_CURRENT_FOLDER_SEPARATOR)
goto out;
@@ -1954,14 +1835,14 @@ shortcuts_add_volumes (GtkFileChooserDefault *impl)
profile_start ("start", NULL);
- old_changing_folders = impl->changing_folder;
- impl->changing_folder = TRUE;
+ old_changing_folders = impl->priv->changing_folder;
+ impl->priv->changing_folder = TRUE;
start_row = shortcuts_get_index (impl, SHORTCUTS_VOLUMES);
- shortcuts_remove_rows (impl, start_row, impl->num_volumes);
- impl->num_volumes = 0;
+ shortcuts_remove_rows (impl, start_row, impl->priv->num_volumes);
+ impl->priv->num_volumes = 0;
- list = _gtk_file_system_list_volumes (impl->file_system);
+ list = _gtk_file_system_list_volumes (impl->priv->file_system);
n = 0;
@@ -1971,7 +1852,7 @@ shortcuts_add_volumes (GtkFileChooserDefault *impl)
volume = l->data;
- if (impl->local_only)
+ if (impl->priv->local_only)
{
if (_gtk_file_system_volume_is_mounted (volume))
{
@@ -2001,13 +1882,13 @@ shortcuts_add_volumes (GtkFileChooserDefault *impl)
n++;
}
- impl->num_volumes = n;
+ impl->priv->num_volumes = n;
g_slist_free (list);
- if (impl->shortcuts_pane_filter_model)
- gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (impl->shortcuts_pane_filter_model));
+ if (impl->priv->shortcuts_pane_filter_model)
+ gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (impl->priv->shortcuts_pane_filter_model));
- impl->changing_folder = old_changing_folders;
+ impl->priv->changing_folder = old_changing_folders;
profile_end ("end", NULL);
}
@@ -2023,9 +1904,9 @@ shortcuts_insert_separator (GtkFileChooserDefault *impl,
where == SHORTCUTS_BOOKMARKS_SEPARATOR ||
where == SHORTCUTS_CURRENT_FOLDER_SEPARATOR);
- gtk_list_store_insert (impl->shortcuts_model, &iter,
+ gtk_list_store_insert (impl->priv->shortcuts_model, &iter,
shortcuts_get_index (impl, where));
- gtk_list_store_set (impl->shortcuts_model, &iter,
+ gtk_list_store_set (impl->priv->shortcuts_model, &iter,
SHORTCUTS_COL_PIXBUF, NULL,
SHORTCUTS_COL_PIXBUF_VISIBLE, FALSE,
SHORTCUTS_COL_NAME, NULL,
@@ -2047,12 +1928,12 @@ shortcuts_add_bookmarks (GtkFileChooserDefault *impl)
profile_start ("start", NULL);
- old_changing_folders = impl->changing_folder;
- impl->changing_folder = TRUE;
+ old_changing_folders = impl->priv->changing_folder;
+ impl->priv->changing_folder = TRUE;
if (shortcuts_get_selected (impl, &iter))
{
- gtk_tree_model_get (GTK_TREE_MODEL (impl->shortcuts_model),
+ gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->shortcuts_model),
&iter,
SHORTCUTS_COL_DATA, &col_data,
SHORTCUTS_COL_TYPE, &shortcut_type,
@@ -2062,24 +1943,24 @@ shortcuts_add_bookmarks (GtkFileChooserDefault *impl)
list_selected = g_object_ref (col_data);
}
- if (impl->num_bookmarks > 0)
+ if (impl->priv->num_bookmarks > 0)
shortcuts_remove_rows (impl,
shortcuts_get_index (impl, SHORTCUTS_BOOKMARKS_SEPARATOR),
- impl->num_bookmarks + 1);
+ impl->priv->num_bookmarks + 1);
- impl->num_bookmarks = 0;
+ impl->priv->num_bookmarks = 0;
shortcuts_insert_separator (impl, SHORTCUTS_BOOKMARKS_SEPARATOR);
- bookmarks = _gtk_file_system_list_bookmarks (impl->file_system);
+ bookmarks = _gtk_file_system_list_bookmarks (impl->priv->file_system);
shortcuts_append_bookmarks (impl, bookmarks);
g_slist_foreach (bookmarks, (GFunc) g_object_unref, NULL);
g_slist_free (bookmarks);
- if (impl->num_bookmarks == 0)
+ if (impl->priv->num_bookmarks == 0)
shortcuts_remove_rows (impl, shortcuts_get_index (impl, SHORTCUTS_BOOKMARKS_SEPARATOR), 1);
- if (impl->shortcuts_pane_filter_model)
- gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (impl->shortcuts_pane_filter_model));
+ if (impl->priv->shortcuts_pane_filter_model)
+ gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (impl->priv->shortcuts_pane_filter_model));
if (list_selected)
{
@@ -2087,7 +1968,7 @@ shortcuts_add_bookmarks (GtkFileChooserDefault *impl)
g_object_unref (list_selected);
}
- impl->changing_folder = old_changing_folders;
+ impl->priv->changing_folder = old_changing_folders;
profile_end ("end", NULL);
}
@@ -2098,11 +1979,11 @@ shortcuts_add_current_folder (GtkFileChooserDefault *impl)
{
int pos;
- g_assert (!impl->shortcuts_current_folder_active);
+ g_assert (!impl->priv->shortcuts_current_folder_active);
- g_assert (impl->current_folder != NULL);
+ g_assert (impl->priv->current_folder != NULL);
- pos = shortcut_find_position (impl, impl->current_folder);
+ pos = shortcut_find_position (impl, impl->priv->current_folder);
if (pos == -1)
{
GtkFileSystemVolume *volume;
@@ -2114,16 +1995,16 @@ shortcuts_add_current_folder (GtkFileChooserDefault *impl)
/* Item */
pos = shortcuts_get_index (impl, SHORTCUTS_CURRENT_FOLDER);
- volume = _gtk_file_system_get_volume_for_file (impl->file_system, impl->current_folder);
+ volume = _gtk_file_system_get_volume_for_file (impl->priv->file_system, impl->priv->current_folder);
if (volume)
base_file = _gtk_file_system_volume_get_root (volume);
else
base_file = NULL;
- if (base_file && g_file_equal (base_file, impl->current_folder))
+ if (base_file && g_file_equal (base_file, impl->priv->current_folder))
shortcuts_insert_file (impl, pos, SHORTCUT_TYPE_VOLUME, volume, NULL, NULL, FALSE,
SHORTCUTS_CURRENT_FOLDER);
else
- shortcuts_insert_file (impl, pos, SHORTCUT_TYPE_FILE, NULL, impl->current_folder, NULL, FALSE,
SHORTCUTS_CURRENT_FOLDER);
+ shortcuts_insert_file (impl, pos, SHORTCUT_TYPE_FILE, NULL, impl->priv->current_folder, NULL, FALSE,
SHORTCUTS_CURRENT_FOLDER);
if (base_file)
g_object_unref (base_file);
@@ -2138,10 +2019,10 @@ shortcuts_update_current_folder (GtkFileChooserDefault *impl)
pos = shortcuts_get_index (impl, SHORTCUTS_CURRENT_FOLDER_SEPARATOR);
- if (impl->shortcuts_current_folder_active)
+ if (impl->priv->shortcuts_current_folder_active)
{
shortcuts_remove_rows (impl, pos, 2);
- impl->shortcuts_current_folder_active = FALSE;
+ impl->priv->shortcuts_current_folder_active = FALSE;
}
shortcuts_add_current_folder (impl);
@@ -2171,38 +2052,24 @@ shortcuts_pane_filter_cb (GtkTreeModel *model,
/* Creates the list model for shortcuts */
static void
-shortcuts_model_create (GtkFileChooserDefault *impl)
+shortcuts_model_populate (GtkFileChooserDefault *impl)
{
- /* Keep this order in sync with the SHORCUTS_COL_* enum values */
- impl->shortcuts_model = gtk_list_store_new (SHORTCUTS_COL_NUM_COLUMNS,
- GDK_TYPE_PIXBUF, /* pixbuf */
- G_TYPE_STRING, /* name */
- G_TYPE_POINTER, /* path or volume */
- G_TYPE_INT, /* ShortcutType */
- G_TYPE_BOOLEAN, /* removable */
- G_TYPE_BOOLEAN, /* pixbuf cell visibility */
- G_TYPE_POINTER); /* GCancellable */
-
shortcuts_append_search (impl);
- if (impl->recent_manager)
+ if (impl->priv->recent_manager)
{
shortcuts_append_recent (impl);
shortcuts_insert_separator (impl, SHORTCUTS_RECENT_SEPARATOR);
}
- if (impl->file_system)
+ if (impl->priv->file_system)
{
shortcuts_append_home (impl);
shortcuts_append_desktop (impl);
shortcuts_add_volumes (impl);
}
- impl->shortcuts_pane_filter_model = shortcuts_pane_model_filter_new (impl,
- GTK_TREE_MODEL (impl->shortcuts_model),
- NULL);
-
- gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (impl->shortcuts_pane_filter_model),
+ gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (impl->priv->shortcuts_pane_filter_model),
shortcuts_pane_filter_cb,
impl,
NULL);
@@ -2216,23 +2083,23 @@ new_folder_button_clicked (GtkButton *button,
GtkTreeIter iter;
GtkTreePath *path;
- if (!impl->browse_files_model)
+ if (!impl->priv->browse_files_model)
return; /* FIXME: this sucks. Disable the New Folder button or something. */
/* Prevent button from being clicked twice */
- gtk_widget_set_sensitive (impl->browse_new_folder_button, FALSE);
+ gtk_widget_set_sensitive (impl->priv->browse_new_folder_button, FALSE);
- _gtk_file_system_model_add_editable (impl->browse_files_model, &iter);
+ _gtk_file_system_model_add_editable (impl->priv->browse_files_model, &iter);
- path = gtk_tree_model_get_path (GTK_TREE_MODEL (impl->browse_files_model), &iter);
- gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (impl->browse_files_tree_view),
- path, impl->list_name_column,
+ path = gtk_tree_model_get_path (GTK_TREE_MODEL (impl->priv->browse_files_model), &iter);
+ gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (impl->priv->browse_files_tree_view),
+ path, impl->priv->list_name_column,
FALSE, 0.0, 0.0);
- g_object_set (impl->list_name_renderer, "editable", TRUE, NULL);
- gtk_tree_view_set_cursor (GTK_TREE_VIEW (impl->browse_files_tree_view),
+ g_object_set (impl->priv->list_name_renderer, "editable", TRUE, NULL);
+ gtk_tree_view_set_cursor (GTK_TREE_VIEW (impl->priv->browse_files_tree_view),
path,
- impl->list_name_column,
+ impl->priv->list_name_column,
TRUE);
gtk_tree_path_free (path);
@@ -2259,23 +2126,23 @@ edited_idle_cb (GtkFileChooserDefault *impl)
{
gdk_threads_enter ();
- g_source_destroy (impl->edited_idle);
- impl->edited_idle = NULL;
+ g_source_destroy (impl->priv->edited_idle);
+ impl->priv->edited_idle = NULL;
- _gtk_file_system_model_remove_editable (impl->browse_files_model);
- g_object_set (impl->list_name_renderer, "editable", FALSE, NULL);
+ _gtk_file_system_model_remove_editable (impl->priv->browse_files_model);
+ g_object_set (impl->priv->list_name_renderer, "editable", FALSE, NULL);
- gtk_widget_set_sensitive (impl->browse_new_folder_button, TRUE);
+ gtk_widget_set_sensitive (impl->priv->browse_new_folder_button, TRUE);
- if (impl->edited_new_text /* not cancelled? */
- && (strlen (impl->edited_new_text) != 0)
- && (strcmp (impl->edited_new_text, DEFAULT_NEW_FOLDER_NAME) != 0)) /* Don't create folder if name is
empty or has not been edited */
+ if (impl->priv->edited_new_text /* not cancelled? */
+ && (strlen (impl->priv->edited_new_text) != 0)
+ && (strcmp (impl->priv->edited_new_text, DEFAULT_NEW_FOLDER_NAME) != 0)) /* Don't create folder if
name is empty or has not been edited */
{
GError *error = NULL;
GFile *file;
- file = g_file_get_child_for_display_name (impl->current_folder,
- impl->edited_new_text,
+ file = g_file_get_child_for_display_name (impl->priv->current_folder,
+ impl->priv->edited_new_text,
&error);
if (file)
{
@@ -2291,8 +2158,8 @@ edited_idle_cb (GtkFileChooserDefault *impl)
else
error_creating_folder_dialog (impl, file, error);
- g_free (impl->edited_new_text);
- impl->edited_new_text = NULL;
+ g_free (impl->priv->edited_new_text);
+ impl->priv->edited_new_text = NULL;
}
gdk_threads_leave ();
@@ -2308,11 +2175,11 @@ queue_edited_idle (GtkFileChooserDefault *impl,
* just now.
*/
- if (!impl->edited_idle)
- impl->edited_idle = add_idle_while_impl_is_alive (impl, G_CALLBACK (edited_idle_cb));
+ if (!impl->priv->edited_idle)
+ impl->priv->edited_idle = add_idle_while_impl_is_alive (impl, G_CALLBACK (edited_idle_cb));
- g_free (impl->edited_new_text);
- impl->edited_new_text = g_strdup (new_text);
+ g_free (impl->priv->edited_new_text);
+ impl->priv->edited_new_text = g_strdup (new_text);
}
/* Callback used from the text cell renderer when the new folder is named */
@@ -2341,60 +2208,6 @@ renderer_editing_canceled_cb (GtkCellRendererText *cell_renderer_text,
queue_edited_idle (impl, NULL);
}
-/* Creates the widgets for the filter combo box */
-static GtkWidget *
-filter_create (GtkFileChooserDefault *impl)
-{
- GtkCellRenderer *cell;
- GList *cells;
-
- impl->filter_combo = gtk_combo_box_text_new ();
- gtk_combo_box_set_focus_on_click (GTK_COMBO_BOX (impl->filter_combo), FALSE);
-
- /* Get the combo's text renderer and set ellipsize parameters */
- cells = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (impl->filter_combo));
- g_assert (cells);
- cell = cells->data;
-
- g_object_set (G_OBJECT (cell),
- "ellipsize", PANGO_ELLIPSIZE_END,
- NULL);
-
- g_list_free (cells);
-
- g_signal_connect (impl->filter_combo, "changed",
- G_CALLBACK (filter_combo_changed), impl);
-
- gtk_widget_set_tooltip_text (impl->filter_combo,
- _("Select which types of files are shown"));
-
- return impl->filter_combo;
-}
-
-static GtkWidget *
-toolbutton_new (GtkFileChooserDefault *impl,
- GIcon *icon,
- gboolean sensitive,
- gboolean show,
- GCallback callback)
-{
- GtkToolItem *item;
- GtkWidget *image;
-
- item = gtk_tool_button_new (NULL, NULL);
- image = gtk_image_new_from_gicon (icon, GTK_ICON_SIZE_SMALL_TOOLBAR);
- gtk_widget_show (image);
- gtk_tool_button_set_icon_widget (GTK_TOOL_BUTTON (item), image);
-
- gtk_widget_set_sensitive (GTK_WIDGET (item), sensitive);
- g_signal_connect (item, "clicked", callback, impl);
-
- if (show)
- gtk_widget_show (GTK_WIDGET (item));
-
- return GTK_WIDGET (item);
-}
-
/* Looks for a path among the shortcuts; returns its index or -1 if it doesn't exist */
static int
shortcut_find_position (GtkFileChooserDefault *impl,
@@ -2404,14 +2217,14 @@ shortcut_find_position (GtkFileChooserDefault *impl,
int i;
int current_folder_separator_idx;
- if (!gtk_tree_model_get_iter_first (GTK_TREE_MODEL (impl->shortcuts_model), &iter))
+ if (!gtk_tree_model_get_iter_first (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter))
return -1;
current_folder_separator_idx = shortcuts_get_index (impl, SHORTCUTS_CURRENT_FOLDER_SEPARATOR);
#if 0
/* FIXME: is this still needed? */
- if (current_folder_separator_idx >= impl->shortcuts_model->length)
+ if (current_folder_separator_idx >= impl->priv->shortcuts_model->length)
return -1;
#endif
@@ -2420,7 +2233,7 @@ shortcut_find_position (GtkFileChooserDefault *impl,
gpointer col_data;
ShortcutType shortcut_type;
- gtk_tree_model_get (GTK_TREE_MODEL (impl->shortcuts_model), &iter,
+ gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter,
SHORTCUTS_COL_DATA, &col_data,
SHORTCUTS_COL_TYPE, &shortcut_type,
-1);
@@ -2457,7 +2270,7 @@ shortcut_find_position (GtkFileChooserDefault *impl,
if (i < current_folder_separator_idx - 1)
{
- if (!gtk_tree_model_iter_next (GTK_TREE_MODEL (impl->shortcuts_model), &iter))
+ if (!gtk_tree_model_iter_next (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter))
g_assert_not_reached ();
}
}
@@ -2479,7 +2292,7 @@ shortcuts_add_bookmark_from_file (GtkFileChooserDefault *impl,
return FALSE;
error = NULL;
- if (!_gtk_file_system_insert_bookmark (impl->file_system, file, pos, &error))
+ if (!_gtk_file_system_insert_bookmark (impl->priv->file_system, file, pos, &error))
{
error_adding_bookmark_dialog (impl, file, error);
return FALSE;
@@ -2514,10 +2327,10 @@ bookmarks_add_selected_folder (GtkFileChooserDefault *impl)
{
GtkTreeSelection *selection;
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
if (gtk_tree_selection_count_selected_rows (selection) == 0)
- shortcuts_add_bookmark_from_file (impl, impl->current_folder, -1);
+ shortcuts_add_bookmark_from_file (impl, impl->priv->current_folder, -1);
else
gtk_tree_selection_selected_foreach (selection,
add_bookmark_foreach_cb,
@@ -2542,15 +2355,15 @@ shortcuts_get_selected (GtkFileChooserDefault *impl,
GtkTreeSelection *selection;
GtkTreeIter parent_iter;
- if (!impl->browse_shortcuts_tree_view)
+ if (!impl->priv->browse_shortcuts_tree_view)
return FALSE;
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view));
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_shortcuts_tree_view));
if (!gtk_tree_selection_get_selected (selection, NULL, &parent_iter))
return FALSE;
- gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER
(impl->shortcuts_pane_filter_model),
+ gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER
(impl->priv->shortcuts_pane_filter_model),
iter,
&parent_iter);
return TRUE;
@@ -2569,7 +2382,7 @@ remove_selected_bookmarks (GtkFileChooserDefault *impl)
if (!shortcuts_get_selected (impl, &iter))
return;
- gtk_tree_model_get (GTK_TREE_MODEL (impl->shortcuts_model), &iter,
+ gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter,
SHORTCUTS_COL_DATA, &col_data,
SHORTCUTS_COL_REMOVABLE, &removable,
-1);
@@ -2582,7 +2395,7 @@ remove_selected_bookmarks (GtkFileChooserDefault *impl)
file = col_data;
error = NULL;
- if (!_gtk_file_system_remove_bookmark (impl->file_system, file, &error))
+ if (!_gtk_file_system_remove_bookmark (impl->priv->file_system, file, &error))
error_removing_bookmark_dialog (impl, file, error);
}
@@ -2644,7 +2457,7 @@ selection_check (GtkFileChooserDefault *impl,
closure.all_files = TRUE;
closure.all_folders = TRUE;
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
gtk_tree_selection_selected_foreach (selection,
selection_check_foreach_cb,
&closure);
@@ -2696,7 +2509,7 @@ get_selected_file (GtkFileChooserDefault *impl)
closure.impl = impl;
closure.file = NULL;
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
gtk_tree_selection_selected_foreach (selection,
get_selected_file_foreach_cb,
&closure);
@@ -2747,7 +2560,7 @@ bookmarks_check_add_sensitivity (GtkFileChooserDefault *impl)
selection_check (impl, &num_selected, NULL, &all_folders);
if (num_selected == 0)
- active = (impl->current_folder != NULL) && (shortcut_find_position (impl, impl->current_folder) == -1);
+ active = (impl->priv->current_folder != NULL) && (shortcut_find_position (impl,
impl->priv->current_folder) == -1);
else if (num_selected == 1)
{
GFile *file;
@@ -2760,10 +2573,10 @@ bookmarks_check_add_sensitivity (GtkFileChooserDefault *impl)
else
active = all_folders;
- gtk_widget_set_sensitive (impl->browse_shortcuts_add_button, active);
+ gtk_widget_set_sensitive (impl->priv->browse_shortcuts_add_button, active);
- if (impl->browse_files_popup_menu_add_shortcut_item)
- gtk_widget_set_sensitive (impl->browse_files_popup_menu_add_shortcut_item,
+ if (impl->priv->browse_files_popup_menu_add_shortcut_item)
+ gtk_widget_set_sensitive (impl->priv->browse_files_popup_menu_add_shortcut_item,
(num_selected == 0) ? FALSE : active);
if (active)
@@ -2777,14 +2590,14 @@ bookmarks_check_add_sensitivity (GtkFileChooserDefault *impl)
GtkTreeSelection *selection;
UpdateTooltipData data;
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
data.impl = impl;
data.tip = NULL;
gtk_tree_selection_selected_foreach (selection, update_tooltip, &data);
tip = data.tip;
}
- gtk_widget_set_tooltip_text (impl->browse_shortcuts_add_button, tip);
+ gtk_widget_set_tooltip_text (impl->priv->browse_shortcuts_add_button, tip);
g_free (tip);
}
}
@@ -2802,22 +2615,22 @@ bookmarks_check_remove_sensitivity (GtkFileChooserDefault *impl)
if (shortcuts_get_selected (impl, &iter))
{
- gtk_tree_model_get (GTK_TREE_MODEL (impl->shortcuts_model), &iter,
+ gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter,
SHORTCUTS_COL_REMOVABLE, &removable,
SHORTCUTS_COL_NAME, &name,
-1);
- gtk_widget_set_sensitive (impl->browse_shortcuts_remove_button, removable);
+ gtk_widget_set_sensitive (impl->priv->browse_shortcuts_remove_button, removable);
if (removable)
tip = g_strdup_printf (_("Remove the bookmark '%s'"), name);
else
tip = g_strdup_printf (_("Bookmark '%s' cannot be removed"), name);
- gtk_widget_set_tooltip_text (impl->browse_shortcuts_remove_button, tip);
+ gtk_widget_set_tooltip_text (impl->priv->browse_shortcuts_remove_button, tip);
g_free (tip);
}
else
- gtk_widget_set_tooltip_text (impl->browse_shortcuts_remove_button,
+ gtk_widget_set_tooltip_text (impl->priv->browse_shortcuts_remove_button,
_("Remove the selected bookmark"));
g_free (name);
}
@@ -2828,16 +2641,16 @@ shortcuts_check_popup_sensitivity (GtkFileChooserDefault *impl)
GtkTreeIter iter;
gboolean removable = FALSE;
- if (impl->browse_shortcuts_popup_menu == NULL)
+ if (impl->priv->browse_shortcuts_popup_menu == NULL)
return;
if (shortcuts_get_selected (impl, &iter))
- gtk_tree_model_get (GTK_TREE_MODEL (impl->shortcuts_model), &iter,
+ gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter,
SHORTCUTS_COL_REMOVABLE, &removable,
-1);
- gtk_widget_set_sensitive (impl->browse_shortcuts_popup_menu_remove_item, removable);
- gtk_widget_set_sensitive (impl->browse_shortcuts_popup_menu_rename_item, removable);
+ gtk_widget_set_sensitive (impl->priv->browse_shortcuts_popup_menu_remove_item, removable);
+ gtk_widget_set_sensitive (impl->priv->browse_shortcuts_popup_menu_rename_item, removable);
}
/* GtkWidget::drag-begin handler for the shortcuts list. */
@@ -2847,7 +2660,7 @@ shortcuts_drag_begin_cb (GtkWidget *widget,
GtkFileChooserDefault *impl)
{
#if 0
- impl->shortcuts_drag_context = g_object_ref (context);
+ impl->priv->shortcuts_drag_context = g_object_ref (context);
#endif
}
@@ -2856,11 +2669,11 @@ shortcuts_drag_begin_cb (GtkWidget *widget,
static void
shortcuts_cancel_drag_outside_idle (GtkFileChooserDefault *impl)
{
- if (!impl->shortcuts_drag_outside_idle)
+ if (!impl->priv->shortcuts_drag_outside_idle)
return;
- g_source_destroy (impl->shortcuts_drag_outside_idle);
- impl->shortcuts_drag_outside_idle = NULL;
+ g_source_destroy (impl->priv->shortcuts_drag_outside_idle);
+ impl->priv->shortcuts_drag_outside_idle = NULL;
}
#endif
@@ -2871,16 +2684,16 @@ shortcuts_drag_end_cb (GtkWidget *widget,
GtkFileChooserDefault *impl)
{
#if 0
- g_object_unref (impl->shortcuts_drag_context);
+ g_object_unref (impl->priv->shortcuts_drag_context);
shortcuts_cancel_drag_outside_idle (impl);
- if (!impl->shortcuts_drag_outside)
+ if (!impl->priv->shortcuts_drag_outside)
return;
- gtk_button_clicked (GTK_BUTTON (impl->browse_shortcuts_remove_button));
+ gtk_button_clicked (GTK_BUTTON (impl->priv->browse_shortcuts_remove_button));
- impl->shortcuts_drag_outside = FALSE;
+ impl->priv->shortcuts_drag_outside = FALSE;
#endif
}
@@ -2903,13 +2716,13 @@ shortcuts_drag_leave_cb (GtkWidget *widget,
GtkFileChooserDefault *impl)
{
#if 0
- if (gtk_drag_get_source_widget (context) == widget && !impl->shortcuts_drag_outside_idle)
+ if (gtk_drag_get_source_widget (context) == widget && !impl->priv->shortcuts_drag_outside_idle)
{
- impl->shortcuts_drag_outside_idle = add_idle_while_impl_is_alive (impl, G_CALLBACK
(shortcuts_drag_outside_idle_cb));
+ impl->priv->shortcuts_drag_outside_idle = add_idle_while_impl_is_alive (impl, G_CALLBACK
(shortcuts_drag_outside_idle_cb));
}
#endif
- gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view),
+ gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (impl->priv->browse_shortcuts_tree_view),
NULL,
GTK_TREE_VIEW_DROP_BEFORE);
@@ -2932,7 +2745,7 @@ shortcuts_compute_drop_position (GtkFileChooserDefault *impl,
int bookmarks_index;
int header_height = 0;
- tree_view = GTK_TREE_VIEW (impl->browse_shortcuts_tree_view);
+ tree_view = GTK_TREE_VIEW (impl->priv->browse_shortcuts_tree_view);
if (gtk_tree_view_get_headers_visible (tree_view))
header_height = _gtk_tree_view_get_header_height (tree_view);
@@ -2947,7 +2760,7 @@ shortcuts_compute_drop_position (GtkFileChooserDefault *impl,
NULL,
&cell_y))
{
- row = bookmarks_index + impl->num_bookmarks - 1;
+ row = bookmarks_index + impl->priv->num_bookmarks - 1;
*path = gtk_tree_path_new_from_indices (row, -1);
*pos = GTK_TREE_VIEW_DROP_AFTER;
return;
@@ -2962,9 +2775,9 @@ shortcuts_compute_drop_position (GtkFileChooserDefault *impl,
row = bookmarks_index;
*pos = GTK_TREE_VIEW_DROP_BEFORE;
}
- else if (row > bookmarks_index + impl->num_bookmarks - 1)
+ else if (row > bookmarks_index + impl->priv->num_bookmarks - 1)
{
- row = bookmarks_index + impl->num_bookmarks - 1;
+ row = bookmarks_index + impl->priv->num_bookmarks - 1;
*pos = GTK_TREE_VIEW_DROP_AFTER;
}
else
@@ -2999,10 +2812,10 @@ shortcuts_drag_motion_cb (GtkWidget *widget,
{
shortcuts_cancel_drag_outside_idle (impl);
- if (impl->shortcuts_drag_outside)
+ if (impl->priv->shortcuts_drag_outside)
{
shortcuts_drag_set_delete_cursor (impl, FALSE);
- impl->shortcuts_drag_outside = FALSE;
+ impl->priv->shortcuts_drag_outside = FALSE;
}
}
#endif
@@ -3020,7 +2833,7 @@ shortcuts_drag_motion_cb (GtkWidget *widget,
}
shortcuts_compute_drop_position (impl, x, y, &path, &pos);
- gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view), path, pos);
+ gtk_tree_view_set_drag_dest_row (GTK_TREE_VIEW (impl->priv->browse_shortcuts_tree_view), path, pos);
gtk_tree_path_free (path);
out:
@@ -3103,15 +2916,15 @@ shortcuts_reorder (GtkFileChooserDefault *impl,
if (!shortcuts_get_selected (impl, &iter))
g_assert_not_reached ();
- path = gtk_tree_model_get_path (GTK_TREE_MODEL (impl->shortcuts_model), &iter);
+ path = gtk_tree_model_get_path (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter);
old_position = *gtk_tree_path_get_indices (path);
gtk_tree_path_free (path);
bookmarks_index = shortcuts_get_index (impl, SHORTCUTS_BOOKMARKS);
old_position -= bookmarks_index;
- g_assert (old_position >= 0 && old_position < impl->num_bookmarks);
+ g_assert (old_position >= 0 && old_position < impl->priv->num_bookmarks);
- gtk_tree_model_get (GTK_TREE_MODEL (impl->shortcuts_model), &iter,
+ gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter,
SHORTCUTS_COL_NAME, &name,
SHORTCUTS_COL_DATA, &col_data,
SHORTCUTS_COL_TYPE, &shortcut_type,
@@ -3131,10 +2944,10 @@ shortcuts_reorder (GtkFileChooserDefault *impl,
goto out;
error = NULL;
- if (_gtk_file_system_remove_bookmark (impl->file_system, file, &error))
+ if (_gtk_file_system_remove_bookmark (impl->priv->file_system, file, &error))
{
shortcuts_add_bookmark_from_file (impl, file, new_position);
- _gtk_file_system_set_bookmark_label (impl->file_system, file, name);
+ _gtk_file_system_set_bookmark_label (impl->priv->file_system, file, name);
}
else
error_adding_bookmark_dialog (impl, file, error);
@@ -3261,12 +3074,12 @@ shortcuts_selection_changed_cb (GtkTreeSelection *selection,
bookmarks_check_remove_sensitivity (impl);
shortcuts_check_popup_sensitivity (impl);
- if (impl->changing_folder)
+ if (impl->priv->changing_folder)
return;
if (gtk_tree_selection_get_selected(selection, NULL, &iter))
{
- gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER
(impl->shortcuts_pane_filter_model),
+ gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER
(impl->priv->shortcuts_pane_filter_model),
&child_iter,
&iter);
shortcuts_activate_iter (impl, &child_iter);
@@ -3292,6 +3105,21 @@ shortcuts_key_press_event_after_cb (GtkWidget *tree_view,
{
GtkWidget *entry;
+ /* Connect "after" to key-press-event on the shortcuts pane. We want this action to be possible:
+ *
+ * 1. user brings up a SAVE dialog
+ * 2. user clicks on a shortcut in the shortcuts pane
+ * 3. user starts typing a filename
+ *
+ * Normally, the user's typing would be ignored, as the shortcuts treeview doesn't
+ * support interactive search. However, we'd rather focus the location entry
+ * so that the user can type *there*.
+ *
+ * To preserve keyboard navigation in the shortcuts pane, we don't focus the
+ * filename entry if one clicks on a shortcut; rather, we focus the entry only
+ * if the user starts typing while the focus is in the shortcuts pane.
+ */
+
/* don't screw up focus switching with Tab */
if (event->keyval == GDK_KEY_Tab
|| event->keyval == GDK_KEY_KP_Tab
@@ -3299,10 +3127,10 @@ shortcuts_key_press_event_after_cb (GtkWidget *tree_view,
|| event->length < 1)
return FALSE;
- if (impl->location_entry)
- entry = impl->location_entry;
- else if (impl->search_entry)
- entry = impl->search_entry;
+ if (impl->priv->location_entry)
+ entry = impl->priv->location_entry;
+ else if (impl->priv->search_entry)
+ entry = impl->priv->search_entry;
else
entry = NULL;
@@ -3325,9 +3153,9 @@ shortcuts_popup_menu_detach_cb (GtkWidget *attach_widget,
impl = g_object_get_data (G_OBJECT (attach_widget), "GtkFileChooserDefault");
g_assert (GTK_IS_FILE_CHOOSER_DEFAULT (impl));
- impl->browse_shortcuts_popup_menu = NULL;
- impl->browse_shortcuts_popup_menu_remove_item = NULL;
- impl->browse_shortcuts_popup_menu_rename_item = NULL;
+ impl->priv->browse_shortcuts_popup_menu = NULL;
+ impl->priv->browse_shortcuts_popup_menu_remove_item = NULL;
+ impl->priv->browse_shortcuts_popup_menu_rename_item = NULL;
}
static void
@@ -3349,13 +3177,13 @@ rename_selected_bookmark (GtkFileChooserDefault *impl)
if (shortcuts_get_selected (impl, &iter))
{
- path = gtk_tree_model_get_path (GTK_TREE_MODEL (impl->shortcuts_model), &iter);
- column = gtk_tree_view_get_column (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view), 0);
+ path = gtk_tree_model_get_path (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter);
+ column = gtk_tree_view_get_column (GTK_TREE_VIEW (impl->priv->browse_shortcuts_tree_view), 0);
renderers = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (column));
cell = g_list_nth_data (renderers, 1);
g_list_free (renderers);
g_object_set (cell, "editable", TRUE, NULL);
- gtk_tree_view_set_cursor_on_cell (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view),
+ gtk_tree_view_set_cursor_on_cell (GTK_TREE_VIEW (impl->priv->browse_shortcuts_tree_view),
path, column, cell, TRUE);
gtk_tree_path_free (path);
}
@@ -3374,29 +3202,29 @@ shortcuts_build_popup_menu (GtkFileChooserDefault *impl)
{
GtkWidget *item;
- if (impl->browse_shortcuts_popup_menu)
+ if (impl->priv->browse_shortcuts_popup_menu)
return;
- impl->browse_shortcuts_popup_menu = gtk_menu_new ();
- gtk_menu_attach_to_widget (GTK_MENU (impl->browse_shortcuts_popup_menu),
- impl->browse_shortcuts_tree_view,
+ impl->priv->browse_shortcuts_popup_menu = gtk_menu_new ();
+ gtk_menu_attach_to_widget (GTK_MENU (impl->priv->browse_shortcuts_popup_menu),
+ impl->priv->browse_shortcuts_tree_view,
shortcuts_popup_menu_detach_cb);
item = gtk_image_menu_item_new_with_label (_("Remove"));
- impl->browse_shortcuts_popup_menu_remove_item = item;
+ impl->priv->browse_shortcuts_popup_menu_remove_item = item;
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item),
gtk_image_new_from_stock (GTK_STOCK_REMOVE, GTK_ICON_SIZE_MENU));
g_signal_connect (item, "activate",
G_CALLBACK (remove_shortcut_cb), impl);
gtk_widget_show (item);
- gtk_menu_shell_append (GTK_MENU_SHELL (impl->browse_shortcuts_popup_menu), item);
+ gtk_menu_shell_append (GTK_MENU_SHELL (impl->priv->browse_shortcuts_popup_menu), item);
item = gtk_menu_item_new_with_label (_("Rename…"));
- impl->browse_shortcuts_popup_menu_rename_item = item;
+ impl->priv->browse_shortcuts_popup_menu_rename_item = item;
g_signal_connect (item, "activate",
G_CALLBACK (rename_shortcut_cb), impl);
gtk_widget_show (item);
- gtk_menu_shell_append (GTK_MENU_SHELL (impl->browse_shortcuts_popup_menu), item);
+ gtk_menu_shell_append (GTK_MENU_SHELL (impl->priv->browse_shortcuts_popup_menu), item);
}
static void
@@ -3419,16 +3247,16 @@ shortcuts_popup_menu (GtkFileChooserDefault *impl,
{
shortcuts_update_popup_menu (impl);
if (event)
- gtk_menu_popup (GTK_MENU (impl->browse_shortcuts_popup_menu),
+ gtk_menu_popup (GTK_MENU (impl->priv->browse_shortcuts_popup_menu),
NULL, NULL, NULL, NULL,
event->button, event->time);
else
{
- gtk_menu_popup (GTK_MENU (impl->browse_shortcuts_popup_menu),
+ gtk_menu_popup (GTK_MENU (impl->priv->browse_shortcuts_popup_menu),
NULL, NULL,
- popup_position_func, impl->browse_shortcuts_tree_view,
+ popup_position_func, impl->priv->browse_shortcuts_tree_view,
0, GDK_CURRENT_TIME);
- gtk_menu_shell_select_first (GTK_MENU_SHELL (impl->browse_shortcuts_popup_menu),
+ gtk_menu_shell_select_first (GTK_MENU_SHELL (impl->priv->browse_shortcuts_popup_menu),
FALSE);
}
}
@@ -3460,7 +3288,7 @@ shortcuts_button_press_event_cb (GtkWidget *widget,
return FALSE;
in_press = TRUE;
- handled = gtk_widget_event (impl->browse_shortcuts_tree_view, (GdkEvent *) event);
+ handled = gtk_widget_event (impl->priv->browse_shortcuts_tree_view, (GdkEvent *) event);
in_press = FALSE;
if (!handled)
@@ -3483,15 +3311,15 @@ shortcuts_edited (GtkCellRenderer *cell,
g_object_set (cell, "editable", FALSE, NULL);
path = gtk_tree_path_new_from_string (path_string);
- if (!gtk_tree_model_get_iter (GTK_TREE_MODEL (impl->shortcuts_model), &iter, path))
+ if (!gtk_tree_model_get_iter (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter, path))
g_assert_not_reached ();
- gtk_tree_model_get (GTK_TREE_MODEL (impl->shortcuts_model), &iter,
+ gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter,
SHORTCUTS_COL_DATA, &shortcut,
-1);
gtk_tree_path_free (path);
- _gtk_file_system_set_bookmark_label (impl->file_system, shortcut, new_text);
+ _gtk_file_system_set_bookmark_label (impl->priv->file_system, shortcut, new_text);
}
static void
@@ -3501,261 +3329,53 @@ shortcuts_editing_canceled (GtkCellRenderer *cell,
g_object_set (cell, "editable", FALSE, NULL);
}
-/* Creates the widgets for the shortcuts and bookmarks tree */
-static GtkWidget *
-shortcuts_list_create (GtkFileChooserDefault *impl)
+static gboolean
+key_is_left_or_right (GdkEventKey *event)
{
- GtkWidget *swin;
- GtkTreeSelection *selection;
- GtkTreeViewColumn *column;
- GtkCellRenderer *renderer;
+ guint modifiers;
- /* Target types for dragging a row to/from the shortcuts list */
- const GtkTargetEntry tree_model_row_targets[] = {
- { "GTK_TREE_MODEL_ROW", GTK_TARGET_SAME_WIDGET, GTK_TREE_MODEL_ROW }
- };
+ modifiers = gtk_accelerator_get_default_mod_mask ();
- /* Scrolled window */
+ return ((event->keyval == GDK_KEY_Right
+ || event->keyval == GDK_KEY_KP_Right
+ || event->keyval == GDK_KEY_Left
+ || event->keyval == GDK_KEY_KP_Left)
+ && (event->state & modifiers) == 0);
+}
- swin = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swin),
- GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (swin),
- GTK_SHADOW_IN);
- gtk_widget_show (swin);
+/* Handles key press events on the file list, so that we can trap Enter to
+ * activate the default button on our own. Also, checks to see if '/' has been
+ * pressed.
+ */
+static gboolean
+browse_files_key_press_event_cb (GtkWidget *widget,
+ GdkEventKey *event,
+ gpointer data)
+{
+ GtkFileChooserDefault *impl;
+ GdkModifierType no_text_input_mask;
- /* Tree */
- impl->browse_shortcuts_tree_view = gtk_tree_view_new ();
- gtk_style_context_add_class (gtk_widget_get_style_context (impl->browse_shortcuts_tree_view),
- GTK_STYLE_CLASS_SIDEBAR);
- gtk_tree_view_set_enable_search (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view), FALSE);
-#ifdef PROFILE_FILE_CHOOSER
- g_object_set_data (G_OBJECT (impl->browse_shortcuts_tree_view), "fmq-name", "shortcuts");
-#endif
+ impl = (GtkFileChooserDefault *) data;
- /* Connect "after" to key-press-event on the shortcuts pane. We want this action to be possible:
- *
- * 1. user brings up a SAVE dialog
- * 2. user clicks on a shortcut in the shortcuts pane
- * 3. user starts typing a filename
- *
- * Normally, the user's typing would be ignored, as the shortcuts treeview doesn't
- * support interactive search. However, we'd rather focus the location entry
- * so that the user can type *there*.
- *
- * To preserve keyboard navigation in the shortcuts pane, we don't focus the
- * filename entry if one clicks on a shortcut; rather, we focus the entry only
- * if the user starts typing while the focus is in the shortcuts pane.
- */
- g_signal_connect_after (impl->browse_shortcuts_tree_view, "key-press-event",
- G_CALLBACK (shortcuts_key_press_event_after_cb), impl);
+ no_text_input_mask =
+ gtk_widget_get_modifier_mask (widget, GDK_MODIFIER_INTENT_NO_TEXT_INPUT);
- g_signal_connect (impl->browse_shortcuts_tree_view, "popup-menu",
- G_CALLBACK (shortcuts_popup_menu_cb), impl);
- g_signal_connect (impl->browse_shortcuts_tree_view, "button-press-event",
- G_CALLBACK (shortcuts_button_press_event_cb), impl);
- /* Accessible object name for the file chooser's shortcuts pane */
- atk_object_set_name (gtk_widget_get_accessible (impl->browse_shortcuts_tree_view), _("Places"));
+ if ((event->keyval == GDK_KEY_slash
+ || event->keyval == GDK_KEY_KP_Divide
+#ifdef G_OS_UNIX
+ || event->keyval == GDK_KEY_asciitilde
+#endif
+ ) && !(event->state & no_text_input_mask))
+ {
+ location_popup_handler (impl, event->string);
+ return TRUE;
+ }
- gtk_tree_view_set_model (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view),
impl->shortcuts_pane_filter_model);
-
- gtk_tree_view_enable_model_drag_source (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view),
- GDK_BUTTON1_MASK,
- tree_model_row_targets,
- G_N_ELEMENTS (tree_model_row_targets),
- GDK_ACTION_MOVE);
-
- gtk_drag_dest_set (impl->browse_shortcuts_tree_view,
- GTK_DEST_DEFAULT_ALL,
- tree_model_row_targets,
- G_N_ELEMENTS (tree_model_row_targets),
- GDK_ACTION_COPY | GDK_ACTION_MOVE);
- gtk_drag_dest_add_uri_targets (impl->browse_shortcuts_tree_view);
-
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view));
- gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
- gtk_tree_selection_set_select_function (selection,
- shortcuts_select_func,
- impl, NULL);
-
- g_signal_connect (selection, "changed",
- G_CALLBACK (shortcuts_selection_changed_cb), impl);
-
- g_signal_connect (impl->browse_shortcuts_tree_view, "key-press-event",
- G_CALLBACK (shortcuts_key_press_event_cb), impl);
-
- g_signal_connect (impl->browse_shortcuts_tree_view, "drag-begin",
- G_CALLBACK (shortcuts_drag_begin_cb), impl);
- g_signal_connect (impl->browse_shortcuts_tree_view, "drag-end",
- G_CALLBACK (shortcuts_drag_end_cb), impl);
- g_signal_connect (impl->browse_shortcuts_tree_view, "drag-data-delete",
- G_CALLBACK (shortcuts_drag_data_delete_cb), impl);
-
- g_signal_connect (impl->browse_shortcuts_tree_view, "drag-leave",
- G_CALLBACK (shortcuts_drag_leave_cb), impl);
- g_signal_connect (impl->browse_shortcuts_tree_view, "drag-motion",
- G_CALLBACK (shortcuts_drag_motion_cb), impl);
- g_signal_connect (impl->browse_shortcuts_tree_view, "drag-drop",
- G_CALLBACK (shortcuts_drag_drop_cb), impl);
- g_signal_connect (impl->browse_shortcuts_tree_view, "drag-data-received",
- G_CALLBACK (shortcuts_drag_data_received_cb), impl);
-
- /* Support tooltips */
- gtk_widget_set_has_tooltip (impl->browse_shortcuts_tree_view, TRUE);
- g_signal_connect (impl->browse_shortcuts_tree_view, "query-tooltip",
- G_CALLBACK (shortcuts_query_tooltip_cb), impl);
-
- gtk_container_add (GTK_CONTAINER (swin), impl->browse_shortcuts_tree_view);
- gtk_widget_show (impl->browse_shortcuts_tree_view);
-
- /* Column */
-
- column = gtk_tree_view_column_new ();
- /* Column header for the file chooser's shortcuts pane */
- gtk_tree_view_column_set_title (column, _("_Places"));
-
- renderer = gtk_cell_renderer_pixbuf_new ();
- gtk_tree_view_column_pack_start (column, renderer, FALSE);
- gtk_tree_view_column_set_attributes (column, renderer,
- "pixbuf", SHORTCUTS_COL_PIXBUF,
- "visible", SHORTCUTS_COL_PIXBUF_VISIBLE,
- NULL);
-
- renderer = gtk_cell_renderer_text_new ();
- g_object_set (renderer,
- "width-chars", 12,
- "ellipsize", PANGO_ELLIPSIZE_END,
- NULL);
- g_signal_connect (renderer, "edited",
- G_CALLBACK (shortcuts_edited), impl);
- g_signal_connect (renderer, "editing-canceled",
- G_CALLBACK (shortcuts_editing_canceled), impl);
- gtk_tree_view_column_pack_start (column, renderer, TRUE);
- gtk_tree_view_column_set_attributes (column, renderer,
- "text", SHORTCUTS_COL_NAME,
- NULL);
-
- gtk_tree_view_set_row_separator_func (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view),
- shortcuts_row_separator_func,
- NULL, NULL);
-
- gtk_tree_view_append_column (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view), column);
-
- return swin;
-}
-
-/* Creates the widgets for the shortcuts/bookmarks pane */
-static GtkWidget *
-shortcuts_pane_create (GtkFileChooserDefault *impl,
- GtkSizeGroup *size_group)
-{
- GtkWidget *vbox;
- GtkWidget *toolbar;
- GtkWidget *widget;
- GtkStyleContext *context;
- GIcon *icon;
-
- vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
- gtk_widget_show (vbox);
-
- /* Shortcuts tree */
-
- widget = shortcuts_list_create (impl);
-
- gtk_size_group_add_widget (size_group, widget);
- context = gtk_widget_get_style_context (widget);
- gtk_style_context_set_junction_sides (context, GTK_JUNCTION_BOTTOM);
-
- gtk_box_pack_start (GTK_BOX (vbox), widget, TRUE, TRUE, 0);
-
- /* Box for buttons */
-
- toolbar = gtk_toolbar_new ();
- gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_ICONS);
- gtk_toolbar_set_icon_size (GTK_TOOLBAR (toolbar), GTK_ICON_SIZE_MENU);
-
- context = gtk_widget_get_style_context (toolbar);
- gtk_style_context_set_junction_sides (context, GTK_JUNCTION_TOP);
- gtk_style_context_add_class (context, GTK_STYLE_CLASS_INLINE_TOOLBAR);
-
- gtk_box_pack_start (GTK_BOX (vbox), toolbar, FALSE, FALSE, 0);
- gtk_widget_show (toolbar);
-
- /* Add bookmark button */
- icon = g_themed_icon_new_with_default_fallbacks ("list-add-symbolic");
- impl->browse_shortcuts_add_button = toolbutton_new (impl,
- icon,
- FALSE,
- TRUE,
- G_CALLBACK (add_bookmark_button_clicked_cb));
- g_object_unref (icon);
-
- gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (impl->browse_shortcuts_add_button), 0);
- gtk_widget_set_tooltip_text (impl->browse_shortcuts_add_button,
- _("Add the selected folder to the Bookmarks"));
-
- /* Remove bookmark button */
- icon = g_themed_icon_new_with_default_fallbacks ("list-remove-symbolic");
- impl->browse_shortcuts_remove_button = toolbutton_new (impl,
- icon,
- FALSE,
- TRUE,
- G_CALLBACK (remove_bookmark_button_clicked_cb));
- g_object_unref (icon);
- gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (impl->browse_shortcuts_remove_button), 1);
- gtk_widget_set_tooltip_text (impl->browse_shortcuts_remove_button,
- _("Remove the selected bookmark"));
-
- return vbox;
-}
-
-static gboolean
-key_is_left_or_right (GdkEventKey *event)
-{
- guint modifiers;
-
- modifiers = gtk_accelerator_get_default_mod_mask ();
-
- return ((event->keyval == GDK_KEY_Right
- || event->keyval == GDK_KEY_KP_Right
- || event->keyval == GDK_KEY_Left
- || event->keyval == GDK_KEY_KP_Left)
- && (event->state & modifiers) == 0);
-}
-
-/* Handles key press events on the file list, so that we can trap Enter to
- * activate the default button on our own. Also, checks to see if '/' has been
- * pressed.
- */
-static gboolean
-browse_files_key_press_event_cb (GtkWidget *widget,
- GdkEventKey *event,
- gpointer data)
-{
- GtkFileChooserDefault *impl;
- GdkModifierType no_text_input_mask;
-
- impl = (GtkFileChooserDefault *) data;
-
- no_text_input_mask =
- gtk_widget_get_modifier_mask (widget, GDK_MODIFIER_INTENT_NO_TEXT_INPUT);
-
- if ((event->keyval == GDK_KEY_slash
- || event->keyval == GDK_KEY_KP_Divide
-#ifdef G_OS_UNIX
- || event->keyval == GDK_KEY_asciitilde
-#endif
- ) && !(event->state & no_text_input_mask))
- {
- location_popup_handler (impl, event->string);
- return TRUE;
- }
-
- if (key_is_left_or_right (event))
- {
- gtk_widget_grab_focus (impl->browse_shortcuts_tree_view);
- return TRUE;
- }
+ if (key_is_left_or_right (event))
+ {
+ gtk_widget_grab_focus (impl->priv->browse_shortcuts_tree_view);
+ return TRUE;
+ }
if ((event->keyval == GDK_KEY_Return
|| event->keyval == GDK_KEY_ISO_Enter
@@ -3763,8 +3383,8 @@ browse_files_key_press_event_cb (GtkWidget *widget,
|| event->keyval == GDK_KEY_space
|| event->keyval == GDK_KEY_KP_Space)
&& !(event->state & gtk_accelerator_get_default_mod_mask ())
- && !(impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER ||
- impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER))
+ && !(impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER ||
+ impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER))
{
GtkWindow *window;
@@ -3799,10 +3419,10 @@ popup_menu_detach_cb (GtkWidget *attach_widget,
impl = g_object_get_data (G_OBJECT (attach_widget), "GtkFileChooserDefault");
g_assert (GTK_IS_FILE_CHOOSER_DEFAULT (impl));
- impl->browse_files_popup_menu = NULL;
- impl->browse_files_popup_menu_add_shortcut_item = NULL;
- impl->browse_files_popup_menu_hidden_files_item = NULL;
- impl->browse_files_popup_menu_copy_file_location_item = NULL;
+ impl->priv->browse_files_popup_menu = NULL;
+ impl->priv->browse_files_popup_menu_add_shortcut_item = NULL;
+ impl->priv->browse_files_popup_menu_hidden_files_item = NULL;
+ impl->priv->browse_files_popup_menu_copy_file_location_item = NULL;
}
/* Callback used when the "Add to Bookmarks" menu item is activated */
@@ -3940,10 +3560,10 @@ static void
show_size_column_toggled_cb (GtkCheckMenuItem *item,
GtkFileChooserDefault *impl)
{
- impl->show_size_column = gtk_check_menu_item_get_active (item);
+ impl->priv->show_size_column = gtk_check_menu_item_get_active (item);
- gtk_tree_view_column_set_visible (impl->list_size_column,
- impl->show_size_column);
+ gtk_tree_view_column_set_visible (impl->priv->list_size_column,
+ impl->priv->show_size_column);
}
/* Shows an error dialog about not being able to select a dragged file */
@@ -3998,16 +3618,16 @@ file_list_drag_data_received_get_info_cb (GCancellable *cancellable,
struct FileListDragData *data = user_data;
GtkFileChooser *chooser = GTK_FILE_CHOOSER (data->impl);
- if (cancellable != data->impl->file_list_drag_data_received_cancellable)
+ if (cancellable != data->impl->priv->file_list_drag_data_received_cancellable)
goto out;
- data->impl->file_list_drag_data_received_cancellable = NULL;
+ data->impl->priv->file_list_drag_data_received_cancellable = NULL;
if (cancelled || error)
goto out;
- if ((data->impl->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
- data->impl->action == GTK_FILE_CHOOSER_ACTION_SAVE) &&
+ if ((data->impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
+ data->impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE) &&
data->uris[1] == 0 && !error && _gtk_file_info_consider_as_directory (info))
change_folder_and_display_error (data->impl, data->file, FALSE);
else
@@ -4022,7 +3642,7 @@ file_list_drag_data_received_get_info_cb (GCancellable *cancellable,
browse_files_center_selected_row (data->impl);
}
- if (data->impl->select_multiple)
+ if (data->impl->priv->select_multiple)
file_list_drag_data_select_uris (data->impl, data->uris);
out:
@@ -4072,11 +3692,11 @@ file_list_drag_data_received_cb (GtkWidget *widget,
data->uris = uris;
data->file = file;
- if (impl->file_list_drag_data_received_cancellable)
- g_cancellable_cancel (impl->file_list_drag_data_received_cancellable);
+ if (impl->priv->file_list_drag_data_received_cancellable)
+ g_cancellable_cancel (impl->priv->file_list_drag_data_received_cancellable);
- impl->file_list_drag_data_received_cancellable =
- _gtk_file_system_get_info (impl->file_system, file,
+ impl->priv->file_list_drag_data_received_cancellable =
+ _gtk_file_system_get_info (impl->priv->file_system, file,
"standard::type",
file_list_drag_data_received_get_info_cb,
data);
@@ -4121,14 +3741,14 @@ check_copy_file_location_sensitivity (GtkFileChooserDefault *impl)
GtkTreeSelection *selection;
gboolean active;
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
if (gtk_tree_selection_count_selected_rows (selection) == 0)
active = FALSE;
else
active = TRUE;
- if (impl->browse_files_popup_menu_copy_file_location_item)
- gtk_widget_set_sensitive (impl->browse_files_popup_menu_copy_file_location_item, active);
+ if (impl->priv->browse_files_popup_menu_copy_file_location_item)
+ gtk_widget_set_sensitive (impl->priv->browse_files_popup_menu_copy_file_location_item, active);
}
static GtkWidget *
@@ -4144,7 +3764,7 @@ file_list_add_image_menu_item (GtkFileChooserDefault *impl,
gtk_image_new_from_stock (stock_name, GTK_ICON_SIZE_MENU));
g_signal_connect (item, "activate", callback, impl);
gtk_widget_show (item);
- gtk_menu_shell_append (GTK_MENU_SHELL (impl->browse_files_popup_menu), item);
+ gtk_menu_shell_append (GTK_MENU_SHELL (impl->priv->browse_files_popup_menu), item);
return item;
}
@@ -4159,7 +3779,7 @@ file_list_add_check_menu_item (GtkFileChooserDefault *impl,
item = gtk_check_menu_item_new_with_mnemonic (mnemonic_label);
g_signal_connect (item, "toggled", callback, impl);
gtk_widget_show (item);
- gtk_menu_shell_append (GTK_MENU_SHELL (impl->browse_files_popup_menu), item);
+ gtk_menu_shell_append (GTK_MENU_SHELL (impl->priv->browse_files_popup_menu), item);
return item;
}
@@ -4170,31 +3790,31 @@ file_list_build_popup_menu (GtkFileChooserDefault *impl)
{
GtkWidget *item;
- if (impl->browse_files_popup_menu)
+ if (impl->priv->browse_files_popup_menu)
return;
- impl->browse_files_popup_menu = gtk_menu_new ();
- gtk_menu_attach_to_widget (GTK_MENU (impl->browse_files_popup_menu),
- impl->browse_files_tree_view,
+ impl->priv->browse_files_popup_menu = gtk_menu_new ();
+ gtk_menu_attach_to_widget (GTK_MENU (impl->priv->browse_files_popup_menu),
+ impl->priv->browse_files_tree_view,
popup_menu_detach_cb);
- impl->browse_files_popup_menu_visit_file_item = file_list_add_image_menu_item (impl,
GTK_STOCK_DIRECTORY, _("_Visit this file"),
+ impl->priv->browse_files_popup_menu_visit_file_item = file_list_add_image_menu_item (impl,
GTK_STOCK_DIRECTORY, _("_Visit this file"),
G_CALLBACK
(visit_file_cb));
- impl->browse_files_popup_menu_copy_file_location_item = file_list_add_image_menu_item (impl,
GTK_STOCK_COPY, _("_Copy file’s location"),
+ impl->priv->browse_files_popup_menu_copy_file_location_item = file_list_add_image_menu_item (impl,
GTK_STOCK_COPY, _("_Copy file’s location"),
G_CALLBACK
(copy_file_location_cb));
- impl->browse_files_popup_menu_add_shortcut_item = file_list_add_image_menu_item (impl, GTK_STOCK_ADD,
_("_Add to Bookmarks"),
+ impl->priv->browse_files_popup_menu_add_shortcut_item = file_list_add_image_menu_item (impl,
GTK_STOCK_ADD, _("_Add to Bookmarks"),
G_CALLBACK
(add_to_shortcuts_cb));
item = gtk_separator_menu_item_new ();
gtk_widget_show (item);
- gtk_menu_shell_append (GTK_MENU_SHELL (impl->browse_files_popup_menu), item);
+ gtk_menu_shell_append (GTK_MENU_SHELL (impl->priv->browse_files_popup_menu), item);
- impl->browse_files_popup_menu_hidden_files_item = file_list_add_check_menu_item (impl, _("Show
_Hidden Files"),
+ impl->priv->browse_files_popup_menu_hidden_files_item = file_list_add_check_menu_item (impl,
_("Show _Hidden Files"),
G_CALLBACK
(show_hidden_toggled_cb));
- impl->browse_files_popup_menu_size_column_item = file_list_add_check_menu_item (impl, _("Show _Size
Column"),
+ impl->priv->browse_files_popup_menu_size_column_item = file_list_add_check_menu_item (impl, _("Show _Size
Column"),
G_CALLBACK
(show_size_column_toggled_cb));
bookmarks_check_add_sensitivity (impl);
@@ -4212,22 +3832,22 @@ file_list_update_popup_menu (GtkFileChooserDefault *impl)
*/
/* 'Visit this file' */
- gtk_widget_set_visible (impl->browse_files_popup_menu_visit_file_item, (impl->operation_mode !=
OPERATION_MODE_BROWSE));
+ gtk_widget_set_visible (impl->priv->browse_files_popup_menu_visit_file_item, (impl->priv->operation_mode
!= OPERATION_MODE_BROWSE));
/* 'Show Hidden Files' */
- g_signal_handlers_block_by_func (impl->browse_files_popup_menu_hidden_files_item,
+ g_signal_handlers_block_by_func (impl->priv->browse_files_popup_menu_hidden_files_item,
G_CALLBACK (show_hidden_toggled_cb), impl);
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (impl->browse_files_popup_menu_hidden_files_item),
- impl->show_hidden);
- g_signal_handlers_unblock_by_func (impl->browse_files_popup_menu_hidden_files_item,
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM
(impl->priv->browse_files_popup_menu_hidden_files_item),
+ impl->priv->show_hidden);
+ g_signal_handlers_unblock_by_func (impl->priv->browse_files_popup_menu_hidden_files_item,
G_CALLBACK (show_hidden_toggled_cb), impl);
/* 'Show Size Column' */
- g_signal_handlers_block_by_func (impl->browse_files_popup_menu_size_column_item,
+ g_signal_handlers_block_by_func (impl->priv->browse_files_popup_menu_size_column_item,
G_CALLBACK (show_size_column_toggled_cb), impl);
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (impl->browse_files_popup_menu_size_column_item),
- impl->show_size_column);
- g_signal_handlers_unblock_by_func (impl->browse_files_popup_menu_size_column_item,
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (impl->priv->browse_files_popup_menu_size_column_item),
+ impl->priv->show_size_column);
+ g_signal_handlers_unblock_by_func (impl->priv->browse_files_popup_menu_size_column_item,
G_CALLBACK (show_size_column_toggled_cb), impl);
}
@@ -4272,16 +3892,16 @@ file_list_popup_menu (GtkFileChooserDefault *impl,
{
file_list_update_popup_menu (impl);
if (event)
- gtk_menu_popup (GTK_MENU (impl->browse_files_popup_menu),
+ gtk_menu_popup (GTK_MENU (impl->priv->browse_files_popup_menu),
NULL, NULL, NULL, NULL,
event->button, event->time);
else
{
- gtk_menu_popup (GTK_MENU (impl->browse_files_popup_menu),
+ gtk_menu_popup (GTK_MENU (impl->priv->browse_files_popup_menu),
NULL, NULL,
- popup_position_func, impl->browse_files_tree_view,
+ popup_position_func, impl->priv->browse_files_tree_view,
0, GDK_CURRENT_TIME);
- gtk_menu_shell_select_first (GTK_MENU_SHELL (impl->browse_files_popup_menu),
+ gtk_menu_shell_select_first (GTK_MENU_SHELL (impl->priv->browse_files_popup_menu),
FALSE);
}
@@ -4313,7 +3933,7 @@ list_button_press_event_cb (GtkWidget *widget,
return FALSE;
in_press = TRUE;
- gtk_widget_event (impl->browse_files_tree_view, (GdkEvent *) event);
+ gtk_widget_event (impl->priv->browse_files_tree_view, (GdkEvent *) event);
in_press = FALSE;
file_list_popup_menu (impl, event);
@@ -4332,9 +3952,9 @@ typedef struct {
static void
file_list_set_sort_column_ids (GtkFileChooserDefault *impl)
{
- gtk_tree_view_column_set_sort_column_id (impl->list_name_column, MODEL_COL_NAME);
- gtk_tree_view_column_set_sort_column_id (impl->list_mtime_column, MODEL_COL_MTIME);
- gtk_tree_view_column_set_sort_column_id (impl->list_size_column, MODEL_COL_SIZE);
+ gtk_tree_view_column_set_sort_column_id (impl->priv->list_name_column, MODEL_COL_NAME);
+ gtk_tree_view_column_set_sort_column_id (impl->priv->list_mtime_column, MODEL_COL_MTIME);
+ gtk_tree_view_column_set_sort_column_id (impl->priv->list_size_column, MODEL_COL_SIZE);
}
static gboolean
@@ -4352,11 +3972,11 @@ file_list_query_tooltip_cb (GtkWidget *widget,
GFile *file;
gchar *filename;
- if (impl->operation_mode == OPERATION_MODE_BROWSE)
+ if (impl->priv->operation_mode == OPERATION_MODE_BROWSE)
return FALSE;
- if (!gtk_tree_view_get_tooltip_context (GTK_TREE_VIEW (impl->browse_files_tree_view),
+ if (!gtk_tree_view_get_tooltip_context (GTK_TREE_VIEW (impl->priv->browse_files_tree_view),
&x, &y,
keyboard_tip,
&model, &path, &iter))
@@ -4374,7 +3994,7 @@ file_list_query_tooltip_cb (GtkWidget *widget,
filename = g_file_get_path (file);
gtk_tooltip_set_text (tooltip, filename);
- gtk_tree_view_set_tooltip_row (GTK_TREE_VIEW (impl->browse_files_tree_view),
+ gtk_tree_view_set_tooltip_row (GTK_TREE_VIEW (impl->priv->browse_files_tree_view),
tooltip,
path);
@@ -4386,196 +4006,26 @@ file_list_query_tooltip_cb (GtkWidget *widget,
}
static void
-set_icon_cell_renderer_fixed_size (GtkFileChooserDefault *impl, GtkCellRenderer *renderer)
+set_icon_cell_renderer_fixed_size (GtkFileChooserDefault *impl)
{
gint xpad, ypad;
- gtk_cell_renderer_get_padding (renderer, &xpad, &ypad);
- gtk_cell_renderer_set_fixed_size (renderer,
- xpad * 2 + impl->icon_size,
- ypad * 2 + impl->icon_size);
-}
-
-/* Creates the widgets for the file list */
-static GtkWidget *
-create_file_list (GtkFileChooserDefault *impl)
-{
- GtkWidget *swin;
- GtkTreeSelection *selection;
- GtkTreeViewColumn *column;
- GtkCellRenderer *renderer;
-
- /* Scrolled window */
- swin = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swin),
- GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (swin),
- GTK_SHADOW_IN);
-
- /* Tree/list view */
-
- impl->browse_files_tree_view = gtk_tree_view_new ();
-#ifdef PROFILE_FILE_CHOOSER
- g_object_set_data (G_OBJECT (impl->browse_files_tree_view), "fmq-name", "file_list");
-#endif
- g_object_set_data (G_OBJECT (impl->browse_files_tree_view), I_("GtkFileChooserDefault"), impl);
- atk_object_set_name (gtk_widget_get_accessible (impl->browse_files_tree_view), _("Files"));
-
- gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (impl->browse_files_tree_view), TRUE);
- gtk_container_add (GTK_CONTAINER (swin), impl->browse_files_tree_view);
-
- gtk_drag_dest_set (impl->browse_files_tree_view,
- GTK_DEST_DEFAULT_ALL,
- NULL, 0,
- GDK_ACTION_COPY | GDK_ACTION_MOVE);
- gtk_drag_dest_add_uri_targets (impl->browse_files_tree_view);
-
- g_signal_connect (impl->browse_files_tree_view, "row-activated",
- G_CALLBACK (list_row_activated), impl);
- g_signal_connect (impl->browse_files_tree_view, "key-press-event",
- G_CALLBACK (browse_files_key_press_event_cb), impl);
- g_signal_connect (impl->browse_files_tree_view, "popup-menu",
- G_CALLBACK (list_popup_menu_cb), impl);
- g_signal_connect (impl->browse_files_tree_view, "button-press-event",
- G_CALLBACK (list_button_press_event_cb), impl);
-
- g_signal_connect (impl->browse_files_tree_view, "drag-data-received",
- G_CALLBACK (file_list_drag_data_received_cb), impl);
- g_signal_connect (impl->browse_files_tree_view, "drag-drop",
- G_CALLBACK (file_list_drag_drop_cb), impl);
- g_signal_connect (impl->browse_files_tree_view, "drag-motion",
- G_CALLBACK (file_list_drag_motion_cb), impl);
-
- g_object_set (impl->browse_files_tree_view, "has-tooltip", TRUE, NULL);
- g_signal_connect (impl->browse_files_tree_view, "query-tooltip",
- G_CALLBACK (file_list_query_tooltip_cb), impl);
-
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
- gtk_tree_selection_set_select_function (selection,
- list_select_func,
- impl, NULL);
- gtk_tree_view_enable_model_drag_source (GTK_TREE_VIEW (impl->browse_files_tree_view),
- GDK_BUTTON1_MASK,
- NULL, 0,
- GDK_ACTION_COPY | GDK_ACTION_MOVE);
- gtk_drag_source_add_uri_targets (impl->browse_files_tree_view);
-
- g_signal_connect (selection, "changed",
- G_CALLBACK (list_selection_changed), impl);
-
- /* Keep the column order in sync with update_cell_renderer_attributes() */
-
- /* Filename column */
-
- impl->list_name_column = gtk_tree_view_column_new ();
- gtk_tree_view_column_set_expand (impl->list_name_column, TRUE);
- gtk_tree_view_column_set_resizable (impl->list_name_column, TRUE);
- gtk_tree_view_column_set_title (impl->list_name_column, _("Name"));
-
- renderer = gtk_cell_renderer_pixbuf_new ();
- /* We set a fixed size so that we get an empty slot even if no icons are loaded yet */
- set_icon_cell_renderer_fixed_size (impl, renderer);
- gtk_tree_view_column_pack_start (impl->list_name_column, renderer, FALSE);
-
- impl->list_name_renderer = gtk_cell_renderer_text_new ();
- g_object_set (impl->list_name_renderer,
- "ellipsize", PANGO_ELLIPSIZE_END,
- NULL);
- g_signal_connect (impl->list_name_renderer, "edited",
- G_CALLBACK (renderer_edited_cb), impl);
- g_signal_connect (impl->list_name_renderer, "editing-canceled",
- G_CALLBACK (renderer_editing_canceled_cb), impl);
- gtk_tree_view_column_pack_start (impl->list_name_column, impl->list_name_renderer, TRUE);
-
- gtk_tree_view_append_column (GTK_TREE_VIEW (impl->browse_files_tree_view), impl->list_name_column);
-
- /* Size column */
-
- column = gtk_tree_view_column_new ();
- gtk_tree_view_column_set_resizable (column, TRUE);
- gtk_tree_view_column_set_title (column, _("Size"));
-
- renderer = gtk_cell_renderer_text_new ();
- g_object_set (renderer,
- "alignment", PANGO_ALIGN_RIGHT,
- NULL);
- gtk_tree_view_column_pack_start (column, renderer, TRUE); /* bug: it doesn't expand */
- gtk_tree_view_append_column (GTK_TREE_VIEW (impl->browse_files_tree_view), column);
- impl->list_size_column = column;
-
- /* Modification time column */
-
- column = gtk_tree_view_column_new ();
- gtk_tree_view_column_set_resizable (column, TRUE);
- gtk_tree_view_column_set_title (column, _("Modified"));
-
- renderer = gtk_cell_renderer_text_new ();
- gtk_tree_view_column_pack_start (column, renderer, TRUE);
- gtk_tree_view_append_column (GTK_TREE_VIEW (impl->browse_files_tree_view), column);
- impl->list_mtime_column = column;
-
- file_list_set_sort_column_ids (impl);
- update_cell_renderer_attributes (impl);
-
- gtk_widget_show_all (swin);
-
- return swin;
-}
-
-/* Creates the widgets for the files/folders pane */
-static GtkWidget *
-file_pane_create (GtkFileChooserDefault *impl,
- GtkSizeGroup *size_group)
-{
- GtkWidget *vbox;
- GtkWidget *hbox;
- GtkWidget *widget;
-
- vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
- gtk_widget_show (vbox);
-
- /* Box for lists and preview */
-
- hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, PREVIEW_HBOX_SPACING);
- gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
- gtk_widget_show (hbox);
-
- /* File list */
-
- widget = create_file_list (impl);
- gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0);
- gtk_size_group_add_widget (size_group, widget);
-
- /* Preview */
-
- impl->preview_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
- gtk_box_pack_start (GTK_BOX (hbox), impl->preview_box, FALSE, FALSE, 0);
- /* Don't show preview box initially */
-
- /* Filter combo */
-
- impl->filter_combo_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
-
- widget = filter_create (impl);
-
- gtk_widget_show (widget);
- gtk_box_pack_end (GTK_BOX (impl->filter_combo_hbox), widget, FALSE, FALSE, 0);
-
- gtk_box_pack_end (GTK_BOX (vbox), impl->filter_combo_hbox, FALSE, FALSE, 0);
-
- return vbox;
+ gtk_cell_renderer_get_padding (impl->priv->list_pixbuf_renderer, &xpad, &ypad);
+ gtk_cell_renderer_set_fixed_size (impl->priv->list_pixbuf_renderer,
+ xpad * 2 + impl->priv->icon_size,
+ ypad * 2 + impl->priv->icon_size);
}
static void
location_entry_create (GtkFileChooserDefault *impl)
{
- if (!impl->location_entry)
- impl->location_entry = _gtk_file_chooser_entry_new (TRUE);
+ if (!impl->priv->location_entry)
+ impl->priv->location_entry = _gtk_file_chooser_entry_new (TRUE);
- _gtk_file_chooser_entry_set_local_only (GTK_FILE_CHOOSER_ENTRY (impl->location_entry), impl->local_only);
- _gtk_file_chooser_entry_set_action (GTK_FILE_CHOOSER_ENTRY (impl->location_entry), impl->action);
- gtk_entry_set_width_chars (GTK_ENTRY (impl->location_entry), 45);
- gtk_entry_set_activates_default (GTK_ENTRY (impl->location_entry), TRUE);
+ _gtk_file_chooser_entry_set_local_only (GTK_FILE_CHOOSER_ENTRY (impl->priv->location_entry),
impl->priv->local_only);
+ _gtk_file_chooser_entry_set_action (GTK_FILE_CHOOSER_ENTRY (impl->priv->location_entry),
impl->priv->action);
+ gtk_entry_set_width_chars (GTK_ENTRY (impl->priv->location_entry), 45);
+ gtk_entry_set_activates_default (GTK_ENTRY (impl->priv->location_entry), TRUE);
}
/* Creates the widgets specific to Save mode */
@@ -4585,60 +4035,60 @@ save_widgets_create (GtkFileChooserDefault *impl)
GtkWidget *vbox;
GtkWidget *widget;
- if (impl->save_widgets != NULL)
+ if (impl->priv->save_widgets != NULL)
return;
location_switch_to_path_bar (impl);
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
- impl->save_widgets_table = gtk_grid_new ();
- gtk_box_pack_start (GTK_BOX (vbox), impl->save_widgets_table, FALSE, FALSE, 0);
- gtk_widget_show (impl->save_widgets_table);
- gtk_grid_set_row_spacing (GTK_GRID (impl->save_widgets_table), 12);
- gtk_grid_set_column_spacing (GTK_GRID (impl->save_widgets_table), 12);
+ impl->priv->save_widgets_table = gtk_grid_new ();
+ gtk_box_pack_start (GTK_BOX (vbox), impl->priv->save_widgets_table, FALSE, FALSE, 0);
+ gtk_widget_show (impl->priv->save_widgets_table);
+ gtk_grid_set_row_spacing (GTK_GRID (impl->priv->save_widgets_table), 12);
+ gtk_grid_set_column_spacing (GTK_GRID (impl->priv->save_widgets_table), 12);
/* Label */
widget = gtk_label_new_with_mnemonic (_("_Name:"));
gtk_widget_set_halign (widget, GTK_ALIGN_START);
gtk_widget_set_valign (widget, GTK_ALIGN_CENTER);
- gtk_grid_attach (GTK_GRID (impl->save_widgets_table), widget, 0, 0, 1, 1);
+ gtk_grid_attach (GTK_GRID (impl->priv->save_widgets_table), widget, 0, 0, 1, 1);
gtk_widget_show (widget);
/* Location entry */
location_entry_create (impl);
- gtk_widget_set_hexpand (impl->location_entry, TRUE);
- gtk_grid_attach (GTK_GRID (impl->save_widgets_table), impl->location_entry, 1, 0, 1, 1);
- gtk_widget_show (impl->location_entry);
- gtk_label_set_mnemonic_widget (GTK_LABEL (widget), impl->location_entry);
+ gtk_widget_set_hexpand (impl->priv->location_entry, TRUE);
+ gtk_grid_attach (GTK_GRID (impl->priv->save_widgets_table), impl->priv->location_entry, 1, 0, 1, 1);
+ gtk_widget_show (impl->priv->location_entry);
+ gtk_label_set_mnemonic_widget (GTK_LABEL (widget), impl->priv->location_entry);
/* Folder combo */
- impl->save_folder_label = gtk_label_new (NULL);
- gtk_widget_set_halign (impl->save_folder_label, GTK_ALIGN_START);
- gtk_widget_set_valign (impl->save_folder_label, GTK_ALIGN_CENTER);
- gtk_grid_attach (GTK_GRID (impl->save_widgets_table), impl->save_folder_label, 0, 1, 1, 1);
- gtk_widget_show (impl->save_folder_label);
+ impl->priv->save_folder_label = gtk_label_new (NULL);
+ gtk_widget_set_halign (impl->priv->save_folder_label, GTK_ALIGN_START);
+ gtk_widget_set_valign (impl->priv->save_folder_label, GTK_ALIGN_CENTER);
+ gtk_grid_attach (GTK_GRID (impl->priv->save_widgets_table), impl->priv->save_folder_label, 0, 1, 1, 1);
+ gtk_widget_show (impl->priv->save_folder_label);
- impl->save_widgets = vbox;
- gtk_box_pack_start (GTK_BOX (impl), impl->save_widgets, FALSE, FALSE, 0);
- gtk_box_reorder_child (GTK_BOX (impl), impl->save_widgets, 0);
- gtk_widget_show (impl->save_widgets);
+ impl->priv->save_widgets = vbox;
+ gtk_box_pack_start (GTK_BOX (impl), impl->priv->save_widgets, FALSE, FALSE, 0);
+ gtk_box_reorder_child (GTK_BOX (impl), impl->priv->save_widgets, 0);
+ gtk_widget_show (impl->priv->save_widgets);
}
/* Destroys the widgets specific to Save mode */
static void
save_widgets_destroy (GtkFileChooserDefault *impl)
{
- if (impl->save_widgets == NULL)
+ if (impl->priv->save_widgets == NULL)
return;
- gtk_widget_destroy (impl->save_widgets);
- impl->save_widgets = NULL;
- impl->save_widgets_table = NULL;
- impl->location_entry = NULL;
- impl->save_folder_label = NULL;
+ gtk_widget_destroy (impl->priv->save_widgets);
+ impl->priv->save_widgets = NULL;
+ impl->priv->save_widgets_table = NULL;
+ impl->priv->location_entry = NULL;
+ impl->priv->save_folder_label = NULL;
}
/* Turns on the path bar widget. Can be called even if we are already in that
@@ -4647,13 +4097,13 @@ save_widgets_destroy (GtkFileChooserDefault *impl)
static void
location_switch_to_path_bar (GtkFileChooserDefault *impl)
{
- if (impl->location_entry)
+ if (impl->priv->location_entry)
{
- gtk_widget_destroy (impl->location_entry);
- impl->location_entry = NULL;
+ gtk_widget_destroy (impl->priv->location_entry);
+ impl->priv->location_entry = NULL;
}
- gtk_widget_hide (impl->location_entry_box);
+ gtk_widget_hide (impl->priv->location_entry_box);
}
/* Turns on the location entry. Can be called even if we are already in that
@@ -4666,31 +4116,31 @@ location_switch_to_filename_entry (GtkFileChooserDefault *impl)
* location_entry_box container, so there's no point in switching
* to it.
*/
- if (impl->operation_mode == OPERATION_MODE_SEARCH ||
- impl->operation_mode == OPERATION_MODE_RECENT)
+ if (impl->priv->operation_mode == OPERATION_MODE_SEARCH ||
+ impl->priv->operation_mode == OPERATION_MODE_RECENT)
return;
/* Box */
- gtk_widget_show (impl->location_entry_box);
+ gtk_widget_show (impl->priv->location_entry_box);
/* Entry */
- if (!impl->location_entry)
+ if (!impl->priv->location_entry)
{
location_entry_create (impl);
- gtk_box_pack_start (GTK_BOX (impl->location_entry_box), impl->location_entry, TRUE, TRUE, 0);
- gtk_label_set_mnemonic_widget (GTK_LABEL (impl->location_label), impl->location_entry);
+ gtk_box_pack_start (GTK_BOX (impl->priv->location_entry_box), impl->priv->location_entry, TRUE, TRUE,
0);
+ gtk_label_set_mnemonic_widget (GTK_LABEL (impl->priv->location_label), impl->priv->location_entry);
}
/* Configure the entry */
- _gtk_file_chooser_entry_set_base_folder (GTK_FILE_CHOOSER_ENTRY (impl->location_entry),
impl->current_folder);
+ _gtk_file_chooser_entry_set_base_folder (GTK_FILE_CHOOSER_ENTRY (impl->priv->location_entry),
impl->priv->current_folder);
/* Done */
- gtk_widget_show (impl->location_entry);
- gtk_widget_grab_focus (impl->location_entry);
+ gtk_widget_show (impl->priv->location_entry);
+ gtk_widget_grab_focus (impl->priv->location_entry);
}
/* Sets a new location mode. set_buttons determines whether the toggle button
@@ -4701,8 +4151,8 @@ location_mode_set (GtkFileChooserDefault *impl,
LocationMode new_mode,
gboolean set_button)
{
- if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
- impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+ if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
+ impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
{
GtkWindow *toplevel;
GtkWidget *current_focus;
@@ -4723,14 +4173,14 @@ location_mode_set (GtkFileChooserDefault *impl,
if (toplevel)
{
current_focus = gtk_window_get_focus (toplevel);
- if (!current_focus || current_focus == impl->location_entry)
+ if (!current_focus || current_focus == impl->priv->location_entry)
switch_to_file_list = TRUE;
}
location_switch_to_path_bar (impl);
if (switch_to_file_list)
- gtk_widget_grab_focus (impl->browse_files_tree_view);
+ gtk_widget_grab_focus (impl->priv->browse_files_tree_view);
break;
@@ -4746,17 +4196,17 @@ location_mode_set (GtkFileChooserDefault *impl,
if (set_button)
{
- g_signal_handlers_block_by_func (impl->location_button,
+ g_signal_handlers_block_by_func (impl->priv->location_button,
G_CALLBACK (location_button_toggled_cb), impl);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (impl->location_button), button_active);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (impl->priv->location_button), button_active);
- g_signal_handlers_unblock_by_func (impl->location_button,
+ g_signal_handlers_unblock_by_func (impl->priv->location_button,
G_CALLBACK (location_button_toggled_cb), impl);
}
}
- impl->location_mode = new_mode;
+ impl->priv->location_mode = new_mode;
}
static void
@@ -4766,26 +4216,26 @@ location_toggle_popup_handler (GtkFileChooserDefault *impl)
* location_entry_box container, so there's no point in switching
* to it.
*/
- if (impl->operation_mode == OPERATION_MODE_SEARCH ||
- impl->operation_mode == OPERATION_MODE_RECENT)
+ if (impl->priv->operation_mode == OPERATION_MODE_SEARCH ||
+ impl->priv->operation_mode == OPERATION_MODE_RECENT)
return;
/* If the file entry is not visible, show it.
* If it is visible, turn it off only if it is focused. Otherwise, switch to the entry.
*/
- if (impl->location_mode == LOCATION_MODE_PATH_BAR)
+ if (impl->priv->location_mode == LOCATION_MODE_PATH_BAR)
{
location_mode_set (impl, LOCATION_MODE_FILENAME_ENTRY, TRUE);
}
- else if (impl->location_mode == LOCATION_MODE_FILENAME_ENTRY)
+ else if (impl->priv->location_mode == LOCATION_MODE_FILENAME_ENTRY)
{
- if (gtk_widget_has_focus (impl->location_entry))
+ if (gtk_widget_has_focus (impl->priv->location_entry))
{
location_mode_set (impl, LOCATION_MODE_PATH_BAR, TRUE);
}
else
{
- gtk_widget_grab_focus (impl->location_entry);
+ gtk_widget_grab_focus (impl->priv->location_entry);
}
}
}
@@ -4802,41 +4252,18 @@ location_button_toggled_cb (GtkToggleButton *toggle,
if (is_active)
{
- g_assert (impl->location_mode == LOCATION_MODE_PATH_BAR);
+ g_assert (impl->priv->location_mode == LOCATION_MODE_PATH_BAR);
new_mode = LOCATION_MODE_FILENAME_ENTRY;
}
else
{
- g_assert (impl->location_mode == LOCATION_MODE_FILENAME_ENTRY);
+ g_assert (impl->priv->location_mode == LOCATION_MODE_FILENAME_ENTRY);
new_mode = LOCATION_MODE_PATH_BAR;
}
location_mode_set (impl, new_mode, FALSE);
}
-/* Creates a toggle button for the location entry. */
-static void
-location_button_create (GtkFileChooserDefault *impl)
-{
- GtkWidget *image;
- const char *str;
-
- image = gtk_image_new_from_stock (GTK_STOCK_EDIT, GTK_ICON_SIZE_BUTTON);
- gtk_widget_show (image);
-
- impl->location_button = g_object_new (GTK_TYPE_TOGGLE_BUTTON,
- "image", image,
- NULL);
-
- g_signal_connect (impl->location_button, "toggled",
- G_CALLBACK (location_button_toggled_cb), impl);
-
- str = _("Type a file name");
-
- gtk_widget_set_tooltip_text (impl->location_button, str);
- atk_object_set_name (gtk_widget_get_accessible (impl->location_button), str);
-}
-
typedef enum {
PATH_BAR_FOLDER_PATH,
PATH_BAR_SELECT_A_FOLDER,
@@ -4846,25 +4273,6 @@ typedef enum {
PATH_BAR_SEARCH
} PathBarMode;
-/* Creates the info bar for informational messages or warnings, with its icon and label */
-static void
-info_bar_create (GtkFileChooserDefault *impl)
-{
- GtkWidget *content_area;
-
- impl->browse_select_a_folder_info_bar = gtk_info_bar_new ();
- impl->browse_select_a_folder_icon = gtk_image_new_from_stock (GTK_STOCK_DIRECTORY, GTK_ICON_SIZE_MENU);
- impl->browse_select_a_folder_label = gtk_label_new (NULL);
-
- content_area = gtk_info_bar_get_content_area (GTK_INFO_BAR (impl->browse_select_a_folder_info_bar));
-
- gtk_box_pack_start (GTK_BOX (content_area), impl->browse_select_a_folder_icon, FALSE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX (content_area), impl->browse_select_a_folder_label, FALSE, FALSE, 0);
-
- gtk_widget_show (impl->browse_select_a_folder_icon);
- gtk_widget_show (impl->browse_select_a_folder_label);
-}
-
/* Sets the info bar to show the appropriate informational or warning message */
static void
info_bar_set (GtkFileChooserDefault *impl, PathBarMode mode)
@@ -4898,70 +4306,16 @@ info_bar_set (GtkFileChooserDefault *impl, PathBarMode mode)
return;
}
- gtk_info_bar_set_message_type (GTK_INFO_BAR (impl->browse_select_a_folder_info_bar), message_type);
- gtk_image_set_from_stock (GTK_IMAGE (impl->browse_select_a_folder_icon),
+ gtk_info_bar_set_message_type (GTK_INFO_BAR (impl->priv->browse_select_a_folder_info_bar), message_type);
+ gtk_image_set_from_stock (GTK_IMAGE (impl->priv->browse_select_a_folder_icon),
(message_type == GTK_MESSAGE_WARNING) ? GTK_STOCK_DIALOG_WARNING :
GTK_STOCK_DIRECTORY,
GTK_ICON_SIZE_MENU);
- gtk_label_set_markup (GTK_LABEL (impl->browse_select_a_folder_label), str);
+ gtk_label_set_markup (GTK_LABEL (impl->priv->browse_select_a_folder_label), str);
if (free_str)
g_free (str);
}
-/* Creates the icon and label used to show that the file chooser is in Search or Recently-used mode */
-static void
-special_mode_widgets_create (GtkFileChooserDefault *impl)
-{
- impl->browse_special_mode_icon = gtk_image_new ();
- gtk_size_group_add_widget (impl->browse_path_bar_size_group, impl->browse_special_mode_icon);
- gtk_box_pack_start (GTK_BOX (impl->browse_path_bar_hbox), impl->browse_special_mode_icon, FALSE, FALSE, 0);
-
- impl->browse_special_mode_label = gtk_label_new (NULL);
- gtk_size_group_add_widget (impl->browse_path_bar_size_group, impl->browse_special_mode_label);
- gtk_box_pack_start (GTK_BOX (impl->browse_path_bar_hbox), impl->browse_special_mode_label, FALSE, FALSE,
0);
-}
-
-/* Creates the path bar's container and eveyrthing that goes in it: location button, pathbar, info bar, and
Create Folder button */
-static void
-path_bar_widgets_create (GtkFileChooserDefault *impl)
-{
- /* Location widgets - note browse_path_bar_hbox is packed in the right place until switch_path_bar() */
- impl->browse_path_bar_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
- gtk_widget_show (impl->browse_path_bar_hbox);
-
- /* Size group that allows the path bar to be the same size between modes */
- impl->browse_path_bar_size_group = gtk_size_group_new (GTK_SIZE_GROUP_VERTICAL);
- gtk_size_group_set_ignore_hidden (impl->browse_path_bar_size_group, FALSE);
-
- /* Location button */
- location_button_create (impl);
- gtk_size_group_add_widget (impl->browse_path_bar_size_group, impl->location_button);
- gtk_box_pack_start (GTK_BOX (impl->browse_path_bar_hbox), impl->location_button, FALSE, FALSE, 0);
-
- /* Path bar */
- impl->browse_path_bar = g_object_new (GTK_TYPE_PATH_BAR, NULL);
- _gtk_path_bar_set_file_system (GTK_PATH_BAR (impl->browse_path_bar), impl->file_system);
- g_signal_connect (impl->browse_path_bar, "path-clicked", G_CALLBACK (path_bar_clicked), impl);
-
- gtk_size_group_add_widget (impl->browse_path_bar_size_group, impl->browse_path_bar);
- gtk_box_pack_start (GTK_BOX (impl->browse_path_bar_hbox), impl->browse_path_bar, TRUE, TRUE, 0);
-
- /* Info bar */
- info_bar_create (impl);
- gtk_size_group_add_widget (impl->browse_path_bar_size_group, impl->browse_select_a_folder_info_bar);
- gtk_box_pack_start (GTK_BOX (impl->browse_path_bar_hbox), impl->browse_select_a_folder_info_bar, TRUE,
TRUE, 0);
-
- /* Widgets for special modes (recently-used in Open mode, Search mode) */
- special_mode_widgets_create (impl);
-
- /* Create Folder */
- impl->browse_new_folder_button = gtk_button_new_with_mnemonic (_("Create Fo_lder"));
- g_signal_connect (impl->browse_new_folder_button, "clicked",
- G_CALLBACK (new_folder_button_clicked), impl);
- gtk_size_group_add_widget (impl->browse_path_bar_size_group, impl->browse_new_folder_button);
- gtk_box_pack_end (GTK_BOX (impl->browse_path_bar_hbox), impl->browse_new_folder_button, FALSE, FALSE, 0);
-}
-
/* Sets the path bar's mode to show a label, the actual folder path, or a
* warning message. You may call this function with PATH_BAR_ERROR_* directly
* if the pathbar is already showing the widgets you expect; otherwise, call
@@ -4991,20 +4345,20 @@ path_bar_set_mode (GtkFileChooserDefault *impl, PathBarMode mode)
break;
case PATH_BAR_RECENTLY_USED:
- gtk_image_set_from_icon_name (GTK_IMAGE (impl->browse_special_mode_icon), "document-open-recent",
GTK_ICON_SIZE_BUTTON);
+ gtk_image_set_from_icon_name (GTK_IMAGE (impl->priv->browse_special_mode_icon),
"document-open-recent", GTK_ICON_SIZE_BUTTON);
tmp = g_strdup_printf ("<b>%s</b>", _("Recently Used"));
- gtk_label_set_markup (GTK_LABEL (impl->browse_special_mode_label), tmp);
+ gtk_label_set_markup (GTK_LABEL (impl->priv->browse_special_mode_label), tmp);
g_free (tmp);
special_mode_widgets_visible = TRUE;
break;
case PATH_BAR_SEARCH:
- gtk_image_set_from_stock (GTK_IMAGE (impl->browse_special_mode_icon), GTK_STOCK_FIND,
GTK_ICON_SIZE_BUTTON);
+ gtk_image_set_from_stock (GTK_IMAGE (impl->priv->browse_special_mode_icon), GTK_STOCK_FIND,
GTK_ICON_SIZE_BUTTON);
tmp = g_strdup_printf ("<b>%s</b>", _("Search:"));
- gtk_label_set_markup (GTK_LABEL (impl->browse_special_mode_label), tmp);
+ gtk_label_set_markup (GTK_LABEL (impl->priv->browse_special_mode_label), tmp);
g_free (tmp);
special_mode_widgets_visible = TRUE;
@@ -5014,64 +4368,20 @@ path_bar_set_mode (GtkFileChooserDefault *impl, PathBarMode mode)
g_assert_not_reached ();
}
- gtk_widget_set_visible (impl->browse_path_bar, path_bar_visible);
- gtk_widget_set_visible (impl->browse_special_mode_icon, special_mode_widgets_visible);
- gtk_widget_set_visible (impl->browse_special_mode_label, special_mode_widgets_visible);
- gtk_widget_set_visible (impl->browse_select_a_folder_info_bar, info_bar_visible);
+ gtk_widget_set_visible (impl->priv->browse_path_bar, path_bar_visible);
+ gtk_widget_set_visible (impl->priv->browse_special_mode_icon, special_mode_widgets_visible);
+ gtk_widget_set_visible (impl->priv->browse_special_mode_label, special_mode_widgets_visible);
+ gtk_widget_set_visible (impl->priv->browse_select_a_folder_info_bar, info_bar_visible);
if (path_bar_visible)
{
- if (impl->create_folders
- && impl->action != GTK_FILE_CHOOSER_ACTION_OPEN
- && impl->operation_mode != OPERATION_MODE_RECENT)
+ if (impl->priv->create_folders
+ && impl->priv->action != GTK_FILE_CHOOSER_ACTION_OPEN
+ && impl->priv->operation_mode != OPERATION_MODE_RECENT)
create_folder_visible = TRUE;
}
- gtk_widget_set_visible (impl->browse_new_folder_button, create_folder_visible);
-}
-
-/* Creates the main hpaned with the widgets shared by Open and Save mode */
-static void
-browse_widgets_create (GtkFileChooserDefault *impl)
-{
- GtkWidget *hpaned;
- GtkWidget *widget;
- GtkSizeGroup *size_group;
-
- impl->browse_widgets_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
- gtk_box_pack_start (GTK_BOX (impl), impl->browse_widgets_box, TRUE, TRUE, 0);
- gtk_widget_show (impl->browse_widgets_box);
-
- impl->browse_header_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
- gtk_box_pack_start (GTK_BOX (impl->browse_widgets_box), impl->browse_header_box, FALSE, FALSE, 0);
- gtk_widget_show (impl->browse_header_box);
-
- /* Path bar, info bar, and their respective machinery - the browse_path_bar_hbox will get packed elsewhere
*/
- path_bar_widgets_create (impl);
-
- /* Box for the location label and entry */
-
- impl->location_entry_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
- gtk_box_pack_start (GTK_BOX (impl->browse_header_box), impl->location_entry_box, FALSE, FALSE, 0);
-
- impl->location_label = gtk_label_new_with_mnemonic (_("_Location:"));
- gtk_widget_show (impl->location_label);
- gtk_box_pack_start (GTK_BOX (impl->location_entry_box), impl->location_label, FALSE, FALSE, 0);
-
- /* size group is used by the scrolled windows of the panes */
- size_group = gtk_size_group_new (GTK_SIZE_GROUP_VERTICAL);
-
- /* Paned widget */
-
- hpaned = impl->browse_widgets_hpaned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL);
- gtk_widget_show (hpaned);
- gtk_box_pack_start (GTK_BOX (impl->browse_widgets_box), hpaned, TRUE, TRUE, 0);
-
- widget = shortcuts_pane_create (impl, size_group);
- gtk_paned_pack1 (GTK_PANED (hpaned), widget, FALSE, FALSE);
- widget = file_pane_create (impl, size_group);
- gtk_paned_pack2 (GTK_PANED (hpaned), widget, TRUE, FALSE);
- g_object_unref (size_group);
+ gtk_widget_set_visible (impl->priv->browse_new_folder_button, create_folder_visible);
}
static GObject*
@@ -5089,23 +4399,9 @@ gtk_file_chooser_default_constructor (GType type,
construct_params);
impl = GTK_FILE_CHOOSER_DEFAULT (object);
- g_assert (impl->file_system);
-
- gtk_widget_push_composite_child ();
-
- /* Shortcuts model */
- shortcuts_model_create (impl);
- /* The browse widgets */
- browse_widgets_create (impl);
+ g_assert (impl->priv->file_system);
- /* Alignment to hold extra widget */
- impl->extra_align = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
- gtk_widget_set_halign (impl->extra_align, GTK_ALIGN_START);
- gtk_widget_set_valign (impl->extra_align, GTK_ALIGN_CENTER);
- gtk_box_pack_start (GTK_BOX (impl), impl->extra_align, FALSE, FALSE, 0);
-
- gtk_widget_pop_composite_child ();
update_appearance (impl);
profile_end ("end", NULL);
@@ -5125,41 +4421,41 @@ set_extra_widget (GtkFileChooserDefault *impl,
gtk_widget_show (extra_widget);
}
- if (impl->extra_widget)
+ if (impl->priv->extra_widget)
{
- gtk_container_remove (GTK_CONTAINER (impl->extra_align), impl->extra_widget);
- g_object_unref (impl->extra_widget);
+ gtk_container_remove (GTK_CONTAINER (impl->priv->extra_align), impl->priv->extra_widget);
+ g_object_unref (impl->priv->extra_widget);
}
- impl->extra_widget = extra_widget;
- if (impl->extra_widget)
+ impl->priv->extra_widget = extra_widget;
+ if (impl->priv->extra_widget)
{
- gtk_container_add (GTK_CONTAINER (impl->extra_align), impl->extra_widget);
- gtk_widget_show (impl->extra_align);
+ gtk_container_add (GTK_CONTAINER (impl->priv->extra_align), impl->priv->extra_widget);
+ gtk_widget_show (impl->priv->extra_align);
}
else
- gtk_widget_hide (impl->extra_align);
+ gtk_widget_hide (impl->priv->extra_align);
}
static void
set_local_only (GtkFileChooserDefault *impl,
gboolean local_only)
{
- if (local_only != impl->local_only)
+ if (local_only != impl->priv->local_only)
{
- impl->local_only = local_only;
+ impl->priv->local_only = local_only;
- if (impl->location_entry)
- _gtk_file_chooser_entry_set_local_only (GTK_FILE_CHOOSER_ENTRY (impl->location_entry), local_only);
+ if (impl->priv->location_entry)
+ _gtk_file_chooser_entry_set_local_only (GTK_FILE_CHOOSER_ENTRY (impl->priv->location_entry),
local_only);
- if (impl->shortcuts_model && impl->file_system)
+ if (impl->priv->shortcuts_model && impl->priv->file_system)
{
shortcuts_add_volumes (impl);
shortcuts_add_bookmarks (impl);
}
- if (local_only && impl->current_folder &&
- !_gtk_file_has_native_path (impl->current_folder))
+ if (local_only && impl->priv->current_folder &&
+ !_gtk_file_has_native_path (impl->priv->current_folder))
{
/* If we are pointing to a non-local folder, make an effort to change
* back to a local folder, but it's really up to the app to not cause
@@ -5201,17 +4497,17 @@ set_select_multiple (GtkFileChooserDefault *impl,
GtkTreeSelection *selection;
GtkSelectionMode mode;
- if (select_multiple == impl->select_multiple)
+ if (select_multiple == impl->priv->select_multiple)
return;
mode = select_multiple ? GTK_SELECTION_MULTIPLE : GTK_SELECTION_SINGLE;
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
gtk_tree_selection_set_mode (selection, mode);
- gtk_tree_view_set_rubber_banding (GTK_TREE_VIEW (impl->browse_files_tree_view), select_multiple);
+ gtk_tree_view_set_rubber_banding (GTK_TREE_VIEW (impl->priv->browse_files_tree_view), select_multiple);
- impl->select_multiple = select_multiple;
+ impl->priv->select_multiple = select_multiple;
g_object_notify (G_OBJECT (impl), "select-multiple");
check_preview_change (impl);
@@ -5222,11 +4518,11 @@ set_file_system_backend (GtkFileChooserDefault *impl)
{
profile_start ("start for backend", "default");
- impl->file_system = _gtk_file_system_new ();
+ impl->priv->file_system = _gtk_file_system_new ();
- g_signal_connect (impl->file_system, "volumes-changed",
+ g_signal_connect (impl->priv->file_system, "volumes-changed",
G_CALLBACK (volumes_bookmarks_changed_cb), impl);
- g_signal_connect (impl->file_system, "bookmarks-changed",
+ g_signal_connect (impl->priv->file_system, "bookmarks-changed",
G_CALLBACK (volumes_bookmarks_changed_cb), impl);
profile_end ("end", NULL);
@@ -5235,12 +4531,12 @@ set_file_system_backend (GtkFileChooserDefault *impl)
static void
unset_file_system_backend (GtkFileChooserDefault *impl)
{
- g_signal_handlers_disconnect_by_func (impl->file_system,
+ g_signal_handlers_disconnect_by_func (impl->priv->file_system,
G_CALLBACK (volumes_bookmarks_changed_cb), impl);
- g_object_unref (impl->file_system);
+ g_object_unref (impl->priv->file_system);
- impl->file_system = NULL;
+ impl->priv->file_system = NULL;
}
/* Saves the widgets around the pathbar so they can be reparented later
@@ -5252,11 +4548,11 @@ save_path_bar (GtkFileChooserDefault *impl)
{
GtkWidget *parent;
- g_object_ref (impl->browse_path_bar_hbox);
+ g_object_ref (impl->priv->browse_path_bar_hbox);
- parent = gtk_widget_get_parent (impl->browse_path_bar_hbox);
+ parent = gtk_widget_get_parent (impl->priv->browse_path_bar_hbox);
if (parent)
- gtk_container_remove (GTK_CONTAINER (parent), impl->browse_path_bar_hbox);
+ gtk_container_remove (GTK_CONTAINER (parent), impl->priv->browse_path_bar_hbox);
}
/* Reparents the path bar and the "Create folder" button to the right place:
@@ -5267,23 +4563,23 @@ save_path_bar (GtkFileChooserDefault *impl)
static void
restore_path_bar (GtkFileChooserDefault *impl)
{
- if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN
- || impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+ if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN
+ || impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
{
- gtk_box_pack_start (GTK_BOX (impl->browse_header_box), impl->browse_path_bar_hbox, FALSE, FALSE, 0);
- gtk_box_reorder_child (GTK_BOX (impl->browse_header_box), impl->browse_path_bar_hbox, 0);
+ gtk_box_pack_start (GTK_BOX (impl->priv->browse_header_box), impl->priv->browse_path_bar_hbox, FALSE,
FALSE, 0);
+ gtk_box_reorder_child (GTK_BOX (impl->priv->browse_header_box), impl->priv->browse_path_bar_hbox, 0);
}
- else if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE
- || impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+ else if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE
+ || impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
{
- gtk_widget_set_hexpand (impl->browse_path_bar_hbox, TRUE);
- gtk_grid_attach (GTK_GRID (impl->save_widgets_table), impl->browse_path_bar_hbox, 1, 1, 1, 1);
- gtk_label_set_mnemonic_widget (GTK_LABEL (impl->save_folder_label), impl->browse_path_bar);
+ gtk_widget_set_hexpand (impl->priv->browse_path_bar_hbox, TRUE);
+ gtk_grid_attach (GTK_GRID (impl->priv->save_widgets_table), impl->priv->browse_path_bar_hbox, 1, 1, 1,
1);
+ gtk_label_set_mnemonic_widget (GTK_LABEL (impl->priv->save_folder_label), impl->priv->browse_path_bar);
}
else
g_assert_not_reached ();
- g_object_unref (impl->browse_path_bar_hbox);
+ g_object_unref (impl->priv->browse_path_bar_hbox);
}
/* Takes the folder stored in a row in the recent_model, and puts it in the pathbar */
@@ -5292,15 +4588,15 @@ put_recent_folder_in_pathbar (GtkFileChooserDefault *impl, GtkTreeIter *iter)
{
GFile *file;
- gtk_tree_model_get (GTK_TREE_MODEL (impl->recent_model), iter,
+ gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->recent_model), iter,
MODEL_COL_FILE, &file,
-1);
- _gtk_path_bar_set_file (GTK_PATH_BAR (impl->browse_path_bar), file, FALSE);
+ _gtk_path_bar_set_file (GTK_PATH_BAR (impl->priv->browse_path_bar), file, FALSE);
g_object_unref (file);
}
/* Sets the pathbar in the appropriate mode according to the current operation mode and action. This is the
central function for
- * dealing with the pathbar's widgets; as long as impl->action and impl->operation_mode are set correctly,
then calling this
+ * dealing with the pathbar's widgets; as long as impl->priv->action and impl->priv->operation_mode are set
correctly, then calling this
* function will update all the pathbar's widgets.
*/
static void
@@ -5308,20 +4604,20 @@ path_bar_update (GtkFileChooserDefault *impl)
{
PathBarMode mode;
- switch (impl->operation_mode)
+ switch (impl->priv->operation_mode)
{
case OPERATION_MODE_BROWSE:
mode = PATH_BAR_FOLDER_PATH;
break;
case OPERATION_MODE_RECENT:
- if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+ if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE)
{
GtkTreeSelection *selection;
gboolean have_selected;
GtkTreeIter iter;
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
/* Save mode means single-selection mode, so the following is valid */
have_selected = gtk_tree_selection_get_selected (selection, NULL, &iter);
@@ -5354,12 +4650,12 @@ path_bar_update (GtkFileChooserDefault *impl)
static void
operation_mode_discard_search_widgets (GtkFileChooserDefault *impl)
{
- if (impl->search_hbox)
+ if (impl->priv->search_hbox)
{
- gtk_widget_destroy (impl->search_hbox);
+ gtk_widget_destroy (impl->priv->search_hbox);
- impl->search_hbox = NULL;
- impl->search_entry = NULL;
+ impl->priv->search_hbox = NULL;
+ impl->priv->search_entry = NULL;
}
}
@@ -5395,23 +4691,23 @@ operation_mode_set_browse (GtkFileChooserDefault *impl)
{
path_bar_update (impl);
- if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
- impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+ if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
+ impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
{
- gtk_widget_show (impl->location_button);
- location_mode_set (impl, impl->location_mode, TRUE);
+ gtk_widget_show (impl->priv->location_button);
+ location_mode_set (impl, impl->priv->location_mode, TRUE);
- if (impl->location_mode == LOCATION_MODE_FILENAME_ENTRY)
- gtk_widget_show (impl->location_entry_box);
+ if (impl->priv->location_mode == LOCATION_MODE_FILENAME_ENTRY)
+ gtk_widget_show (impl->priv->location_entry_box);
}
}
static void
operation_mode_set_search (GtkFileChooserDefault *impl)
{
- g_assert (impl->search_hbox == NULL);
- g_assert (impl->search_entry == NULL);
- g_assert (impl->search_model == NULL);
+ g_assert (impl->priv->search_hbox == NULL);
+ g_assert (impl->priv->search_entry == NULL);
+ g_assert (impl->priv->search_model == NULL);
search_setup_widgets (impl);
}
@@ -5422,11 +4718,11 @@ operation_mode_set_recent (GtkFileChooserDefault *impl)
path_bar_update (impl);
/* Hide the location widgets temporarily */
- if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
- impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+ if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
+ impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
{
- gtk_widget_hide (impl->location_button);
- gtk_widget_hide (impl->location_entry_box);
+ gtk_widget_hide (impl->priv->location_button);
+ gtk_widget_hide (impl->priv->location_entry_box);
}
recent_start_loading (impl);
@@ -5439,7 +4735,7 @@ shortcuts_select_item_without_activating (GtkFileChooserDefault *impl, int pos)
GtkTreeSelection *selection;
GtkTreePath *path;
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view));
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_shortcuts_tree_view));
g_signal_handlers_block_by_func (selection, G_CALLBACK (shortcuts_selection_changed_cb), impl);
@@ -5455,11 +4751,11 @@ operation_mode_set (GtkFileChooserDefault *impl, OperationMode mode)
{
ShortcutsIndex shortcut_to_select;
- operation_mode_stop (impl, impl->operation_mode);
+ operation_mode_stop (impl, impl->priv->operation_mode);
- impl->operation_mode = mode;
+ impl->priv->operation_mode = mode;
- switch (impl->operation_mode)
+ switch (impl->priv->operation_mode)
{
case OPERATION_MODE_BROWSE:
operation_mode_set_browse (impl);
@@ -5495,38 +4791,38 @@ update_appearance (GtkFileChooserDefault *impl)
{
save_path_bar (impl);
- if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
- impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+ if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
+ impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
{
const char *text;
- gtk_widget_hide (impl->location_button);
+ gtk_widget_hide (impl->priv->location_button);
save_widgets_create (impl);
- if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+ if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE)
text = _("Save in _folder:");
else
text = _("Create in _folder:");
- gtk_label_set_text_with_mnemonic (GTK_LABEL (impl->save_folder_label), text);
+ gtk_label_set_text_with_mnemonic (GTK_LABEL (impl->priv->save_folder_label), text);
- if (impl->select_multiple)
+ if (impl->priv->select_multiple)
{
g_warning ("Save mode cannot be set in conjunction with multiple selection mode. "
"Re-setting to single selection mode.");
set_select_multiple (impl, FALSE, TRUE);
}
}
- else if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
- impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+ else if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
+ impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
{
- gtk_widget_show (impl->location_button);
+ gtk_widget_show (impl->priv->location_button);
save_widgets_destroy (impl);
- location_mode_set (impl, impl->location_mode, TRUE);
+ location_mode_set (impl, impl->priv->location_mode, TRUE);
}
- if (impl->location_entry)
- _gtk_file_chooser_entry_set_action (GTK_FILE_CHOOSER_ENTRY (impl->location_entry), impl->action);
+ if (impl->priv->location_entry)
+ _gtk_file_chooser_entry_set_action (GTK_FILE_CHOOSER_ENTRY (impl->priv->location_entry),
impl->priv->action);
restore_path_bar (impl);
path_bar_update (impl);
@@ -5534,7 +4830,7 @@ update_appearance (GtkFileChooserDefault *impl)
/* This *is* needed; we need to redraw the file list because the "sensitivity"
* of files may change depending whether we are in a file or folder-only mode.
*/
- gtk_widget_queue_draw (impl->browse_files_tree_view);
+ gtk_widget_queue_draw (impl->priv->browse_files_tree_view);
emit_default_size_changed (impl);
}
@@ -5554,20 +4850,20 @@ gtk_file_chooser_default_set_property (GObject *object,
{
GtkFileChooserAction action = g_value_get_enum (value);
- if (action != impl->action)
+ if (action != impl->priv->action)
{
gtk_file_chooser_default_unselect_all (GTK_FILE_CHOOSER (impl));
if ((action == GTK_FILE_CHOOSER_ACTION_SAVE ||
action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
- && impl->select_multiple)
+ && impl->priv->select_multiple)
{
g_warning ("Tried to change the file chooser action to SAVE or CREATE_FOLDER, but "
"this is not allowed in multiple selection mode. Resetting the file chooser "
"to single selection mode.");
set_select_multiple (impl, FALSE, TRUE);
}
- impl->action = action;
+ impl->priv->action = action;
update_cell_renderer_attributes (impl);
update_appearance (impl);
settings_load (impl);
@@ -5588,12 +4884,12 @@ gtk_file_chooser_default_set_property (GObject *object,
break;
case GTK_FILE_CHOOSER_PROP_PREVIEW_WIDGET_ACTIVE:
- impl->preview_widget_active = g_value_get_boolean (value);
+ impl->priv->preview_widget_active = g_value_get_boolean (value);
update_preview_widget_visibility (impl);
break;
case GTK_FILE_CHOOSER_PROP_USE_PREVIEW_LABEL:
- impl->use_preview_label = g_value_get_boolean (value);
+ impl->priv->use_preview_label = g_value_get_boolean (value);
update_preview_widget_visibility (impl);
break;
@@ -5604,8 +4900,8 @@ gtk_file_chooser_default_set_property (GObject *object,
case GTK_FILE_CHOOSER_PROP_SELECT_MULTIPLE:
{
gboolean select_multiple = g_value_get_boolean (value);
- if ((impl->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
- impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+ if ((impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
+ impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
&& select_multiple)
{
g_warning ("Tried to set the file chooser to multiple selection mode, but this is "
@@ -5621,12 +4917,12 @@ gtk_file_chooser_default_set_property (GObject *object,
case GTK_FILE_CHOOSER_PROP_SHOW_HIDDEN:
{
gboolean show_hidden = g_value_get_boolean (value);
- if (show_hidden != impl->show_hidden)
+ if (show_hidden != impl->priv->show_hidden)
{
- impl->show_hidden = show_hidden;
+ impl->priv->show_hidden = show_hidden;
- if (impl->browse_files_model)
- _gtk_file_system_model_set_show_hidden (impl->browse_files_model, show_hidden);
+ if (impl->priv->browse_files_model)
+ _gtk_file_system_model_set_show_hidden (impl->priv->browse_files_model, show_hidden);
}
}
break;
@@ -5634,14 +4930,14 @@ gtk_file_chooser_default_set_property (GObject *object,
case GTK_FILE_CHOOSER_PROP_DO_OVERWRITE_CONFIRMATION:
{
gboolean do_overwrite_confirmation = g_value_get_boolean (value);
- impl->do_overwrite_confirmation = do_overwrite_confirmation;
+ impl->priv->do_overwrite_confirmation = do_overwrite_confirmation;
}
break;
case GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS:
{
gboolean create_folders = g_value_get_boolean (value);
- impl->create_folders = create_folders;
+ impl->priv->create_folders = create_folders;
update_appearance (impl);
}
break;
@@ -5663,47 +4959,47 @@ gtk_file_chooser_default_get_property (GObject *object,
switch (prop_id)
{
case GTK_FILE_CHOOSER_PROP_ACTION:
- g_value_set_enum (value, impl->action);
+ g_value_set_enum (value, impl->priv->action);
break;
case GTK_FILE_CHOOSER_PROP_FILTER:
- g_value_set_object (value, impl->current_filter);
+ g_value_set_object (value, impl->priv->current_filter);
break;
case GTK_FILE_CHOOSER_PROP_LOCAL_ONLY:
- g_value_set_boolean (value, impl->local_only);
+ g_value_set_boolean (value, impl->priv->local_only);
break;
case GTK_FILE_CHOOSER_PROP_PREVIEW_WIDGET:
- g_value_set_object (value, impl->preview_widget);
+ g_value_set_object (value, impl->priv->preview_widget);
break;
case GTK_FILE_CHOOSER_PROP_PREVIEW_WIDGET_ACTIVE:
- g_value_set_boolean (value, impl->preview_widget_active);
+ g_value_set_boolean (value, impl->priv->preview_widget_active);
break;
case GTK_FILE_CHOOSER_PROP_USE_PREVIEW_LABEL:
- g_value_set_boolean (value, impl->use_preview_label);
+ g_value_set_boolean (value, impl->priv->use_preview_label);
break;
case GTK_FILE_CHOOSER_PROP_EXTRA_WIDGET:
- g_value_set_object (value, impl->extra_widget);
+ g_value_set_object (value, impl->priv->extra_widget);
break;
case GTK_FILE_CHOOSER_PROP_SELECT_MULTIPLE:
- g_value_set_boolean (value, impl->select_multiple);
+ g_value_set_boolean (value, impl->priv->select_multiple);
break;
case GTK_FILE_CHOOSER_PROP_SHOW_HIDDEN:
- g_value_set_boolean (value, impl->show_hidden);
+ g_value_set_boolean (value, impl->priv->show_hidden);
break;
case GTK_FILE_CHOOSER_PROP_DO_OVERWRITE_CONFIRMATION:
- g_value_set_boolean (value, impl->do_overwrite_confirmation);
+ g_value_set_boolean (value, impl->priv->do_overwrite_confirmation);
break;
case GTK_FILE_CHOOSER_PROP_CREATE_FOLDERS:
- g_value_set_boolean (value, impl->create_folders);
+ g_value_set_boolean (value, impl->priv->create_folders);
break;
default:
@@ -5720,62 +5016,62 @@ cancel_all_operations (GtkFileChooserDefault *impl)
pending_select_files_free (impl);
- if (impl->reload_icon_cancellables)
+ if (impl->priv->reload_icon_cancellables)
{
- for (l = impl->reload_icon_cancellables; l; l = l->next)
+ for (l = impl->priv->reload_icon_cancellables; l; l = l->next)
{
GCancellable *cancellable = G_CANCELLABLE (l->data);
g_cancellable_cancel (cancellable);
}
- g_slist_free (impl->reload_icon_cancellables);
- impl->reload_icon_cancellables = NULL;
+ g_slist_free (impl->priv->reload_icon_cancellables);
+ impl->priv->reload_icon_cancellables = NULL;
}
- if (impl->loading_shortcuts)
+ if (impl->priv->loading_shortcuts)
{
- for (l = impl->loading_shortcuts; l; l = l->next)
+ for (l = impl->priv->loading_shortcuts; l; l = l->next)
{
GCancellable *cancellable = G_CANCELLABLE (l->data);
g_cancellable_cancel (cancellable);
}
- g_slist_free (impl->loading_shortcuts);
- impl->loading_shortcuts = NULL;
+ g_slist_free (impl->priv->loading_shortcuts);
+ impl->priv->loading_shortcuts = NULL;
}
- if (impl->file_list_drag_data_received_cancellable)
+ if (impl->priv->file_list_drag_data_received_cancellable)
{
- g_cancellable_cancel (impl->file_list_drag_data_received_cancellable);
- impl->file_list_drag_data_received_cancellable = NULL;
+ g_cancellable_cancel (impl->priv->file_list_drag_data_received_cancellable);
+ impl->priv->file_list_drag_data_received_cancellable = NULL;
}
- if (impl->update_current_folder_cancellable)
+ if (impl->priv->update_current_folder_cancellable)
{
- g_cancellable_cancel (impl->update_current_folder_cancellable);
- impl->update_current_folder_cancellable = NULL;
+ g_cancellable_cancel (impl->priv->update_current_folder_cancellable);
+ impl->priv->update_current_folder_cancellable = NULL;
}
- if (impl->should_respond_get_info_cancellable)
+ if (impl->priv->should_respond_get_info_cancellable)
{
- g_cancellable_cancel (impl->should_respond_get_info_cancellable);
- impl->should_respond_get_info_cancellable = NULL;
+ g_cancellable_cancel (impl->priv->should_respond_get_info_cancellable);
+ impl->priv->should_respond_get_info_cancellable = NULL;
}
- if (impl->file_exists_get_info_cancellable)
+ if (impl->priv->file_exists_get_info_cancellable)
{
- g_cancellable_cancel (impl->file_exists_get_info_cancellable);
- impl->file_exists_get_info_cancellable = NULL;
+ g_cancellable_cancel (impl->priv->file_exists_get_info_cancellable);
+ impl->priv->file_exists_get_info_cancellable = NULL;
}
- if (impl->update_from_entry_cancellable)
+ if (impl->priv->update_from_entry_cancellable)
{
- g_cancellable_cancel (impl->update_from_entry_cancellable);
- impl->update_from_entry_cancellable = NULL;
+ g_cancellable_cancel (impl->priv->update_from_entry_cancellable);
+ impl->priv->update_from_entry_cancellable = NULL;
}
- if (impl->shortcuts_activate_iter_cancellable)
+ if (impl->priv->shortcuts_activate_iter_cancellable)
{
- g_cancellable_cancel (impl->shortcuts_activate_iter_cancellable);
- impl->shortcuts_activate_iter_cancellable = NULL;
+ g_cancellable_cancel (impl->priv->shortcuts_activate_iter_cancellable);
+ impl->priv->shortcuts_activate_iter_cancellable = NULL;
}
search_stop_searching (impl, TRUE);
@@ -5787,14 +5083,14 @@ static void
remove_settings_signal (GtkFileChooserDefault *impl,
GdkScreen *screen)
{
- if (impl->settings_signal_id)
+ if (impl->priv->settings_signal_id)
{
GtkSettings *settings;
settings = gtk_settings_get_for_screen (screen);
g_signal_handler_disconnect (settings,
- impl->settings_signal_id);
- impl->settings_signal_id = 0;
+ impl->priv->settings_signal_id);
+ impl->priv->settings_signal_id = 0;
}
}
@@ -5805,10 +5101,12 @@ gtk_file_chooser_default_dispose (GObject *object)
cancel_all_operations (impl);
- if (impl->extra_widget)
+ shortcuts_free (impl);
+
+ if (impl->priv->extra_widget)
{
- g_object_unref (impl->extra_widget);
- impl->extra_widget = NULL;
+ g_object_unref (impl->priv->extra_widget);
+ impl->priv->extra_widget = NULL;
}
remove_settings_signal (impl, gtk_widget_get_screen (GTK_WIDGET (impl)));
@@ -5827,8 +5125,8 @@ gtk_file_chooser_default_show_all (GtkWidget *widget)
gtk_widget_show (widget);
- if (impl->extra_widget)
- gtk_widget_show_all (impl->extra_widget);
+ if (impl->priv->extra_widget)
+ gtk_widget_show_all (impl->priv->extra_widget);
}
/* Handler for GtkWindow::set-focus; this is where we save the last-focused
@@ -5839,7 +5137,7 @@ toplevel_set_focus_cb (GtkWindow *window,
GtkWidget *focus,
GtkFileChooserDefault *impl)
{
- impl->toplevel_last_focus_widget = gtk_window_get_focus (window);
+ impl->priv->toplevel_last_focus_widget = gtk_window_get_focus (window);
}
/* We monitor the focus widget on our toplevel to be able to know which widget
@@ -5856,20 +5154,20 @@ gtk_file_chooser_default_hierarchy_changed (GtkWidget *widget,
toplevel = gtk_widget_get_toplevel (widget);
if (previous_toplevel &&
- impl->toplevel_set_focus_id != 0)
+ impl->priv->toplevel_set_focus_id != 0)
{
g_signal_handler_disconnect (previous_toplevel,
- impl->toplevel_set_focus_id);
- impl->toplevel_set_focus_id = 0;
- impl->toplevel_last_focus_widget = NULL;
+ impl->priv->toplevel_set_focus_id);
+ impl->priv->toplevel_set_focus_id = 0;
+ impl->priv->toplevel_last_focus_widget = NULL;
}
if (gtk_widget_is_toplevel (toplevel))
{
- g_assert (impl->toplevel_set_focus_id == 0);
- impl->toplevel_set_focus_id = g_signal_connect (toplevel, "set-focus",
+ g_assert (impl->priv->toplevel_set_focus_id == 0);
+ impl->priv->toplevel_set_focus_id = g_signal_connect (toplevel, "set-focus",
G_CALLBACK (toplevel_set_focus_cb), impl);
- impl->toplevel_last_focus_widget = gtk_window_get_focus (GTK_WINDOW (toplevel));
+ impl->priv->toplevel_last_focus_widget = gtk_window_get_focus (GTK_WINDOW (toplevel));
}
}
@@ -5879,28 +5177,26 @@ change_icon_theme (GtkFileChooserDefault *impl)
{
GtkSettings *settings;
gint width, height;
- GtkCellRenderer *renderer;
- GList *cells;
profile_start ("start", NULL);
settings = gtk_settings_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (impl)));
if (gtk_icon_size_lookup_for_settings (settings, GTK_ICON_SIZE_MENU, &width, &height))
- impl->icon_size = MAX (width, height);
+ impl->priv->icon_size = MAX (width, height);
else
- impl->icon_size = FALLBACK_ICON_SIZE;
+ impl->priv->icon_size = FALLBACK_ICON_SIZE;
shortcuts_reload_icons (impl);
- /* the first cell in the first column is the icon column, and we have a fixed size there */
- cells = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (
- gtk_tree_view_get_column (GTK_TREE_VIEW (impl->browse_files_tree_view), 0)));
- renderer = GTK_CELL_RENDERER (cells->data);
- set_icon_cell_renderer_fixed_size (impl, renderer);
- g_list_free (cells);
- if (impl->browse_files_model)
- _gtk_file_system_model_clear_cache (impl->browse_files_model, MODEL_COL_PIXBUF);
- gtk_widget_queue_resize (impl->browse_files_tree_view);
+
+ /* the first cell in the first column is the icon column,
+ * and we have a fixed size there
+ */
+ set_icon_cell_renderer_fixed_size (impl);
+
+ if (impl->priv->browse_files_model)
+ _gtk_file_system_model_clear_cache (impl->priv->browse_files_model, MODEL_COL_PIXBUF);
+ gtk_widget_queue_resize (impl->priv->browse_files_tree_view);
profile_end ("end", NULL);
}
@@ -5934,7 +5230,7 @@ check_icon_theme (GtkFileChooserDefault *impl)
profile_start ("start", NULL);
- if (impl->settings_signal_id)
+ if (impl->priv->settings_signal_id)
{
profile_end ("end", NULL);
return;
@@ -5943,7 +5239,7 @@ check_icon_theme (GtkFileChooserDefault *impl)
if (gtk_widget_has_screen (GTK_WIDGET (impl)))
{
settings = gtk_settings_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (impl)));
- impl->settings_signal_id = g_signal_connect (settings, "notify",
+ impl->priv->settings_signal_id = g_signal_connect (settings, "notify",
G_CALLBACK (settings_notify_cb), impl);
change_icon_theme (impl);
@@ -5999,15 +5295,15 @@ set_sort_column (GtkFileChooserDefault *impl)
{
GtkTreeSortable *sortable;
- sortable = GTK_TREE_SORTABLE (gtk_tree_view_get_model (GTK_TREE_VIEW (impl->browse_files_tree_view)));
+ sortable = GTK_TREE_SORTABLE (gtk_tree_view_get_model (GTK_TREE_VIEW
(impl->priv->browse_files_tree_view)));
/* can happen when we're still populating the model */
if (sortable == NULL)
return;
gtk_tree_sortable_set_sort_column_id (sortable,
- impl->sort_column,
- impl->sort_order);
+ impl->priv->sort_column,
+ impl->priv->sort_order);
}
static void
@@ -6034,17 +5330,17 @@ settings_load (GtkFileChooserDefault *impl)
gtk_file_chooser_set_show_hidden (GTK_FILE_CHOOSER (impl), show_hidden);
- impl->show_size_column = show_size_column;
- gtk_tree_view_column_set_visible (impl->list_size_column, show_size_column);
+ impl->priv->show_size_column = show_size_column;
+ gtk_tree_view_column_set_visible (impl->priv->list_size_column, show_size_column);
- impl->sort_column = sort_column;
- impl->sort_order = sort_order;
+ impl->priv->sort_column = sort_column;
+ impl->priv->sort_order = sort_order;
/* We don't call set_sort_column() here as the models may not have been
* created yet. The individual functions that create and set the models will
* call set_sort_column() themselves.
*/
- gtk_paned_set_position (GTK_PANED (impl->browse_widgets_hpaned), sidebar_width);
+ gtk_paned_set_position (GTK_PANED (impl->priv->browse_widgets_hpaned), sidebar_width);
}
static void
@@ -6056,14 +5352,14 @@ settings_save (GtkFileChooserDefault *impl)
/* All the other state */
- g_settings_set_enum (settings, SETTINGS_KEY_LOCATION_MODE, impl->location_mode);
+ g_settings_set_enum (settings, SETTINGS_KEY_LOCATION_MODE, impl->priv->location_mode);
g_settings_set_boolean (settings, SETTINGS_KEY_SHOW_HIDDEN,
gtk_file_chooser_get_show_hidden (GTK_FILE_CHOOSER (impl)));
- g_settings_set_boolean (settings, SETTINGS_KEY_SHOW_SIZE_COLUMN, impl->show_size_column);
- g_settings_set_enum (settings, SETTINGS_KEY_SORT_COLUMN, impl->sort_column);
- g_settings_set_enum (settings, SETTINGS_KEY_SORT_ORDER, impl->sort_order);
+ g_settings_set_boolean (settings, SETTINGS_KEY_SHOW_SIZE_COLUMN, impl->priv->show_size_column);
+ g_settings_set_enum (settings, SETTINGS_KEY_SORT_COLUMN, impl->priv->sort_column);
+ g_settings_set_enum (settings, SETTINGS_KEY_SORT_ORDER, impl->priv->sort_order);
g_settings_set_int (settings, SETTINGS_KEY_SIDEBAR_WIDTH,
- gtk_paned_get_position (GTK_PANED (impl->browse_widgets_hpaned)));
+ gtk_paned_get_position (GTK_PANED (impl->priv->browse_widgets_hpaned)));
/* Now apply the settings */
g_settings_apply (settings);
@@ -6094,9 +5390,9 @@ gtk_file_chooser_default_map (GtkWidget *widget)
GTK_WIDGET_CLASS (_gtk_file_chooser_default_parent_class)->map (widget);
- if (impl->operation_mode == OPERATION_MODE_BROWSE)
+ if (impl->priv->operation_mode == OPERATION_MODE_BROWSE)
{
- switch (impl->reload_state)
+ switch (impl->priv->reload_state)
{
case RELOAD_EMPTY:
recent_shortcut_handler (impl);
@@ -6113,7 +5409,7 @@ gtk_file_chooser_default_map (GtkWidget *widget)
}
}
- volumes_bookmarks_changed_cb (impl->file_system, impl);
+ volumes_bookmarks_changed_cb (impl->priv->file_system, impl);
settings_load (impl);
@@ -6131,7 +5427,7 @@ gtk_file_chooser_default_unmap (GtkWidget *widget)
settings_save (impl);
cancel_all_operations (impl);
- impl->reload_state = RELOAD_EMPTY;
+ impl->priv->reload_state = RELOAD_EMPTY;
GTK_WIDGET_CLASS (_gtk_file_chooser_default_parent_class)->unmap (widget);
}
@@ -6145,7 +5441,7 @@ gtk_file_chooser_default_unmap (GtkWidget *widget)
dir_b = g_value_get_boolean (_gtk_file_system_model_get_value (fs_model, b, MODEL_COL_IS_FOLDER));
\
\
if (dir_a != dir_b)
\
- return impl->list_sort_ascending ? (dir_a ? -1 : 1) : (dir_a ? 1 : -1) /* Directories *always* go first
*/
+ return impl->priv->list_sort_ascending ? (dir_a ? -1 : 1) : (dir_a ? 1 : -1) /* Directories *always* go
first */
/* Sort callback for the filename column */
static gint
@@ -6226,9 +5522,9 @@ list_sort_column_changed_cb (GtkTreeSortable *sortable,
if (gtk_tree_sortable_get_sort_column_id (sortable, &sort_column_id, &sort_type))
{
- impl->list_sort_ascending = (sort_type == GTK_SORT_ASCENDING);
- impl->sort_column = sort_column_id;
- impl->sort_order = sort_type;
+ impl->priv->list_sort_ascending = (sort_type == GTK_SORT_ASCENDING);
+ impl->priv->sort_column = sort_column_id;
+ impl->priv->sort_order = sort_type;
}
}
@@ -6266,18 +5562,18 @@ load_set_model (GtkFileChooserDefault *impl)
{
profile_start ("start", NULL);
- g_assert (impl->browse_files_model != NULL);
+ g_assert (impl->priv->browse_files_model != NULL);
profile_msg (" gtk_tree_view_set_model start", NULL);
- gtk_tree_view_set_model (GTK_TREE_VIEW (impl->browse_files_tree_view),
- GTK_TREE_MODEL (impl->browse_files_model));
- gtk_tree_view_columns_autosize (GTK_TREE_VIEW (impl->browse_files_tree_view));
- gtk_tree_view_set_search_column (GTK_TREE_VIEW (impl->browse_files_tree_view),
+ gtk_tree_view_set_model (GTK_TREE_VIEW (impl->priv->browse_files_tree_view),
+ GTK_TREE_MODEL (impl->priv->browse_files_model));
+ gtk_tree_view_columns_autosize (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
+ gtk_tree_view_set_search_column (GTK_TREE_VIEW (impl->priv->browse_files_tree_view),
MODEL_COL_NAME);
file_list_set_sort_column_ids (impl);
set_sort_column (impl);
profile_msg (" gtk_tree_view_set_model end", NULL);
- impl->list_sort_ascending = TRUE;
+ impl->priv->list_sort_ascending = TRUE;
profile_end ("end", NULL);
}
@@ -6291,12 +5587,12 @@ load_timeout_cb (gpointer data)
profile_start ("start", NULL);
impl = GTK_FILE_CHOOSER_DEFAULT (data);
- g_assert (impl->load_state == LOAD_PRELOAD);
- g_assert (impl->load_timeout_id != 0);
- g_assert (impl->browse_files_model != NULL);
+ g_assert (impl->priv->load_state == LOAD_PRELOAD);
+ g_assert (impl->priv->load_timeout_id != 0);
+ g_assert (impl->priv->browse_files_model != NULL);
- impl->load_timeout_id = 0;
- impl->load_state = LOAD_LOADING;
+ impl->priv->load_timeout_id = 0;
+ impl->priv->load_state = LOAD_LOADING;
load_set_model (impl);
@@ -6309,33 +5605,33 @@ load_timeout_cb (gpointer data)
static void
load_setup_timer (GtkFileChooserDefault *impl)
{
- g_assert (impl->load_timeout_id == 0);
- g_assert (impl->load_state != LOAD_PRELOAD);
+ g_assert (impl->priv->load_timeout_id == 0);
+ g_assert (impl->priv->load_state != LOAD_PRELOAD);
- impl->load_timeout_id = gdk_threads_add_timeout (MAX_LOADING_TIME, load_timeout_cb, impl);
- impl->load_state = LOAD_PRELOAD;
+ impl->priv->load_timeout_id = gdk_threads_add_timeout (MAX_LOADING_TIME, load_timeout_cb, impl);
+ impl->priv->load_state = LOAD_PRELOAD;
}
-/* Removes the load timeout; changes the impl->load_state to the specified value. */
+/* Removes the load timeout; changes the impl->priv->load_state to the specified value. */
static void
load_remove_timer (GtkFileChooserDefault *impl, LoadState new_load_state)
{
- if (impl->load_timeout_id != 0)
+ if (impl->priv->load_timeout_id != 0)
{
- g_assert (impl->load_state == LOAD_PRELOAD);
+ g_assert (impl->priv->load_state == LOAD_PRELOAD);
- g_source_remove (impl->load_timeout_id);
- impl->load_timeout_id = 0;
+ g_source_remove (impl->priv->load_timeout_id);
+ impl->priv->load_timeout_id = 0;
}
else
- g_assert (impl->load_state == LOAD_EMPTY ||
- impl->load_state == LOAD_LOADING ||
- impl->load_state == LOAD_FINISHED);
+ g_assert (impl->priv->load_state == LOAD_EMPTY ||
+ impl->priv->load_state == LOAD_LOADING ||
+ impl->priv->load_state == LOAD_FINISHED);
g_assert (new_load_state == LOAD_EMPTY ||
new_load_state == LOAD_LOADING ||
new_load_state == LOAD_FINISHED);
- impl->load_state = new_load_state;
+ impl->priv->load_state = new_load_state;
}
/* Selects the first row in the file list */
@@ -6346,7 +5642,7 @@ browse_files_select_first_row (GtkFileChooserDefault *impl)
GtkTreeIter dummy_iter;
GtkTreeModel *tree_model;
- tree_model = gtk_tree_view_get_model (GTK_TREE_VIEW (impl->browse_files_tree_view));
+ tree_model = gtk_tree_view_get_model (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
if (!tree_model)
return;
@@ -6355,7 +5651,7 @@ browse_files_select_first_row (GtkFileChooserDefault *impl)
/* If the list is empty, do nothing. */
if (gtk_tree_model_get_iter (tree_model, &dummy_iter, path))
- gtk_tree_view_set_cursor (GTK_TREE_VIEW (impl->browse_files_tree_view), path, NULL, FALSE);
+ gtk_tree_view_set_cursor (GTK_TREE_VIEW (impl->priv->browse_files_tree_view), path, NULL, FALSE);
gtk_tree_path_free (path);
}
@@ -6380,7 +5676,7 @@ center_selected_row_foreach_cb (GtkTreeModel *model,
if (closure->already_centered)
return;
- gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (closure->impl->browse_files_tree_view), path, NULL, TRUE,
0.5, 0.0);
+ gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (closure->impl->priv->browse_files_tree_view), path, NULL,
TRUE, 0.5, 0.0);
closure->already_centered = TRUE;
}
@@ -6394,7 +5690,7 @@ browse_files_center_selected_row (GtkFileChooserDefault *impl)
closure.impl = impl;
closure.already_centered = FALSE;
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
gtk_tree_selection_selected_foreach (selection, center_selected_row_foreach_cb, &closure);
}
@@ -6408,16 +5704,16 @@ show_and_select_files (GtkFileChooserDefault *impl,
gboolean selected_a_file;
GSList *walk;
- g_assert (impl->load_state == LOAD_FINISHED);
- g_assert (impl->browse_files_model != NULL);
+ g_assert (impl->priv->load_state == LOAD_FINISHED);
+ g_assert (impl->priv->browse_files_model != NULL);
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
- fsmodel = GTK_FILE_SYSTEM_MODEL (gtk_tree_view_get_model (GTK_TREE_VIEW (impl->browse_files_tree_view)));
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
+ fsmodel = GTK_FILE_SYSTEM_MODEL (gtk_tree_view_get_model (GTK_TREE_VIEW
(impl->priv->browse_files_tree_view)));
- g_assert (fsmodel == impl->browse_files_model);
+ g_assert (fsmodel == impl->priv->browse_files_model);
- enabled_hidden = impl->show_hidden;
- removed_filters = (impl->current_filter == NULL);
+ enabled_hidden = impl->priv->show_hidden;
+ removed_filters = (impl->priv->current_filter == NULL);
selected_a_file = FALSE;
@@ -6471,7 +5767,7 @@ show_and_select_files (GtkFileChooserDefault *impl,
gtk_tree_selection_select_iter (selection, &iter);
path = gtk_tree_model_get_path (GTK_TREE_MODEL (fsmodel), &iter);
- gtk_tree_view_set_cursor (GTK_TREE_VIEW (impl->browse_files_tree_view),
+ gtk_tree_view_set_cursor (GTK_TREE_VIEW (impl->priv->browse_files_tree_view),
path, NULL, FALSE);
gtk_tree_path_free (path);
@@ -6488,12 +5784,12 @@ show_and_select_files (GtkFileChooserDefault *impl,
static void
pending_select_files_process (GtkFileChooserDefault *impl)
{
- g_assert (impl->load_state == LOAD_FINISHED);
- g_assert (impl->browse_files_model != NULL);
+ g_assert (impl->priv->load_state == LOAD_FINISHED);
+ g_assert (impl->priv->browse_files_model != NULL);
- if (impl->pending_select_files)
+ if (impl->priv->pending_select_files)
{
- show_and_select_files (impl, impl->pending_select_files);
+ show_and_select_files (impl, impl->priv->pending_select_files);
pending_select_files_free (impl);
browse_files_center_selected_row (impl);
}
@@ -6506,12 +5802,12 @@ pending_select_files_process (GtkFileChooserDefault *impl)
* that case, the chooser's selection should be what the caller expects,
* as the user can't see that something else got selected. See bug #165264.
*/
- if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN &&
+ if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN &&
gtk_widget_get_mapped (GTK_WIDGET (impl)))
browse_files_select_first_row (impl);
}
- g_assert (impl->pending_select_files == NULL);
+ g_assert (impl->priv->pending_select_files == NULL);
}
static void
@@ -6520,7 +5816,7 @@ show_error_on_reading_current_folder (GtkFileChooserDefault *impl, GError *error
GFileInfo *info;
char *msg;
- info = g_file_query_info (impl->current_folder,
+ info = g_file_query_info (impl->priv->current_folder,
G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME,
G_FILE_QUERY_INFO_NONE,
NULL,
@@ -6548,12 +5844,12 @@ browse_files_model_finished_loading_cb (GtkFileSystemModel *model,
if (error)
show_error_on_reading_current_folder (impl, error);
- if (impl->load_state == LOAD_PRELOAD)
+ if (impl->priv->load_state == LOAD_PRELOAD)
{
load_remove_timer (impl, LOAD_FINISHED);
load_set_model (impl);
}
- else if (impl->load_state == LOAD_LOADING)
+ else if (impl->priv->load_state == LOAD_LOADING)
{
/* Nothing */
}
@@ -6566,9 +5862,9 @@ browse_files_model_finished_loading_cb (GtkFileSystemModel *model,
return;
}
- g_assert (impl->load_timeout_id == 0);
+ g_assert (impl->priv->load_timeout_id == 0);
- impl->load_state = LOAD_FINISHED;
+ impl->priv->load_state = LOAD_FINISHED;
pending_select_files_process (impl);
set_busy_cursor (impl, FALSE);
@@ -6585,14 +5881,14 @@ stop_loading_and_clear_list_model (GtkFileChooserDefault *impl,
{
load_remove_timer (impl, LOAD_EMPTY);
- if (impl->browse_files_model)
+ if (impl->priv->browse_files_model)
{
- g_object_unref (impl->browse_files_model);
- impl->browse_files_model = NULL;
+ g_object_unref (impl->priv->browse_files_model);
+ impl->priv->browse_files_model = NULL;
}
if (remove_from_treeview)
- gtk_tree_view_set_model (GTK_TREE_VIEW (impl->browse_files_tree_view), NULL);
+ gtk_tree_view_set_model (GTK_TREE_VIEW (impl->priv->browse_files_tree_view), NULL);
}
static char *
@@ -6779,8 +6075,8 @@ file_system_model_set (GtkFileSystemModel *model,
{
gboolean sensitive = TRUE;
- if (!(impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER
- || impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER))
+ if (!(impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER
+ || impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER))
{
sensitive = TRUE; /* for file modes... */
}
@@ -6807,7 +6103,7 @@ file_system_model_set (GtkFileSystemModel *model,
{
if (g_file_info_has_attribute (info, G_FILE_ATTRIBUTE_STANDARD_ICON))
{
- g_value_take_object (value, _gtk_file_info_render_icon (info, GTK_WIDGET (impl),
impl->icon_size));
+ g_value_take_object (value, _gtk_file_info_render_icon (info, GTK_WIDGET (impl),
impl->priv->icon_size));
}
else
{
@@ -6815,11 +6111,11 @@ file_system_model_set (GtkFileSystemModel *model,
GtkTreePath *path, *start, *end;
GtkTreeIter iter;
- if (impl->browse_files_tree_view == NULL ||
+ if (impl->priv->browse_files_tree_view == NULL ||
g_file_info_has_attribute (info, "filechooser::queried"))
return FALSE;
- tree_model = gtk_tree_view_get_model (GTK_TREE_VIEW (impl->browse_files_tree_view));
+ tree_model = gtk_tree_view_get_model (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
if (tree_model != GTK_TREE_MODEL (model))
return FALSE;
@@ -6827,7 +6123,7 @@ file_system_model_set (GtkFileSystemModel *model,
&iter,
file))
g_assert_not_reached ();
- if (!gtk_tree_view_get_visible_range (GTK_TREE_VIEW (impl->browse_files_tree_view), &start,
&end))
+ if (!gtk_tree_view_get_visible_range (GTK_TREE_VIEW (impl->priv->browse_files_tree_view),
&start, &end))
return FALSE;
path = gtk_tree_model_get_path (tree_model, &iter);
if (gtk_tree_path_compare (start, path) != 1 &&
@@ -6893,7 +6189,7 @@ static gboolean
set_list_model (GtkFileChooserDefault *impl,
GError **error)
{
- g_assert (impl->current_folder != NULL);
+ g_assert (impl->priv->current_folder != NULL);
profile_start ("start", NULL);
@@ -6901,31 +6197,31 @@ set_list_model (GtkFileChooserDefault *impl,
set_busy_cursor (impl, TRUE);
- impl->browse_files_model =
- _gtk_file_system_model_new_for_directory (impl->current_folder,
+ impl->priv->browse_files_model =
+ _gtk_file_system_model_new_for_directory (impl->priv->current_folder,
MODEL_ATTRIBUTES,
file_system_model_set,
impl,
MODEL_COLUMN_TYPES);
- _gtk_file_system_model_set_show_hidden (impl->browse_files_model, impl->show_hidden);
+ _gtk_file_system_model_set_show_hidden (impl->priv->browse_files_model, impl->priv->show_hidden);
profile_msg (" set sort function", NULL);
- gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->browse_files_model), MODEL_COL_NAME,
name_sort_func, impl, NULL);
- gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->browse_files_model), MODEL_COL_SIZE,
size_sort_func, impl, NULL);
- gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->browse_files_model), MODEL_COL_MTIME,
mtime_sort_func, impl, NULL);
- gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (impl->browse_files_model), NULL, NULL, NULL);
+ gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->priv->browse_files_model), MODEL_COL_NAME,
name_sort_func, impl, NULL);
+ gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->priv->browse_files_model), MODEL_COL_SIZE,
size_sort_func, impl, NULL);
+ gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->priv->browse_files_model), MODEL_COL_MTIME,
mtime_sort_func, impl, NULL);
+ gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (impl->priv->browse_files_model), NULL, NULL,
NULL);
set_sort_column (impl);
- impl->list_sort_ascending = TRUE;
- g_signal_connect (impl->browse_files_model, "sort-column-changed",
+ impl->priv->list_sort_ascending = TRUE;
+ g_signal_connect (impl->priv->browse_files_model, "sort-column-changed",
G_CALLBACK (list_sort_column_changed_cb), impl);
load_setup_timer (impl); /* This changes the state to LOAD_PRELOAD */
- g_signal_connect (impl->browse_files_model, "finished-loading",
+ g_signal_connect (impl->priv->browse_files_model, "finished-loading",
G_CALLBACK (browse_files_model_finished_loading_cb), impl);
- _gtk_file_system_model_set_filter (impl->browse_files_model, impl->current_filter);
+ _gtk_file_system_model_set_filter (impl->priv->browse_files_model, impl->priv->current_filter);
profile_end ("end", NULL);
@@ -6977,38 +6273,38 @@ update_chooser_entry (GtkFileChooserDefault *impl)
struct update_chooser_entry_selected_foreach_closure closure;
/* no need to update the file chooser's entry if there's no entry */
- if (impl->operation_mode == OPERATION_MODE_SEARCH ||
- !impl->location_entry)
+ if (impl->priv->operation_mode == OPERATION_MODE_SEARCH ||
+ !impl->priv->location_entry)
return;
- if (!(impl->action == GTK_FILE_CHOOSER_ACTION_SAVE
- || impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER
- || ((impl->action == GTK_FILE_CHOOSER_ACTION_OPEN
- || impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
- && impl->location_mode == LOCATION_MODE_FILENAME_ENTRY)))
+ if (!(impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE
+ || impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER
+ || ((impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN
+ || impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+ && impl->priv->location_mode == LOCATION_MODE_FILENAME_ENTRY)))
return;
- g_assert (impl->location_entry != NULL);
+ g_assert (impl->priv->location_entry != NULL);
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
closure.num_selected = 0;
gtk_tree_selection_selected_foreach (selection, update_chooser_entry_selected_foreach, &closure);
if (closure.num_selected == 0)
{
- if (impl->operation_mode == OPERATION_MODE_RECENT)
- _gtk_file_chooser_entry_set_base_folder (GTK_FILE_CHOOSER_ENTRY (impl->location_entry), NULL);
+ if (impl->priv->operation_mode == OPERATION_MODE_RECENT)
+ _gtk_file_chooser_entry_set_base_folder (GTK_FILE_CHOOSER_ENTRY (impl->priv->location_entry), NULL);
else
goto maybe_clear_entry;
}
else if (closure.num_selected == 1)
{
- if (impl->operation_mode == OPERATION_MODE_BROWSE)
+ if (impl->priv->operation_mode == OPERATION_MODE_BROWSE)
{
GFileInfo *info;
gboolean change_entry;
- info = _gtk_file_system_model_get_info (impl->browse_files_model, &closure.first_selected_iter);
+ info = _gtk_file_system_model_get_info (impl->priv->browse_files_model,
&closure.first_selected_iter);
/* If the cursor moved to the row of the newly created folder,
* retrieving info will return NULL.
@@ -7016,13 +6312,13 @@ update_chooser_entry (GtkFileChooserDefault *impl)
if (!info)
return;
- g_free (impl->browse_files_last_selected_name);
- impl->browse_files_last_selected_name =
+ g_free (impl->priv->browse_files_last_selected_name);
+ impl->priv->browse_files_last_selected_name =
g_strdup (g_file_info_get_display_name (info));
- if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
- impl->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
- impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+ if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
+ impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
+ impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
{
/* Don't change the name when clicking on a folder... */
change_entry = (! _gtk_file_info_consider_as_directory (info));
@@ -7032,52 +6328,52 @@ update_chooser_entry (GtkFileChooserDefault *impl)
if (change_entry)
{
- gtk_entry_set_text (GTK_ENTRY (impl->location_entry), impl->browse_files_last_selected_name);
+ gtk_entry_set_text (GTK_ENTRY (impl->priv->location_entry),
impl->priv->browse_files_last_selected_name);
- if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
- _gtk_file_chooser_entry_select_filename (GTK_FILE_CHOOSER_ENTRY (impl->location_entry));
+ if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+ _gtk_file_chooser_entry_select_filename (GTK_FILE_CHOOSER_ENTRY
(impl->priv->location_entry));
}
return;
}
- else if (impl->operation_mode == OPERATION_MODE_RECENT
- && impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+ else if (impl->priv->operation_mode == OPERATION_MODE_RECENT
+ && impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE)
{
GFile *folder;
/* Set the base folder on the name entry, so it will do completion relative to the correct
recent-folder */
- gtk_tree_model_get (GTK_TREE_MODEL (impl->recent_model), &closure.first_selected_iter,
+ gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->recent_model), &closure.first_selected_iter,
MODEL_COL_FILE, &folder,
-1);
- _gtk_file_chooser_entry_set_base_folder (GTK_FILE_CHOOSER_ENTRY (impl->location_entry), folder);
+ _gtk_file_chooser_entry_set_base_folder (GTK_FILE_CHOOSER_ENTRY (impl->priv->location_entry),
folder);
g_object_unref (folder);
return;
}
}
else
{
- g_assert (!(impl->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
- impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER));
+ g_assert (!(impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
+ impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER));
/* Multiple selection, so just clear the entry. */
- g_free (impl->browse_files_last_selected_name);
- impl->browse_files_last_selected_name = NULL;
+ g_free (impl->priv->browse_files_last_selected_name);
+ impl->priv->browse_files_last_selected_name = NULL;
- gtk_entry_set_text (GTK_ENTRY (impl->location_entry), "");
+ gtk_entry_set_text (GTK_ENTRY (impl->priv->location_entry), "");
return;
}
maybe_clear_entry:
- if ((impl->action == GTK_FILE_CHOOSER_ACTION_OPEN || impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
- && impl->browse_files_last_selected_name)
+ if ((impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN || impl->priv->action ==
GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+ && impl->priv->browse_files_last_selected_name)
{
const char *entry_text;
int len;
gboolean clear_entry;
- entry_text = gtk_entry_get_text (GTK_ENTRY (impl->location_entry));
+ entry_text = gtk_entry_get_text (GTK_ENTRY (impl->priv->location_entry));
len = strlen (entry_text);
if (len != 0)
{
@@ -7089,17 +6385,17 @@ update_chooser_entry (GtkFileChooserDefault *impl)
gchar *tmp;
tmp = g_strndup (entry_text, len - 1);
- clear_entry = (compare_utf8_filenames (impl->browse_files_last_selected_name, tmp) == 0);
+ clear_entry = (compare_utf8_filenames (impl->priv->browse_files_last_selected_name, tmp) == 0);
g_free (tmp);
}
else
- clear_entry = (compare_utf8_filenames (impl->browse_files_last_selected_name, entry_text) == 0);
+ clear_entry = (compare_utf8_filenames (impl->priv->browse_files_last_selected_name, entry_text)
== 0);
}
else
clear_entry = FALSE;
if (clear_entry)
- gtk_entry_set_text (GTK_ENTRY (impl->location_entry), "");
+ gtk_entry_set_text (GTK_ENTRY (impl->priv->location_entry), "");
}
}
@@ -7132,10 +6428,10 @@ update_current_folder_mount_enclosing_volume_cb (GCancellable *cancellabl
struct UpdateCurrentFolderData *data = user_data;
GtkFileChooserDefault *impl = data->impl;
- if (cancellable != impl->update_current_folder_cancellable)
+ if (cancellable != impl->priv->update_current_folder_cancellable)
goto out;
- impl->update_current_folder_cancellable = NULL;
+ impl->priv->update_current_folder_cancellable = NULL;
set_busy_cursor (impl, FALSE);
if (cancelled)
@@ -7144,7 +6440,7 @@ update_current_folder_mount_enclosing_volume_cb (GCancellable *cancellabl
if (error)
{
error_changing_folder_dialog (data->impl, data->file, g_error_copy (error));
- impl->reload_state = RELOAD_EMPTY;
+ impl->priv->reload_state = RELOAD_EMPTY;
goto out;
}
@@ -7167,11 +6463,11 @@ update_current_folder_get_info_cb (GCancellable *cancellable,
struct UpdateCurrentFolderData *data = user_data;
GtkFileChooserDefault *impl = data->impl;
- if (cancellable != impl->update_current_folder_cancellable)
+ if (cancellable != impl->priv->update_current_folder_cancellable)
goto out;
- impl->update_current_folder_cancellable = NULL;
- impl->reload_state = RELOAD_EMPTY;
+ impl->priv->update_current_folder_cancellable = NULL;
+ impl->priv->reload_state = RELOAD_EMPTY;
set_busy_cursor (impl, FALSE);
@@ -7194,8 +6490,8 @@ update_current_folder_get_info_cb (GCancellable *cancellable,
set_busy_cursor (impl, TRUE);
- impl->update_current_folder_cancellable =
- _gtk_file_system_mount_enclosing_volume (impl->file_system, data->file,
+ impl->priv->update_current_folder_cancellable =
+ _gtk_file_system_mount_enclosing_volume (impl->priv->file_system, data->file,
mount_operation,
update_current_folder_mount_enclosing_volume_cb,
data);
@@ -7220,10 +6516,10 @@ update_current_folder_get_info_cb (GCancellable *cancellable,
g_object_unref (cancellable);
/* restart the update current folder operation */
- impl->reload_state = RELOAD_HAS_FOLDER;
+ impl->priv->reload_state = RELOAD_HAS_FOLDER;
- impl->update_current_folder_cancellable =
- _gtk_file_system_get_info (impl->file_system, data->file,
+ impl->priv->update_current_folder_cancellable =
+ _gtk_file_system_get_info (impl->priv->file_system, data->file,
"standard::type",
update_current_folder_get_info_cb,
data);
@@ -7264,38 +6560,38 @@ update_current_folder_get_info_cb (GCancellable *cancellable,
if (! _gtk_file_info_consider_as_directory (info))
goto out;
- _gtk_path_bar_set_file (GTK_PATH_BAR (impl->browse_path_bar), data->file, data->keep_trail);
+ _gtk_path_bar_set_file (GTK_PATH_BAR (impl->priv->browse_path_bar), data->file, data->keep_trail);
- if (impl->current_folder != data->file)
+ if (impl->priv->current_folder != data->file)
{
- if (impl->current_folder)
- g_object_unref (impl->current_folder);
+ if (impl->priv->current_folder)
+ g_object_unref (impl->priv->current_folder);
- impl->current_folder = g_object_ref (data->file);
+ impl->priv->current_folder = g_object_ref (data->file);
}
- impl->reload_state = RELOAD_HAS_FOLDER;
+ impl->priv->reload_state = RELOAD_HAS_FOLDER;
/* Update the widgets that may trigger a folder change themselves. */
- if (!impl->changing_folder)
+ if (!impl->priv->changing_folder)
{
- impl->changing_folder = TRUE;
+ impl->priv->changing_folder = TRUE;
shortcuts_update_current_folder (impl);
- impl->changing_folder = FALSE;
+ impl->priv->changing_folder = FALSE;
}
/* Set the folder on the save entry */
- if (impl->location_entry)
+ if (impl->priv->location_entry)
{
- _gtk_file_chooser_entry_set_base_folder (GTK_FILE_CHOOSER_ENTRY (impl->location_entry),
- impl->current_folder);
+ _gtk_file_chooser_entry_set_base_folder (GTK_FILE_CHOOSER_ENTRY (impl->priv->location_entry),
+ impl->priv->current_folder);
if (data->clear_entry)
- gtk_entry_set_text (GTK_ENTRY (impl->location_entry), "");
+ gtk_entry_set_text (GTK_ENTRY (impl->priv->location_entry), "");
}
/* Create a new list model. This is slightly evil; we store the result value
@@ -7338,7 +6634,7 @@ gtk_file_chooser_default_update_current_folder (GtkFileChooser *chooser,
operation_mode_set (impl, OPERATION_MODE_BROWSE);
- if (impl->local_only && !_gtk_file_has_native_path (file))
+ if (impl->priv->local_only && !_gtk_file_has_native_path (file))
{
g_set_error_literal (error,
GTK_FILE_CHOOSER_ERROR,
@@ -7350,8 +6646,8 @@ gtk_file_chooser_default_update_current_folder (GtkFileChooser *chooser,
return FALSE;
}
- if (impl->update_current_folder_cancellable)
- g_cancellable_cancel (impl->update_current_folder_cancellable);
+ if (impl->priv->update_current_folder_cancellable)
+ g_cancellable_cancel (impl->priv->update_current_folder_cancellable);
/* Test validity of path here. */
data = g_new0 (struct UpdateCurrentFolderData, 1);
@@ -7360,10 +6656,10 @@ gtk_file_chooser_default_update_current_folder (GtkFileChooser *chooser,
data->keep_trail = keep_trail;
data->clear_entry = clear_entry;
- impl->reload_state = RELOAD_HAS_FOLDER;
+ impl->priv->reload_state = RELOAD_HAS_FOLDER;
- impl->update_current_folder_cancellable =
- _gtk_file_system_get_info (impl->file_system, file,
+ impl->priv->update_current_folder_cancellable =
+ _gtk_file_system_get_info (impl->priv->file_system, file,
"standard::type",
update_current_folder_get_info_cb,
data);
@@ -7380,12 +6676,12 @@ gtk_file_chooser_default_get_current_folder (GtkFileChooser *chooser)
{
GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (chooser);
- if (impl->operation_mode == OPERATION_MODE_SEARCH ||
- impl->operation_mode == OPERATION_MODE_RECENT)
+ if (impl->priv->operation_mode == OPERATION_MODE_SEARCH ||
+ impl->priv->operation_mode == OPERATION_MODE_RECENT)
return NULL;
- if (impl->current_folder)
- return g_object_ref (impl->current_folder);
+ if (impl->priv->current_folder)
+ return g_object_ref (impl->priv->current_folder);
return NULL;
}
@@ -7396,11 +6692,11 @@ gtk_file_chooser_default_set_current_name (GtkFileChooser *chooser,
{
GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (chooser);
- g_return_if_fail (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
- impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER);
+ g_return_if_fail (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
+ impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER);
pending_select_files_free (impl);
- gtk_entry_set_text (GTK_ENTRY (impl->location_entry), name);
+ gtk_entry_set_text (GTK_ENTRY (impl->priv->location_entry), name);
}
static gboolean
@@ -7417,20 +6713,20 @@ gtk_file_chooser_default_select_file (GtkFileChooser *chooser,
if (!parent_file)
return gtk_file_chooser_set_current_folder_file (chooser, file, error);
- if (impl->operation_mode == OPERATION_MODE_SEARCH ||
- impl->operation_mode == OPERATION_MODE_RECENT ||
- impl->load_state == LOAD_EMPTY)
+ if (impl->priv->operation_mode == OPERATION_MODE_SEARCH ||
+ impl->priv->operation_mode == OPERATION_MODE_RECENT ||
+ impl->priv->load_state == LOAD_EMPTY)
{
same_path = FALSE;
}
else
{
- g_assert (impl->current_folder != NULL);
+ g_assert (impl->priv->current_folder != NULL);
- same_path = g_file_equal (parent_file, impl->current_folder);
+ same_path = g_file_equal (parent_file, impl->priv->current_folder);
}
- if (same_path && impl->load_state == LOAD_FINISHED)
+ if (same_path && impl->priv->load_state == LOAD_FINISHED)
{
gboolean result;
GSList files;
@@ -7463,13 +6759,13 @@ gtk_file_chooser_default_unselect_file (GtkFileChooser *chooser,
GFile *file)
{
GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (chooser);
- GtkTreeView *tree_view = GTK_TREE_VIEW (impl->browse_files_tree_view);
+ GtkTreeView *tree_view = GTK_TREE_VIEW (impl->priv->browse_files_tree_view);
GtkTreeIter iter;
- if (!impl->browse_files_model)
+ if (!impl->priv->browse_files_model)
return;
- if (!_gtk_file_system_model_get_iter_for_file (impl->browse_files_model,
+ if (!_gtk_file_system_model_get_iter_for_file (impl->priv->browse_files_model,
&iter,
file))
return;
@@ -7489,7 +6785,7 @@ maybe_select (GtkTreeModel *model,
gboolean is_sensitive;
gboolean is_folder;
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
gtk_tree_model_get (model, iter,
MODEL_COL_IS_FOLDER, &is_folder,
@@ -7497,8 +6793,8 @@ maybe_select (GtkTreeModel *model,
-1);
if (is_sensitive &&
- ((is_folder && impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER) ||
- (!is_folder && impl->action == GTK_FILE_CHOOSER_ACTION_OPEN)))
+ ((is_folder && impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER) ||
+ (!is_folder && impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN)))
gtk_tree_selection_select_iter (selection, iter);
else
gtk_tree_selection_unselect_iter (selection, iter);
@@ -7511,18 +6807,18 @@ gtk_file_chooser_default_select_all (GtkFileChooser *chooser)
{
GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (chooser);
- if (impl->operation_mode == OPERATION_MODE_SEARCH ||
- impl->operation_mode == OPERATION_MODE_RECENT)
+ if (impl->priv->operation_mode == OPERATION_MODE_SEARCH ||
+ impl->priv->operation_mode == OPERATION_MODE_RECENT)
{
GtkTreeSelection *selection;
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
gtk_tree_selection_select_all (selection);
return;
}
- if (impl->select_multiple)
- gtk_tree_model_foreach (GTK_TREE_MODEL (impl->browse_files_model),
+ if (impl->priv->select_multiple)
+ gtk_tree_model_foreach (GTK_TREE_MODEL (impl->priv->browse_files_model),
maybe_select, impl);
}
@@ -7530,7 +6826,7 @@ static void
gtk_file_chooser_default_unselect_all (GtkFileChooser *chooser)
{
GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (chooser);
- GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
+ GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW
(impl->priv->browse_files_tree_view));
gtk_tree_selection_unselect_all (selection);
pending_select_files_free (impl);
@@ -7559,13 +6855,13 @@ check_save_entry (GtkFileChooserDefault *impl,
GFile *file;
GError *error;
- g_assert (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE
- || impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER
- || ((impl->action == GTK_FILE_CHOOSER_ACTION_OPEN
- || impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
- && impl->location_mode == LOCATION_MODE_FILENAME_ENTRY));
+ g_assert (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE
+ || impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER
+ || ((impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN
+ || impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+ && impl->priv->location_mode == LOCATION_MODE_FILENAME_ENTRY));
- chooser_entry = GTK_FILE_CHOOSER_ENTRY (impl->location_entry);
+ chooser_entry = GTK_FILE_CHOOSER_ENTRY (impl->priv->location_entry);
if (strlen (gtk_entry_get_text (GTK_ENTRY (chooser_entry))) == 0)
{
@@ -7641,7 +6937,7 @@ get_files_foreach (GtkTreeModel *model,
GtkFileSystemModel *fs_model;
info = data;
- fs_model = info->impl->browse_files_model;
+ fs_model = info->impl->priv->browse_files_model;
file = _gtk_file_system_model_get_file (fs_model, iter);
if (!file)
@@ -7664,12 +6960,12 @@ gtk_file_chooser_default_get_files (GtkFileChooser *chooser)
info.result = NULL;
info.file_from_entry = NULL;
- if (impl->operation_mode == OPERATION_MODE_SEARCH)
+ if (impl->priv->operation_mode == OPERATION_MODE_SEARCH)
return search_get_selected_files (impl);
- if (impl->operation_mode == OPERATION_MODE_RECENT)
+ if (impl->priv->operation_mode == OPERATION_MODE_RECENT)
{
- if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+ if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE)
{
file_list_seen = TRUE;
goto file_entry;
@@ -7685,14 +6981,14 @@ gtk_file_chooser_default_get_files (GtkFileChooser *chooser)
current_focus = NULL;
file_list_seen = FALSE;
- if (current_focus == impl->browse_files_tree_view)
+ if (current_focus == impl->priv->browse_files_tree_view)
{
GtkTreeSelection *selection;
file_list:
file_list_seen = TRUE;
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
gtk_tree_selection_selected_foreach (selection, get_files_foreach, &info);
/* If there is no selection in the file list, we probably have this situation:
@@ -7703,10 +6999,10 @@ gtk_file_chooser_default_get_files (GtkFileChooser *chooser)
* So we want the selection to be "bar/foo.txt". Jump to the case for the
* filename entry to see if that is the case.
*/
- if (info.result == NULL && impl->location_entry)
+ if (info.result == NULL && impl->priv->location_entry)
goto file_entry;
}
- else if (impl->location_entry && current_focus == impl->location_entry)
+ else if (impl->priv->location_entry && current_focus == impl->priv->location_entry)
{
gboolean is_well_formed, is_empty, is_file_part_empty, is_folder;
@@ -7720,7 +7016,7 @@ gtk_file_chooser_default_get_files (GtkFileChooser *chooser)
if (!is_well_formed)
return NULL;
- if (is_file_part_empty && impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+ if (is_file_part_empty && impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE)
{
g_object_unref (info.file_from_entry);
return NULL;
@@ -7733,15 +7029,15 @@ gtk_file_chooser_default_get_files (GtkFileChooser *chooser)
else
return NULL;
}
- else if (impl->toplevel_last_focus_widget == impl->browse_files_tree_view)
+ else if (impl->priv->toplevel_last_focus_widget == impl->priv->browse_files_tree_view)
goto file_list;
- else if (impl->location_entry && impl->toplevel_last_focus_widget == impl->location_entry)
+ else if (impl->priv->location_entry && impl->priv->toplevel_last_focus_widget ==
impl->priv->location_entry)
goto file_entry;
else
{
/* The focus is on a dialog's action area button or something else */
- if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
- impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+ if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
+ impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
goto file_entry;
else
goto file_list;
@@ -7751,7 +7047,7 @@ gtk_file_chooser_default_get_files (GtkFileChooser *chooser)
/* If there's no folder selected, and we're in SELECT_FOLDER mode, then we
* fall back to the current directory */
- if (impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER &&
+ if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER &&
info.result == NULL)
{
GFile *current_folder;
@@ -7770,8 +7066,8 @@ gtk_file_chooser_default_get_preview_file (GtkFileChooser *chooser)
{
GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (chooser);
- if (impl->preview_file)
- return g_object_ref (impl->preview_file);
+ if (impl->priv->preview_file)
+ return g_object_ref (impl->priv->preview_file);
else
return NULL;
}
@@ -7781,7 +7077,7 @@ gtk_file_chooser_default_get_file_system (GtkFileChooser *chooser)
{
GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (chooser);
- return impl->file_system;
+ return impl->priv->file_system;
}
/* Shows or hides the filter widgets */
@@ -7790,9 +7086,9 @@ show_filters (GtkFileChooserDefault *impl,
gboolean show)
{
if (show)
- gtk_widget_show (impl->filter_combo_hbox);
+ gtk_widget_show (impl->priv->filter_combo_hbox);
else
- gtk_widget_hide (impl->filter_combo_hbox);
+ gtk_widget_hide (impl->priv->filter_combo_hbox);
}
static void
@@ -7802,22 +7098,22 @@ gtk_file_chooser_default_add_filter (GtkFileChooser *chooser,
GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (chooser);
const gchar *name;
- if (g_slist_find (impl->filters, filter))
+ if (g_slist_find (impl->priv->filters, filter))
{
g_warning ("gtk_file_chooser_add_filter() called on filter already in list\n");
return;
}
g_object_ref_sink (filter);
- impl->filters = g_slist_append (impl->filters, filter);
+ impl->priv->filters = g_slist_append (impl->priv->filters, filter);
name = gtk_file_filter_get_name (filter);
if (!name)
name = "Untitled filter"; /* Place-holder, doesn't need to be marked for translation */
- gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (impl->filter_combo), name);
+ gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (impl->priv->filter_combo), name);
- if (!g_slist_find (impl->filters, impl->current_filter))
+ if (!g_slist_find (impl->priv->filters, impl->priv->current_filter))
set_current_filter (impl, filter);
show_filters (impl, TRUE);
@@ -7832,7 +7128,7 @@ gtk_file_chooser_default_remove_filter (GtkFileChooser *chooser,
GtkTreeIter iter;
gint filter_index;
- filter_index = g_slist_index (impl->filters, filter);
+ filter_index = g_slist_index (impl->priv->filters, filter);
if (filter_index < 0)
{
@@ -7840,18 +7136,18 @@ gtk_file_chooser_default_remove_filter (GtkFileChooser *chooser,
return;
}
- impl->filters = g_slist_remove (impl->filters, filter);
+ impl->priv->filters = g_slist_remove (impl->priv->filters, filter);
- if (filter == impl->current_filter)
+ if (filter == impl->priv->current_filter)
{
- if (impl->filters)
- set_current_filter (impl, impl->filters->data);
+ if (impl->priv->filters)
+ set_current_filter (impl, impl->priv->filters->data);
else
set_current_filter (impl, NULL);
}
/* Remove row from the combo box */
- model = gtk_combo_box_get_model (GTK_COMBO_BOX (impl->filter_combo));
+ model = gtk_combo_box_get_model (GTK_COMBO_BOX (impl->priv->filter_combo));
if (!gtk_tree_model_iter_nth_child (model, &iter, NULL, filter_index))
g_assert_not_reached ();
@@ -7859,7 +7155,7 @@ gtk_file_chooser_default_remove_filter (GtkFileChooser *chooser,
g_object_unref (filter);
- if (!impl->filters)
+ if (!impl->priv->filters)
show_filters (impl, FALSE);
}
@@ -7868,7 +7164,7 @@ gtk_file_chooser_default_list_filters (GtkFileChooser *chooser)
{
GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (chooser);
- return g_slist_copy (impl->filters);
+ return g_slist_copy (impl->priv->filters);
}
/* Returns the position in the shortcuts tree where the nth specified shortcut would appear */
@@ -7895,15 +7191,15 @@ add_shortcut_get_info_cb (GCancellable *cancellable,
gboolean cancelled = g_cancellable_is_cancelled (cancellable);
struct AddShortcutData *data = user_data;
- if (!g_slist_find (data->impl->loading_shortcuts, cancellable))
+ if (!g_slist_find (data->impl->priv->loading_shortcuts, cancellable))
goto out;
- data->impl->loading_shortcuts = g_slist_remove (data->impl->loading_shortcuts, cancellable);
+ data->impl->priv->loading_shortcuts = g_slist_remove (data->impl->priv->loading_shortcuts, cancellable);
if (cancelled || error || (! _gtk_file_info_consider_as_directory (info)))
goto out;
- pos = shortcuts_get_pos_for_shortcut_folder (data->impl, data->impl->num_shortcuts);
+ pos = shortcuts_get_pos_for_shortcut_folder (data->impl, data->impl->priv->num_shortcuts);
shortcuts_insert_file (data->impl, pos, SHORTCUT_TYPE_FILE, NULL, data->file, NULL, FALSE,
SHORTCUTS_SHORTCUTS);
@@ -7947,7 +7243,7 @@ gtk_file_chooser_default_add_shortcut_folder (GtkFileChooser *chooser,
return FALSE;
}
- for (l = impl->loading_shortcuts; l; l = l->next)
+ for (l = impl->priv->loading_shortcuts; l; l = l->next)
{
GCancellable *c = l->data;
GFile *f;
@@ -7973,14 +7269,14 @@ gtk_file_chooser_default_add_shortcut_folder (GtkFileChooser *chooser,
data->impl = g_object_ref (impl);
data->file = g_object_ref (file);
- cancellable = _gtk_file_system_get_info (impl->file_system, file,
+ cancellable = _gtk_file_system_get_info (impl->priv->file_system, file,
"standard::type",
add_shortcut_get_info_cb, data);
if (!cancellable)
return FALSE;
- impl->loading_shortcuts = g_slist_append (impl->loading_shortcuts, cancellable);
+ impl->priv->loading_shortcuts = g_slist_append (impl->priv->loading_shortcuts, cancellable);
g_object_set_data (G_OBJECT (cancellable), "add-shortcut-path-key", data->file);
return TRUE;
@@ -7998,7 +7294,7 @@ gtk_file_chooser_default_remove_shortcut_folder (GtkFileChooser *chooser,
char *uri;
int i;
- for (l = impl->loading_shortcuts; l; l = l->next)
+ for (l = impl->priv->loading_shortcuts; l; l = l->next)
{
GCancellable *c = l->data;
GFile *f;
@@ -8006,26 +7302,26 @@ gtk_file_chooser_default_remove_shortcut_folder (GtkFileChooser *chooser,
f = g_object_get_data (G_OBJECT (c), "add-shortcut-path-key");
if (f && g_file_equal (file, f))
{
- impl->loading_shortcuts = g_slist_remove (impl->loading_shortcuts, c);
+ impl->priv->loading_shortcuts = g_slist_remove (impl->priv->loading_shortcuts, c);
g_cancellable_cancel (c);
return TRUE;
}
}
- if (impl->num_shortcuts == 0)
+ if (impl->priv->num_shortcuts == 0)
goto out;
pos = shortcuts_get_pos_for_shortcut_folder (impl, 0);
- if (!gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (impl->shortcuts_model), &iter, NULL, pos))
+ if (!gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter, NULL, pos))
g_assert_not_reached ();
- for (i = 0; i < impl->num_shortcuts; i++)
+ for (i = 0; i < impl->priv->num_shortcuts; i++)
{
gpointer col_data;
ShortcutType shortcut_type;
GFile *shortcut;
- gtk_tree_model_get (GTK_TREE_MODEL (impl->shortcuts_model), &iter,
+ gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter,
SHORTCUTS_COL_DATA, &col_data,
SHORTCUTS_COL_TYPE, &shortcut_type,
-1);
@@ -8036,11 +7332,11 @@ gtk_file_chooser_default_remove_shortcut_folder (GtkFileChooser *chooser,
if (g_file_equal (shortcut, file))
{
shortcuts_remove_rows (impl, pos + i, 1);
- impl->num_shortcuts--;
+ impl->priv->num_shortcuts--;
return TRUE;
}
- if (!gtk_tree_model_iter_next (GTK_TREE_MODEL (impl->shortcuts_model), &iter))
+ if (!gtk_tree_model_iter_next (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter))
g_assert_not_reached ();
}
@@ -8067,22 +7363,22 @@ gtk_file_chooser_default_list_shortcut_folders (GtkFileChooser *chooser)
int i;
GSList *list;
- if (impl->num_shortcuts == 0)
+ if (impl->priv->num_shortcuts == 0)
return NULL;
pos = shortcuts_get_pos_for_shortcut_folder (impl, 0);
- if (!gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (impl->shortcuts_model), &iter, NULL, pos))
+ if (!gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter, NULL, pos))
g_assert_not_reached ();
list = NULL;
- for (i = 0; i < impl->num_shortcuts; i++)
+ for (i = 0; i < impl->priv->num_shortcuts; i++)
{
gpointer col_data;
ShortcutType shortcut_type;
GFile *shortcut;
- gtk_tree_model_get (GTK_TREE_MODEL (impl->shortcuts_model), &iter,
+ gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter,
SHORTCUTS_COL_DATA, &col_data,
SHORTCUTS_COL_TYPE, &shortcut_type,
-1);
@@ -8092,9 +7388,9 @@ gtk_file_chooser_default_list_shortcut_folders (GtkFileChooser *chooser)
shortcut = col_data;
list = g_slist_prepend (list, g_object_ref (shortcut));
- if (i != impl->num_shortcuts - 1)
+ if (i != impl->priv->num_shortcuts - 1)
{
- if (!gtk_tree_model_iter_next (GTK_TREE_MODEL (impl->shortcuts_model), &iter))
+ if (!gtk_tree_model_iter_next (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter))
g_assert_not_reached ();
}
}
@@ -8160,19 +7456,19 @@ gtk_file_chooser_default_get_default_size (GtkFileChooserEmbed *chooser_embed,
find_good_size_from_style (GTK_WIDGET (chooser_embed), default_width, default_height);
- if (impl->preview_widget_active &&
- impl->preview_widget &&
- gtk_widget_get_visible (impl->preview_widget))
+ if (impl->priv->preview_widget_active &&
+ impl->priv->preview_widget &&
+ gtk_widget_get_visible (impl->priv->preview_widget))
{
- gtk_widget_get_preferred_size (impl->preview_box,
+ gtk_widget_get_preferred_size (impl->priv->preview_box,
&req, NULL);
*default_width += PREVIEW_HBOX_SPACING + req.width;
}
- if (impl->extra_widget &&
- gtk_widget_get_visible (impl->extra_widget))
+ if (impl->priv->extra_widget &&
+ gtk_widget_get_visible (impl->priv->extra_widget))
{
- gtk_widget_get_preferred_size (impl->extra_align,
+ gtk_widget_get_preferred_size (impl->priv->extra_align,
&req, NULL);
*default_height += gtk_box_get_spacing (GTK_BOX (chooser_embed)) + req.height;
}
@@ -8195,7 +7491,7 @@ switch_folder_foreach_cb (GtkTreeModel *model,
closure = data;
- closure->file = _gtk_file_system_model_get_file (closure->impl->browse_files_model, iter);
+ closure->file = _gtk_file_system_model_get_file (closure->impl->priv->browse_files_model, iter);
closure->num_selected++;
}
@@ -8214,7 +7510,7 @@ switch_to_selected_folder (GtkFileChooserDefault *impl)
closure.file = NULL;
closure.num_selected = 0;
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
gtk_tree_selection_selected_foreach (selection, switch_folder_foreach_cb, &closure);
g_assert (closure.file && closure.num_selected == 1);
@@ -8233,8 +7529,8 @@ get_selected_file_info_from_file_list (GtkFileChooserDefault *impl,
GtkTreeIter iter;
GFileInfo *info;
- g_assert (!impl->select_multiple);
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
+ g_assert (!impl->priv->select_multiple);
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
if (!gtk_tree_selection_get_selected (selection, NULL, &iter))
{
*had_selection = FALSE;
@@ -8243,7 +7539,7 @@ get_selected_file_info_from_file_list (GtkFileChooserDefault *impl,
*had_selection = TRUE;
- info = _gtk_file_system_model_get_info (impl->browse_files_model, &iter);
+ info = _gtk_file_system_model_get_info (impl->priv->browse_files_model, &iter);
return info;
}
@@ -8351,10 +7647,10 @@ confirmation_confirm_get_info_cb (GCancellable *cancellable,
gboolean should_respond = FALSE;
struct GetDisplayNameData *data = user_data;
- if (cancellable != data->impl->should_respond_get_info_cancellable)
+ if (cancellable != data->impl->priv->should_respond_get_info_cancellable)
goto out;
- data->impl->should_respond_get_info_cancellable = NULL;
+ data->impl->priv->should_respond_get_info_cancellable = NULL;
if (cancelled)
goto out;
@@ -8387,7 +7683,7 @@ should_respond_after_confirm_overwrite (GtkFileChooserDefault *impl,
{
GtkFileChooserConfirmation conf;
- if (!impl->do_overwrite_confirmation)
+ if (!impl->priv->do_overwrite_confirmation)
return TRUE;
conf = GTK_FILE_CHOOSER_CONFIRMATION_CONFIRM;
@@ -8406,11 +7702,11 @@ should_respond_after_confirm_overwrite (GtkFileChooserDefault *impl,
data->impl = g_object_ref (impl);
data->file_part = g_strdup (file_part);
- if (impl->should_respond_get_info_cancellable)
- g_cancellable_cancel (impl->should_respond_get_info_cancellable);
+ if (impl->priv->should_respond_get_info_cancellable)
+ g_cancellable_cancel (impl->priv->should_respond_get_info_cancellable);
- impl->should_respond_get_info_cancellable =
- _gtk_file_system_get_info (impl->file_system, parent_file,
+ impl->priv->should_respond_get_info_cancellable =
+ _gtk_file_system_get_info (impl->priv->file_system, parent_file,
"standard::display-name",
confirmation_confirm_get_info_cb,
data);
@@ -8448,10 +7744,10 @@ name_entry_get_parent_info_cb (GCancellable *cancellable,
gboolean cancelled = g_cancellable_is_cancelled (cancellable);
struct FileExistsData *data = user_data;
- if (cancellable != data->impl->should_respond_get_info_cancellable)
+ if (cancellable != data->impl->priv->should_respond_get_info_cancellable)
goto out;
- data->impl->should_respond_get_info_cancellable = NULL;
+ data->impl->priv->should_respond_get_info_cancellable = NULL;
set_busy_cursor (data->impl, FALSE);
@@ -8465,11 +7761,11 @@ name_entry_get_parent_info_cb (GCancellable *cancellable,
if (parent_is_folder)
{
- if (data->impl->action == GTK_FILE_CHOOSER_ACTION_OPEN)
+ if (data->impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN)
{
request_response_and_add_to_recent_list (data->impl); /* even if the file doesn't exist, apps can
make good use of that (e.g. Emacs) */
}
- else if (data->impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+ else if (data->impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE)
{
if (data->file_exists_and_is_not_folder)
{
@@ -8480,7 +7776,7 @@ name_entry_get_parent_info_cb (GCancellable *cancellable,
* depending on what clients do in the confirm-overwrite
* signal and this corrupts the pointer
*/
- file_part = g_strdup (_gtk_file_chooser_entry_get_file_part (GTK_FILE_CHOOSER_ENTRY
(data->impl->location_entry)));
+ file_part = g_strdup (_gtk_file_chooser_entry_get_file_part (GTK_FILE_CHOOSER_ENTRY
(data->impl->priv->location_entry)));
retval = should_respond_after_confirm_overwrite (data->impl, file_part, data->parent_file);
g_free (file_part);
@@ -8490,8 +7786,8 @@ name_entry_get_parent_info_cb (GCancellable *cancellable,
else
request_response_and_add_to_recent_list (data->impl);
}
- else if (data->impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER
- || data->impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+ else if (data->impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER
+ || data->impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
{
GError *mkdir_error = NULL;
@@ -8551,10 +7847,10 @@ file_exists_get_info_cb (GCancellable *cancellable,
gboolean needs_parent_check = FALSE;
struct FileExistsData *data = user_data;
- if (cancellable != data->impl->file_exists_get_info_cancellable)
+ if (cancellable != data->impl->priv->file_exists_get_info_cancellable)
goto out;
- data->impl->file_exists_get_info_cancellable = NULL;
+ data->impl->priv->file_exists_get_info_cancellable = NULL;
set_busy_cursor (data->impl, FALSE);
@@ -8564,7 +7860,7 @@ file_exists_get_info_cb (GCancellable *cancellable,
file_exists = (info != NULL);
is_folder = (file_exists && _gtk_file_info_consider_as_directory (info));
- if (data->impl->action == GTK_FILE_CHOOSER_ACTION_OPEN)
+ if (data->impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN)
{
if (is_folder)
change_folder_and_display_error (data->impl, data->file, TRUE);
@@ -8576,7 +7872,7 @@ file_exists_get_info_cb (GCancellable *cancellable,
needs_parent_check = TRUE; /* file doesn't exist; see if its parent exists */
}
}
- else if (data->impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+ else if (data->impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
{
if (file_exists && !is_folder)
{
@@ -8591,7 +7887,7 @@ file_exists_get_info_cb (GCancellable *cancellable,
needs_parent_check = TRUE;
}
}
- else if (data->impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+ else if (data->impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
{
if (!file_exists)
{
@@ -8608,7 +7904,7 @@ file_exists_get_info_cb (GCancellable *cancellable,
error_selecting_folder_over_existing_file_dialog (data->impl, data->file);
}
}
- else if (data->impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+ else if (data->impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE)
{
if (is_folder)
change_folder_and_display_error (data->impl, data->file, TRUE);
@@ -8626,11 +7922,11 @@ file_exists_get_info_cb (GCancellable *cancellable,
data->file_exists_and_is_not_folder = file_exists && !is_folder;
data_ownership_taken = TRUE;
- if (data->impl->should_respond_get_info_cancellable)
- g_cancellable_cancel (data->impl->should_respond_get_info_cancellable);
+ if (data->impl->priv->should_respond_get_info_cancellable)
+ g_cancellable_cancel (data->impl->priv->should_respond_get_info_cancellable);
- data->impl->should_respond_get_info_cancellable =
- _gtk_file_system_get_info (data->impl->file_system,
+ data->impl->priv->should_respond_get_info_cancellable =
+ _gtk_file_system_get_info (data->impl->priv->file_system,
data->parent_file,
"standard::type",
name_entry_get_parent_info_cb,
@@ -8696,7 +7992,7 @@ add_selection_to_recent_list (GtkFileChooserDefault *impl)
uri = g_file_get_uri (file);
if (uri)
{
- gtk_recent_manager_add_item (impl->recent_manager, uri);
+ gtk_recent_manager_add_item (impl->priv->recent_manager, uri);
g_free (uri);
}
}
@@ -8722,9 +8018,9 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed)
current_focus = gtk_window_get_focus (GTK_WINDOW (toplevel));
- if (current_focus == impl->browse_files_tree_view)
+ if (current_focus == impl->priv->browse_files_tree_view)
{
- /* The following array encodes what we do based on the impl->action and the
+ /* The following array encodes what we do based on the impl->priv->action and the
* number of files selected.
*/
typedef enum {
@@ -8751,17 +8047,17 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed)
file_list:
- g_assert (impl->action >= GTK_FILE_CHOOSER_ACTION_OPEN && impl->action <=
GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER);
+ g_assert (impl->priv->action >= GTK_FILE_CHOOSER_ACTION_OPEN && impl->priv->action <=
GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER);
- if (impl->operation_mode == OPERATION_MODE_SEARCH)
+ if (impl->priv->operation_mode == OPERATION_MODE_SEARCH)
{
retval = search_should_respond (impl);
goto out;
}
- if (impl->operation_mode == OPERATION_MODE_RECENT)
+ if (impl->priv->operation_mode == OPERATION_MODE_RECENT)
{
- if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+ if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE)
goto save_entry;
else
{
@@ -8777,7 +8073,7 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed)
else
k = num_selected;
- action = what_to_do [impl->action] [k];
+ action = what_to_do [impl->priv->action] [k];
switch (action)
{
@@ -8796,11 +8092,11 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed)
switch_to_selected_folder (impl);
return FALSE;
}
- else if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+ else if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE)
{
retval = should_respond_after_confirm_overwrite (impl,
get_display_name_from_file_list (impl),
- impl->current_folder);
+ impl->priv->current_folder);
goto out;
}
else
@@ -8824,7 +8120,7 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed)
g_assert_not_reached ();
}
}
- else if ((impl->location_entry != NULL) && (current_focus == impl->location_entry))
+ else if ((impl->priv->location_entry != NULL) && (current_focus == impl->priv->location_entry))
{
GFile *file;
gboolean is_well_formed, is_empty, is_file_part_empty;
@@ -8834,20 +8130,20 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed)
save_entry:
- g_assert (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE
- || impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER
- || ((impl->action == GTK_FILE_CHOOSER_ACTION_OPEN
- || impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
- && impl->location_mode == LOCATION_MODE_FILENAME_ENTRY));
+ g_assert (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE
+ || impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER
+ || ((impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN
+ || impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+ && impl->priv->location_mode == LOCATION_MODE_FILENAME_ENTRY));
- entry = GTK_FILE_CHOOSER_ENTRY (impl->location_entry);
+ entry = GTK_FILE_CHOOSER_ENTRY (impl->priv->location_entry);
check_save_entry (impl, &file, &is_well_formed, &is_empty, &is_file_part_empty, &is_folder);
if (!is_well_formed)
{
if (!is_empty
- && impl->action == GTK_FILE_CHOOSER_ACTION_SAVE
- && impl->operation_mode == OPERATION_MODE_RECENT)
+ && impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE
+ && impl->priv->operation_mode == OPERATION_MODE_RECENT)
{
path_bar_set_mode (impl, PATH_BAR_ERROR_NO_FOLDER);
#if 0
@@ -8856,7 +8152,7 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed)
* a selection causes the error message from path_bar_set_mode() to go away,
* but we want the user to see that message!
*/
- gtk_widget_grab_focus (impl->browse_files_tree_view);
+ gtk_widget_grab_focus (impl->priv->browse_files_tree_view);
#endif
}
/* FIXME: else show an "invalid filename" error as the pathbar mode? */
@@ -8866,11 +8162,11 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed)
if (is_empty)
{
- if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE
- || impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+ if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE
+ || impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
{
path_bar_set_mode (impl, PATH_BAR_ERROR_NO_FILENAME);
- gtk_widget_grab_focus (impl->location_entry);
+ gtk_widget_grab_focus (impl->priv->location_entry);
return FALSE;
}
@@ -8882,13 +8178,13 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed)
error = NULL;
if (is_folder)
{
- if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
- impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+ if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
+ impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE)
{
change_folder_and_display_error (impl, file, TRUE);
}
- else if (impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER ||
- impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+ else if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER ||
+ impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
{
/* The folder already exists, so we do not need to create it.
* Just respond to terminate the dialog.
@@ -8915,11 +8211,11 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed)
data->file = g_object_ref (file);
data->parent_file = _gtk_file_chooser_entry_get_current_folder (entry);
- if (impl->file_exists_get_info_cancellable)
- g_cancellable_cancel (impl->file_exists_get_info_cancellable);
+ if (impl->priv->file_exists_get_info_cancellable)
+ g_cancellable_cancel (impl->priv->file_exists_get_info_cancellable);
- impl->file_exists_get_info_cancellable =
- _gtk_file_system_get_info (impl->file_system, file,
+ impl->priv->file_exists_get_info_cancellable =
+ _gtk_file_system_get_info (impl->priv->file_system, file,
"standard::type",
file_exists_get_info_cb,
data);
@@ -8932,19 +8228,19 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed)
g_object_unref (file);
}
- else if (impl->toplevel_last_focus_widget == impl->browse_files_tree_view)
+ else if (impl->priv->toplevel_last_focus_widget == impl->priv->browse_files_tree_view)
{
/* The focus is on a dialog's action area button, *and* the widget that
* was focused immediately before it is the file list.
*/
goto file_list;
}
- else if (impl->operation_mode == OPERATION_MODE_SEARCH && impl->toplevel_last_focus_widget ==
impl->search_entry)
+ else if (impl->priv->operation_mode == OPERATION_MODE_SEARCH && impl->priv->toplevel_last_focus_widget ==
impl->priv->search_entry)
{
- search_entry_activate_cb (GTK_ENTRY (impl->search_entry), impl);
+ search_entry_activate_cb (GTK_ENTRY (impl->priv->search_entry), impl);
return FALSE;
}
- else if (impl->location_entry && impl->toplevel_last_focus_widget == impl->location_entry)
+ else if (impl->priv->location_entry && impl->priv->toplevel_last_focus_widget ==
impl->priv->location_entry)
{
/* The focus is on a dialog's action area button, *and* the widget that
* was focused immediately before it is the location entry.
@@ -8953,8 +8249,8 @@ gtk_file_chooser_default_should_respond (GtkFileChooserEmbed *chooser_embed)
}
else
/* The focus is on a dialog's action area button or something else */
- if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE
- || impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+ if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE
+ || impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
goto save_entry;
else
goto file_list;
@@ -8976,18 +8272,18 @@ gtk_file_chooser_default_initial_focus (GtkFileChooserEmbed *chooser_embed)
impl = GTK_FILE_CHOOSER_DEFAULT (chooser_embed);
- if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
- impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+ if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
+ impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
{
- if (impl->location_mode == LOCATION_MODE_PATH_BAR
- || impl->operation_mode == OPERATION_MODE_RECENT)
- widget = impl->browse_files_tree_view;
+ if (impl->priv->location_mode == LOCATION_MODE_PATH_BAR
+ || impl->priv->operation_mode == OPERATION_MODE_RECENT)
+ widget = impl->priv->browse_files_tree_view;
else
- widget = impl->location_entry;
+ widget = impl->priv->location_entry;
}
- else if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
- impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
- widget = impl->location_entry;
+ else if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
+ impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+ widget = impl->priv->location_entry;
else
{
g_assert_not_reached ();
@@ -9023,7 +8319,7 @@ search_get_selected_files (GtkFileChooserDefault *impl)
result = NULL;
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
gtk_tree_selection_selected_foreach (selection, search_selected_foreach_get_file_cb, &result);
result = g_slist_reverse (result);
@@ -9038,9 +8334,9 @@ search_should_respond (GtkFileChooserDefault *impl)
{
GtkTreeSelection *selection;
- g_assert (impl->operation_mode == OPERATION_MODE_SEARCH);
+ g_assert (impl->priv->operation_mode == OPERATION_MODE_SEARCH);
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
return (gtk_tree_selection_count_selected_rows (selection) != 0);
}
@@ -9061,7 +8357,7 @@ search_add_hit (GtkFileChooserDefault *impl,
return;
}
- _gtk_file_system_model_add_and_query_file (impl->search_model,
+ _gtk_file_system_model_add_and_query_file (impl->priv->search_model,
file,
MODEL_ATTRIBUTES);
@@ -9096,8 +8392,8 @@ search_engine_finished_cb (GtkSearchEngine *engine,
/* EB: setting the model here will avoid loads of row events,
* but it'll make the search look like blocked.
*/
- gtk_tree_view_set_model (GTK_TREE_VIEW (impl->browse_files_tree_view),
- GTK_TREE_MODEL (impl->search_model));
+ gtk_tree_view_set_model (GTK_TREE_VIEW (impl->priv->browse_files_tree_view),
+ GTK_TREE_MODEL (impl->priv->search_model));
file_list_set_sort_column_ids (impl);
#endif
@@ -9138,14 +8434,14 @@ static void
search_clear_model (GtkFileChooserDefault *impl,
gboolean remove_from_treeview)
{
- if (!impl->search_model)
+ if (!impl->priv->search_model)
return;
- g_object_unref (impl->search_model);
- impl->search_model = NULL;
+ g_object_unref (impl->priv->search_model);
+ impl->priv->search_model = NULL;
if (remove_from_treeview)
- gtk_tree_view_set_model (GTK_TREE_VIEW (impl->browse_files_tree_view), NULL);
+ gtk_tree_view_set_model (GTK_TREE_VIEW (impl->priv->browse_files_tree_view), NULL);
}
/* Stops any ongoing searches; does not touch the search_model */
@@ -9153,18 +8449,18 @@ static void
search_stop_searching (GtkFileChooserDefault *impl,
gboolean remove_query)
{
- if (remove_query && impl->search_query)
+ if (remove_query && impl->priv->search_query)
{
- g_object_unref (impl->search_query);
- impl->search_query = NULL;
+ g_object_unref (impl->priv->search_query);
+ impl->priv->search_query = NULL;
}
- if (impl->search_engine)
+ if (impl->priv->search_engine)
{
- _gtk_search_engine_stop (impl->search_engine);
+ _gtk_search_engine_stop (impl->priv->search_engine);
- g_object_unref (impl->search_engine);
- impl->search_engine = NULL;
+ g_object_unref (impl->priv->search_engine);
+ impl->priv->search_engine = NULL;
}
}
@@ -9172,21 +8468,21 @@ search_stop_searching (GtkFileChooserDefault *impl,
static void
search_setup_model (GtkFileChooserDefault *impl)
{
- g_assert (impl->search_model == NULL);
+ g_assert (impl->priv->search_model == NULL);
- impl->search_model = _gtk_file_system_model_new (file_system_model_set,
+ impl->priv->search_model = _gtk_file_system_model_new (file_system_model_set,
impl,
MODEL_COLUMN_TYPES);
- gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->search_model),
+ gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->priv->search_model),
MODEL_COL_NAME,
name_sort_func,
impl, NULL);
- gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->search_model),
+ gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->priv->search_model),
MODEL_COL_MTIME,
mtime_sort_func,
impl, NULL);
- gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->search_model),
+ gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->priv->search_model),
MODEL_COL_SIZE,
size_sort_func,
impl, NULL);
@@ -9196,8 +8492,8 @@ search_setup_model (GtkFileChooserDefault *impl)
* more "alive" than setting the model at the end of the search
* run
*/
- gtk_tree_view_set_model (GTK_TREE_VIEW (impl->browse_files_tree_view),
- GTK_TREE_MODEL (impl->search_model));
+ gtk_tree_view_set_model (GTK_TREE_VIEW (impl->priv->browse_files_tree_view),
+ GTK_TREE_MODEL (impl->priv->search_model));
file_list_set_sort_column_ids (impl);
}
@@ -9211,32 +8507,32 @@ search_start_query (GtkFileChooserDefault *impl,
search_setup_model (impl);
set_busy_cursor (impl, TRUE);
- if (impl->search_engine == NULL)
- impl->search_engine = _gtk_search_engine_new ();
+ if (impl->priv->search_engine == NULL)
+ impl->priv->search_engine = _gtk_search_engine_new ();
- if (!impl->search_engine)
+ if (!impl->priv->search_engine)
{
set_busy_cursor (impl, FALSE);
search_error_could_not_create_client (impl); /* lame; we don't get an error code or anything */
return;
}
- if (!impl->search_query)
+ if (!impl->priv->search_query)
{
- impl->search_query = _gtk_query_new ();
- _gtk_query_set_text (impl->search_query, query_text);
+ impl->priv->search_query = _gtk_query_new ();
+ _gtk_query_set_text (impl->priv->search_query, query_text);
}
- _gtk_search_engine_set_query (impl->search_engine, impl->search_query);
+ _gtk_search_engine_set_query (impl->priv->search_engine, impl->priv->search_query);
- g_signal_connect (impl->search_engine, "hits-added",
+ g_signal_connect (impl->priv->search_engine, "hits-added",
G_CALLBACK (search_engine_hits_added_cb), impl);
- g_signal_connect (impl->search_engine, "finished",
+ g_signal_connect (impl->priv->search_engine, "finished",
G_CALLBACK (search_engine_finished_cb), impl);
- g_signal_connect (impl->search_engine, "error",
+ g_signal_connect (impl->priv->search_engine, "error",
G_CALLBACK (search_engine_error_cb), impl);
- _gtk_search_engine_start (impl->search_engine);
+ _gtk_search_engine_start (impl->priv->search_engine);
}
/* Callback used when the user presses Enter while typing on the search
@@ -9251,15 +8547,15 @@ search_entry_activate_cb (GtkEntry *entry,
impl = GTK_FILE_CHOOSER_DEFAULT (data);
- text = gtk_entry_get_text (GTK_ENTRY (impl->search_entry));
+ text = gtk_entry_get_text (GTK_ENTRY (impl->priv->search_entry));
if (strlen (text) == 0)
return;
/* reset any existing query object */
- if (impl->search_query)
+ if (impl->priv->search_query)
{
- g_object_unref (impl->search_query);
- impl->search_query = NULL;
+ g_object_unref (impl->priv->search_query);
+ impl->priv->search_query = NULL;
}
search_start_query (impl, text);
@@ -9270,11 +8566,11 @@ focus_entry_idle_cb (GtkFileChooserDefault *impl)
{
gdk_threads_enter ();
- g_source_destroy (impl->focus_entry_idle);
- impl->focus_entry_idle = NULL;
+ g_source_destroy (impl->priv->focus_entry_idle);
+ impl->priv->focus_entry_idle = NULL;
- if (impl->search_entry)
- gtk_widget_grab_focus (impl->search_entry);
+ if (impl->priv->search_entry)
+ gtk_widget_grab_focus (impl->priv->search_entry);
gdk_threads_leave ();
@@ -9292,55 +8588,55 @@ focus_search_entry_in_idle (GtkFileChooserDefault *impl)
* handler.
*/
- if (!impl->focus_entry_idle)
- impl->focus_entry_idle = add_idle_while_impl_is_alive (impl, G_CALLBACK (focus_entry_idle_cb));
+ if (!impl->priv->focus_entry_idle)
+ impl->priv->focus_entry_idle = add_idle_while_impl_is_alive (impl, G_CALLBACK (focus_entry_idle_cb));
}
/* Hides the path bar and creates the search entry */
static void
search_setup_widgets (GtkFileChooserDefault *impl)
{
- impl->search_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
+ impl->priv->search_hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
path_bar_update (impl);
- impl->search_entry = gtk_entry_new ();
- g_signal_connect (impl->search_entry, "activate",
+ impl->priv->search_entry = gtk_entry_new ();
+ g_signal_connect (impl->priv->search_entry, "activate",
G_CALLBACK (search_entry_activate_cb),
impl);
- gtk_box_pack_start (GTK_BOX (impl->search_hbox), impl->search_entry, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (impl->priv->search_hbox), impl->priv->search_entry, TRUE, TRUE, 0);
/* if there already is a query, restart it */
- if (impl->search_query)
+ if (impl->priv->search_query)
{
- gchar *query = _gtk_query_get_text (impl->search_query);
+ gchar *query = _gtk_query_get_text (impl->priv->search_query);
if (query)
{
- gtk_entry_set_text (GTK_ENTRY (impl->search_entry), query);
+ gtk_entry_set_text (GTK_ENTRY (impl->priv->search_entry), query);
search_start_query (impl, query);
g_free (query);
}
else
{
- g_object_unref (impl->search_query);
- impl->search_query = NULL;
+ g_object_unref (impl->priv->search_query);
+ impl->priv->search_query = NULL;
}
}
/* Box for search widgets */
- gtk_box_pack_start (GTK_BOX (impl->browse_path_bar_hbox), impl->search_hbox, TRUE, TRUE, 0);
- gtk_widget_show_all (impl->search_hbox);
- gtk_size_group_add_widget (GTK_SIZE_GROUP (impl->browse_path_bar_size_group), impl->search_hbox);
+ gtk_box_pack_start (GTK_BOX (impl->priv->browse_path_bar_hbox), impl->priv->search_hbox, TRUE, TRUE, 0);
+ gtk_widget_show_all (impl->priv->search_hbox);
+ gtk_size_group_add_widget (GTK_SIZE_GROUP (impl->priv->browse_path_bar_size_group),
impl->priv->search_hbox);
/* Hide the location widgets temporarily */
- if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
- impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+ if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
+ impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
{
- gtk_widget_hide (impl->location_button);
- gtk_widget_hide (impl->location_entry_box);
+ gtk_widget_hide (impl->priv->location_button);
+ gtk_widget_hide (impl->priv->location_entry_box);
}
focus_search_entry_in_idle (impl);
@@ -9357,14 +8653,14 @@ static void
recent_clear_model (GtkFileChooserDefault *impl,
gboolean remove_from_treeview)
{
- if (!impl->recent_model)
+ if (!impl->priv->recent_model)
return;
if (remove_from_treeview)
- gtk_tree_view_set_model (GTK_TREE_VIEW (impl->browse_files_tree_view), NULL);
+ gtk_tree_view_set_model (GTK_TREE_VIEW (impl->priv->browse_files_tree_view), NULL);
- g_object_unref (impl->recent_model);
- impl->recent_model = NULL;
+ g_object_unref (impl->priv->recent_model);
+ impl->priv->recent_model = NULL;
}
/* Stops any ongoing loading of the recent files list; does
@@ -9373,33 +8669,33 @@ recent_clear_model (GtkFileChooserDefault *impl,
static void
recent_stop_loading (GtkFileChooserDefault *impl)
{
- if (impl->load_recent_id)
+ if (impl->priv->load_recent_id)
{
- g_source_remove (impl->load_recent_id);
- impl->load_recent_id = 0;
+ g_source_remove (impl->priv->load_recent_id);
+ impl->priv->load_recent_id = 0;
}
}
static void
recent_setup_model (GtkFileChooserDefault *impl)
{
- g_assert (impl->recent_model == NULL);
+ g_assert (impl->priv->recent_model == NULL);
- impl->recent_model = _gtk_file_system_model_new (file_system_model_set,
+ impl->priv->recent_model = _gtk_file_system_model_new (file_system_model_set,
impl,
MODEL_COLUMN_TYPES);
- _gtk_file_system_model_set_filter (impl->recent_model,
- impl->current_filter);
- gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->recent_model),
+ _gtk_file_system_model_set_filter (impl->priv->recent_model,
+ impl->priv->current_filter);
+ gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->priv->recent_model),
MODEL_COL_NAME,
name_sort_func,
impl, NULL);
- gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->recent_model),
+ gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->priv->recent_model),
MODEL_COL_SIZE,
size_sort_func,
impl, NULL);
- gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->recent_model),
+ gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (impl->priv->recent_model),
MODEL_COL_MTIME,
mtime_sort_func,
impl, NULL);
@@ -9418,14 +8714,14 @@ recent_idle_cleanup (gpointer data)
RecentLoadData *load_data = data;
GtkFileChooserDefault *impl = load_data->impl;
- gtk_tree_view_set_model (GTK_TREE_VIEW (impl->browse_files_tree_view),
- GTK_TREE_MODEL (impl->recent_model));
+ gtk_tree_view_set_model (GTK_TREE_VIEW (impl->priv->browse_files_tree_view),
+ GTK_TREE_MODEL (impl->priv->recent_model));
file_list_set_sort_column_ids (impl);
- gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (impl->recent_model), MODEL_COL_MTIME,
GTK_SORT_DESCENDING);
+ gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (impl->priv->recent_model), MODEL_COL_MTIME,
GTK_SORT_DESCENDING);
set_busy_cursor (impl, FALSE);
- impl->load_recent_id = 0;
+ impl->priv->load_recent_id = 0;
g_free (load_data);
}
@@ -9464,7 +8760,7 @@ populate_model_with_recent_items (GtkFileChooserDefault *impl, GList *items)
GFile *file;
file = g_file_new_for_uri (gtk_recent_info_get_uri (info));
- _gtk_file_system_model_add_and_query_file (impl->recent_model,
+ _gtk_file_system_model_add_and_query_file (impl->priv->recent_model,
file,
MODEL_ATTRIBUTES);
g_object_unref (file);
@@ -9487,7 +8783,7 @@ populate_model_with_folders (GtkFileChooserDefault *impl, GList *items)
{
GFile *folder = l->data;
- _gtk_file_system_model_add_and_query_file (impl->recent_model,
+ _gtk_file_system_model_add_and_query_file (impl->priv->recent_model,
folder,
MODEL_ATTRIBUTES);
}
@@ -9502,14 +8798,14 @@ recent_idle_load (gpointer data)
RecentLoadData *load_data = data;
GtkFileChooserDefault *impl = load_data->impl;
- if (!impl->recent_manager)
+ if (!impl->priv->recent_manager)
return FALSE;
- load_data->items = gtk_recent_manager_get_items (impl->recent_manager);
+ load_data->items = gtk_recent_manager_get_items (impl->priv->recent_manager);
if (!load_data->items)
return FALSE;
- if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN)
+ if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN)
populate_model_with_recent_items (impl, load_data->items);
else
populate_model_with_folders (impl, load_data->items);
@@ -9531,14 +8827,14 @@ recent_start_loading (GtkFileChooserDefault *impl)
recent_setup_model (impl);
set_busy_cursor (impl, TRUE);
- g_assert (impl->load_recent_id == 0);
+ g_assert (impl->priv->load_recent_id == 0);
load_data = g_new (RecentLoadData, 1);
load_data->impl = impl;
load_data->items = NULL;
/* begin lazy loading the recent files into the model */
- impl->load_recent_id = gdk_threads_add_idle_full (G_PRIORITY_HIGH_IDLE + 30,
+ impl->priv->load_recent_id = gdk_threads_add_idle_full (G_PRIORITY_HIGH_IDLE + 30,
recent_idle_load,
load_data,
recent_idle_cleanup);
@@ -9568,7 +8864,7 @@ recent_get_selected_files (GtkFileChooserDefault *impl)
result = NULL;
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
gtk_tree_selection_selected_foreach (selection, recent_selected_foreach_get_file_cb, &result);
result = g_slist_reverse (result);
@@ -9583,9 +8879,9 @@ recent_should_respond (GtkFileChooserDefault *impl)
{
GtkTreeSelection *selection;
- g_assert (impl->operation_mode == OPERATION_MODE_RECENT);
+ g_assert (impl->priv->operation_mode == OPERATION_MODE_RECENT);
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->browse_files_tree_view));
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
return (gtk_tree_selection_count_selected_rows (selection) != 0);
}
@@ -9593,44 +8889,44 @@ static void
set_current_filter (GtkFileChooserDefault *impl,
GtkFileFilter *filter)
{
- if (impl->current_filter != filter)
+ if (impl->priv->current_filter != filter)
{
int filter_index;
/* NULL filters are allowed to reset to non-filtered status
*/
- filter_index = g_slist_index (impl->filters, filter);
- if (impl->filters && filter && filter_index < 0)
+ filter_index = g_slist_index (impl->priv->filters, filter);
+ if (impl->priv->filters && filter && filter_index < 0)
return;
- if (impl->current_filter)
- g_object_unref (impl->current_filter);
- impl->current_filter = filter;
- if (impl->current_filter)
+ if (impl->priv->current_filter)
+ g_object_unref (impl->priv->current_filter);
+ impl->priv->current_filter = filter;
+ if (impl->priv->current_filter)
{
- g_object_ref_sink (impl->current_filter);
+ g_object_ref_sink (impl->priv->current_filter);
}
- if (impl->filters)
- gtk_combo_box_set_active (GTK_COMBO_BOX (impl->filter_combo),
+ if (impl->priv->filters)
+ gtk_combo_box_set_active (GTK_COMBO_BOX (impl->priv->filter_combo),
filter_index);
- if (impl->browse_files_model)
+ if (impl->priv->browse_files_model)
{
- _gtk_file_system_model_set_filter (impl->browse_files_model, impl->current_filter);
- _gtk_file_system_model_clear_cache (impl->browse_files_model, MODEL_COL_IS_SENSITIVE);
+ _gtk_file_system_model_set_filter (impl->priv->browse_files_model, impl->priv->current_filter);
+ _gtk_file_system_model_clear_cache (impl->priv->browse_files_model, MODEL_COL_IS_SENSITIVE);
}
- if (impl->search_model)
+ if (impl->priv->search_model)
{
- _gtk_file_system_model_set_filter (impl->search_model, filter);
- _gtk_file_system_model_clear_cache (impl->search_model, MODEL_COL_IS_SENSITIVE);
+ _gtk_file_system_model_set_filter (impl->priv->search_model, filter);
+ _gtk_file_system_model_clear_cache (impl->priv->search_model, MODEL_COL_IS_SENSITIVE);
}
- if (impl->recent_model)
+ if (impl->priv->recent_model)
{
- _gtk_file_system_model_set_filter (impl->recent_model, filter);
- _gtk_file_system_model_clear_cache (impl->recent_model, MODEL_COL_IS_SENSITIVE);
+ _gtk_file_system_model_set_filter (impl->priv->recent_model, filter);
+ _gtk_file_system_model_clear_cache (impl->priv->recent_model, MODEL_COL_IS_SENSITIVE);
}
g_object_notify (G_OBJECT (impl), "filter");
@@ -9642,7 +8938,7 @@ filter_combo_changed (GtkComboBox *combo_box,
GtkFileChooserDefault *impl)
{
gint new_index = gtk_combo_box_get_active (combo_box);
- GtkFileFilter *new_filter = g_slist_nth_data (impl->filters, new_index);
+ GtkFileFilter *new_filter = g_slist_nth_data (impl->priv->filters, new_index);
set_current_filter (impl, new_filter);
}
@@ -9655,8 +8951,8 @@ check_preview_change (GtkFileChooserDefault *impl)
char *new_display_name;
GtkTreeModel *model;
- gtk_tree_view_get_cursor (GTK_TREE_VIEW (impl->browse_files_tree_view), &cursor_path, NULL);
- model = gtk_tree_view_get_model (GTK_TREE_VIEW (impl->browse_files_tree_view));
+ gtk_tree_view_get_cursor (GTK_TREE_VIEW (impl->priv->browse_files_tree_view), &cursor_path, NULL);
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
if (cursor_path)
{
GtkTreeIter iter;
@@ -9675,30 +8971,30 @@ check_preview_change (GtkFileChooserDefault *impl)
new_display_name = NULL;
}
- if (new_file != impl->preview_file &&
- !(new_file && impl->preview_file &&
- g_file_equal (new_file, impl->preview_file)))
+ if (new_file != impl->priv->preview_file &&
+ !(new_file && impl->priv->preview_file &&
+ g_file_equal (new_file, impl->priv->preview_file)))
{
- if (impl->preview_file)
+ if (impl->priv->preview_file)
{
- g_object_unref (impl->preview_file);
- g_free (impl->preview_display_name);
+ g_object_unref (impl->priv->preview_file);
+ g_free (impl->priv->preview_display_name);
}
if (new_file)
{
- impl->preview_file = new_file;
- impl->preview_display_name = new_display_name;
+ impl->priv->preview_file = new_file;
+ impl->priv->preview_display_name = new_display_name;
}
else
{
- impl->preview_file = NULL;
- impl->preview_display_name = NULL;
+ impl->priv->preview_file = NULL;
+ impl->priv->preview_display_name = NULL;
g_free (new_display_name);
}
- if (impl->use_preview_label && impl->preview_label)
- gtk_label_set_text (GTK_LABEL (impl->preview_label), impl->preview_display_name);
+ if (impl->priv->use_preview_label && impl->priv->preview_label)
+ gtk_label_set_text (GTK_LABEL (impl->priv->preview_label), impl->priv->preview_display_name);
g_signal_emit_by_name (impl, "update-preview");
}
@@ -9721,10 +9017,10 @@ shortcuts_activate_volume_mount_cb (GCancellable *cancellable,
gboolean cancelled = g_cancellable_is_cancelled (cancellable);
GtkFileChooserDefault *impl = data;
- if (cancellable != impl->shortcuts_activate_iter_cancellable)
+ if (cancellable != impl->priv->shortcuts_activate_iter_cancellable)
goto out;
- impl->shortcuts_activate_iter_cancellable = NULL;
+ impl->priv->shortcuts_activate_iter_cancellable = NULL;
set_busy_cursor (impl, FALSE);
@@ -9785,8 +9081,8 @@ shortcuts_activate_volume (GtkFileChooserDefault *impl,
set_busy_cursor (impl, TRUE);
mount_op = gtk_mount_operation_new (get_toplevel (GTK_WIDGET (impl)));
- impl->shortcuts_activate_iter_cancellable =
- _gtk_file_system_mount_volume (impl->file_system, volume, mount_op,
+ impl->priv->shortcuts_activate_iter_cancellable =
+ _gtk_file_system_mount_volume (impl->priv->file_system, volume, mount_op,
shortcuts_activate_volume_mount_cb,
g_object_ref (impl));
g_object_unref (mount_op);
@@ -9820,10 +9116,10 @@ shortcuts_activate_get_info_cb (GCancellable *cancellable,
gboolean cancelled = g_cancellable_is_cancelled (cancellable);
struct ShortcutsActivateData *data = user_data;
- if (cancellable != data->impl->shortcuts_activate_iter_cancellable)
+ if (cancellable != data->impl->priv->shortcuts_activate_iter_cancellable)
goto out;
- data->impl->shortcuts_activate_iter_cancellable = NULL;
+ data->impl->priv->shortcuts_activate_iter_cancellable = NULL;
if (cancelled)
goto out;
@@ -9862,8 +9158,8 @@ shortcuts_activate_mount_enclosing_volume (GCancellable *cancellable,
return;
}
- data->impl->shortcuts_activate_iter_cancellable =
- _gtk_file_system_get_info (data->impl->file_system, data->file,
+ data->impl->priv->shortcuts_activate_iter_cancellable =
+ _gtk_file_system_get_info (data->impl->priv->file_system, data->file,
"standard::type",
shortcuts_activate_get_info_cb, data);
@@ -9881,20 +9177,20 @@ shortcuts_activate_iter (GtkFileChooserDefault *impl,
/* In the Save modes, we want to preserve what the uesr typed in the filename
* entry, so that he may choose another folder without erasing his typed name.
*/
- if (impl->location_entry
- && !(impl->action == GTK_FILE_CHOOSER_ACTION_SAVE
- || impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER))
- gtk_entry_set_text (GTK_ENTRY (impl->location_entry), "");
+ if (impl->priv->location_entry
+ && !(impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE
+ || impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER))
+ gtk_entry_set_text (GTK_ENTRY (impl->priv->location_entry), "");
- gtk_tree_model_get (GTK_TREE_MODEL (impl->shortcuts_model), iter,
+ gtk_tree_model_get (GTK_TREE_MODEL (impl->priv->shortcuts_model), iter,
SHORTCUTS_COL_DATA, &col_data,
SHORTCUTS_COL_TYPE, &shortcut_type,
-1);
- if (impl->shortcuts_activate_iter_cancellable)
+ if (impl->priv->shortcuts_activate_iter_cancellable)
{
- g_cancellable_cancel (impl->shortcuts_activate_iter_cancellable);
- impl->shortcuts_activate_iter_cancellable = NULL;
+ g_cancellable_cancel (impl->priv->shortcuts_activate_iter_cancellable);
+ impl->priv->shortcuts_activate_iter_cancellable = NULL;
}
if (shortcut_type == SHORTCUT_TYPE_SEPARATOR)
@@ -9916,7 +9212,7 @@ shortcuts_activate_iter (GtkFileChooserDefault *impl,
operation_mode_set (impl, OPERATION_MODE_BROWSE);
- volume = _gtk_file_system_get_volume_for_file (impl->file_system, col_data);
+ volume = _gtk_file_system_get_volume_for_file (impl->priv->file_system, col_data);
data = g_new0 (struct ShortcutsActivateData, 1);
data->impl = g_object_ref (impl);
@@ -9931,16 +9227,16 @@ shortcuts_activate_iter (GtkFileChooserDefault *impl,
mount_operation = gtk_mount_operation_new (GTK_WINDOW (toplevel));
- impl->shortcuts_activate_iter_cancellable =
- _gtk_file_system_mount_enclosing_volume (impl->file_system, col_data,
+ impl->priv->shortcuts_activate_iter_cancellable =
+ _gtk_file_system_mount_enclosing_volume (impl->priv->file_system, col_data,
mount_operation,
shortcuts_activate_mount_enclosing_volume,
data);
}
else
{
- impl->shortcuts_activate_iter_cancellable =
- _gtk_file_system_get_info (impl->file_system, data->file,
+ impl->priv->shortcuts_activate_iter_cancellable =
+ _gtk_file_system_get_info (impl->priv->file_system, data->file,
"standard::type",
shortcuts_activate_get_info_cb, data);
}
@@ -9967,7 +9263,7 @@ shortcuts_key_press_event_cb (GtkWidget *widget,
if (key_is_left_or_right (event))
{
- gtk_widget_grab_focus (impl->browse_files_tree_view);
+ gtk_widget_grab_focus (impl->priv->browse_files_tree_view);
return TRUE;
}
@@ -10001,10 +9297,10 @@ shortcuts_select_func (GtkTreeSelection *selection,
GtkTreeIter filter_iter;
ShortcutType shortcut_type;
- if (!gtk_tree_model_get_iter (impl->shortcuts_pane_filter_model, &filter_iter, path))
+ if (!gtk_tree_model_get_iter (impl->priv->shortcuts_pane_filter_model, &filter_iter, path))
g_assert_not_reached ();
- gtk_tree_model_get (impl->shortcuts_pane_filter_model, &filter_iter, SHORTCUTS_COL_TYPE, &shortcut_type,
-1);
+ gtk_tree_model_get (impl->priv->shortcuts_pane_filter_model, &filter_iter, SHORTCUTS_COL_TYPE,
&shortcut_type, -1);
return shortcut_type != SHORTCUT_TYPE_SEPARATOR;
}
@@ -10018,8 +9314,8 @@ list_select_func (GtkTreeSelection *selection,
{
GtkFileChooserDefault *impl = data;
- if (impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER ||
- impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+ if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER ||
+ impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
{
GtkTreeIter iter;
gboolean is_sensitive;
@@ -10043,8 +9339,8 @@ list_selection_changed (GtkTreeSelection *selection,
GtkFileChooserDefault *impl)
{
/* See if we are in the new folder editable row for Save mode */
- if (impl->operation_mode == OPERATION_MODE_BROWSE &&
- impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+ if (impl->priv->operation_mode == OPERATION_MODE_BROWSE &&
+ impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE)
{
GFileInfo *info;
gboolean had_selection;
@@ -10059,7 +9355,7 @@ list_selection_changed (GtkTreeSelection *selection,
out:
- if (impl->location_entry)
+ if (impl->priv->location_entry)
update_chooser_entry (impl);
path_bar_update (impl);
@@ -10101,8 +9397,8 @@ list_row_activated (GtkTreeView *tree_view,
goto out;
}
- if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
- impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
+ if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
+ impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE)
g_signal_emit_by_name (impl, "file-activated");
out:
@@ -10142,7 +9438,7 @@ update_cell_renderer_attributes (GtkFileChooserDefault *impl)
/* Keep the following column numbers in sync with create_file_list() */
/* name */
- column = gtk_tree_view_get_column (GTK_TREE_VIEW (impl->browse_files_tree_view), 0);
+ column = gtk_tree_view_get_column (GTK_TREE_VIEW (impl->priv->browse_files_tree_view), 0);
list = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (column));
for (walk = list; walk; walk = walk->next)
{
@@ -10166,7 +9462,7 @@ update_cell_renderer_attributes (GtkFileChooserDefault *impl)
g_list_free (list);
/* size */
- column = gtk_tree_view_get_column (GTK_TREE_VIEW (impl->browse_files_tree_view), 1);
+ column = gtk_tree_view_get_column (GTK_TREE_VIEW (impl->priv->browse_files_tree_view), 1);
list = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (column));
renderer = list->data;
gtk_tree_view_column_set_attributes (column, renderer,
@@ -10177,7 +9473,7 @@ update_cell_renderer_attributes (GtkFileChooserDefault *impl)
g_list_free (list);
/* mtime */
- column = gtk_tree_view_get_column (GTK_TREE_VIEW (impl->browse_files_tree_view), 2);
+ column = gtk_tree_view_get_column (GTK_TREE_VIEW (impl->priv->browse_files_tree_view), 2);
list = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (column));
renderer = list->data;
gtk_tree_view_column_set_attributes (column, renderer,
@@ -10197,34 +9493,34 @@ static void
location_set_user_text (GtkFileChooserDefault *impl,
const gchar *path)
{
- gtk_entry_set_text (GTK_ENTRY (impl->location_entry), path);
- gtk_editable_set_position (GTK_EDITABLE (impl->location_entry), -1);
+ gtk_entry_set_text (GTK_ENTRY (impl->priv->location_entry), path);
+ gtk_editable_set_position (GTK_EDITABLE (impl->priv->location_entry), -1);
}
static void
location_popup_handler (GtkFileChooserDefault *impl,
const gchar *path)
{
- if (impl->operation_mode != OPERATION_MODE_BROWSE)
+ if (impl->priv->operation_mode != OPERATION_MODE_BROWSE)
{
GtkWidget *widget_to_focus;
operation_mode_set (impl, OPERATION_MODE_BROWSE);
- if (impl->current_folder)
- change_folder_and_display_error (impl, impl->current_folder, FALSE);
+ if (impl->priv->current_folder)
+ change_folder_and_display_error (impl, impl->priv->current_folder, FALSE);
- if (impl->location_mode == LOCATION_MODE_PATH_BAR)
- widget_to_focus = impl->browse_files_tree_view;
+ if (impl->priv->location_mode == LOCATION_MODE_PATH_BAR)
+ widget_to_focus = impl->priv->browse_files_tree_view;
else
- widget_to_focus = impl->location_entry;
+ widget_to_focus = impl->priv->location_entry;
gtk_widget_grab_focus (widget_to_focus);
return;
}
- if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
- impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
+ if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
+ impl->priv->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
{
if (!path)
return;
@@ -10232,10 +9528,10 @@ location_popup_handler (GtkFileChooserDefault *impl,
location_mode_set (impl, LOCATION_MODE_FILENAME_ENTRY, TRUE);
location_set_user_text (impl, path);
}
- else if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
- impl->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
+ else if (impl->priv->action == GTK_FILE_CHOOSER_ACTION_SAVE ||
+ impl->priv->action == GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER)
{
- gtk_widget_grab_focus (impl->location_entry);
+ gtk_widget_grab_focus (impl->priv->location_entry);
if (path != NULL)
location_set_user_text (impl, path);
}
@@ -10247,14 +9543,14 @@ location_popup_handler (GtkFileChooserDefault *impl,
static void
up_folder_handler (GtkFileChooserDefault *impl)
{
- _gtk_path_bar_up (GTK_PATH_BAR (impl->browse_path_bar));
+ _gtk_path_bar_up (GTK_PATH_BAR (impl->priv->browse_path_bar));
}
/* Handler for the "down-folder" keybinding signal */
static void
down_folder_handler (GtkFileChooserDefault *impl)
{
- _gtk_path_bar_down (GTK_PATH_BAR (impl->browse_path_bar));
+ _gtk_path_bar_down (GTK_PATH_BAR (impl->priv->browse_path_bar));
}
/* Switches to the shortcut in the specified index */
@@ -10264,7 +9560,7 @@ switch_to_shortcut (GtkFileChooserDefault *impl,
{
GtkTreeIter iter;
- if (!gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (impl->shortcuts_model), &iter, NULL, pos))
+ if (!gtk_tree_model_iter_nth_child (GTK_TREE_MODEL (impl->priv->shortcuts_model), &iter, NULL, pos))
g_assert_not_reached ();
shortcuts_activate_iter (impl, &iter);
@@ -10274,7 +9570,7 @@ switch_to_shortcut (GtkFileChooserDefault *impl,
static void
home_folder_handler (GtkFileChooserDefault *impl)
{
- if (impl->has_home)
+ if (impl->priv->has_home)
switch_to_shortcut (impl, shortcuts_get_index (impl, SHORTCUTS_HOME));
}
@@ -10282,7 +9578,7 @@ home_folder_handler (GtkFileChooserDefault *impl)
static void
desktop_folder_handler (GtkFileChooserDefault *impl)
{
- if (impl->has_desktop)
+ if (impl->priv->has_desktop)
switch_to_shortcut (impl, shortcuts_get_index (impl, SHORTCUTS_DESKTOP));
}
@@ -10290,15 +9586,15 @@ desktop_folder_handler (GtkFileChooserDefault *impl)
static void
search_shortcut_handler (GtkFileChooserDefault *impl)
{
- if (impl->has_search)
+ if (impl->priv->has_search)
{
switch_to_shortcut (impl, shortcuts_get_index (impl, SHORTCUTS_SEARCH));
/* we want the entry widget to grab the focus the first
* time, not the browse_files_tree_view widget.
*/
- if (impl->search_entry)
- gtk_widget_grab_focus (impl->search_entry);
+ if (impl->priv->search_entry)
+ gtk_widget_grab_focus (impl->priv->search_entry);
}
}
@@ -10316,13 +9612,13 @@ quick_bookmark_handler (GtkFileChooserDefault *impl,
int bookmark_pos;
GtkTreePath *path;
- if (bookmark_index < 0 || bookmark_index >= impl->num_bookmarks)
+ if (bookmark_index < 0 || bookmark_index >= impl->priv->num_bookmarks)
return;
bookmark_pos = shortcuts_get_index (impl, SHORTCUTS_BOOKMARKS) + bookmark_index;
path = gtk_tree_path_new_from_indices (bookmark_pos, -1);
- gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (impl->browse_shortcuts_tree_view),
+ gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (impl->priv->browse_shortcuts_tree_view),
path, NULL,
FALSE, 0.0, 0.0);
gtk_tree_path_free (path);
@@ -10334,13 +9630,13 @@ static void
show_hidden_handler (GtkFileChooserDefault *impl)
{
g_object_set (impl,
- "show-hidden", !impl->show_hidden,
+ "show-hidden", !impl->priv->show_hidden,
NULL);
}
-
-/* Drag and drop interfaces */
-
+/********************************************************************
+ * ShortcutsPaneModelFilter *
+ ********************************************************************/
static void
_shortcuts_pane_model_filter_class_init (ShortcutsPaneModelFilterClass *class)
{
@@ -10366,7 +9662,7 @@ shortcuts_pane_model_filter_row_draggable (GtkTreeDragSource *drag_source,
pos = *gtk_tree_path_get_indices (path);
bookmarks_pos = shortcuts_get_index (model->impl, SHORTCUTS_BOOKMARKS);
- return (pos >= bookmarks_pos && pos < bookmarks_pos + model->impl->num_bookmarks);
+ return (pos >= bookmarks_pos && pos < bookmarks_pos + model->impl->priv->num_bookmarks);
}
/* GtkTreeDragSource::drag_data_get implementation for the shortcuts
@@ -10400,20 +9696,462 @@ shortcuts_pane_model_filter_drag_dest_iface_init (GtkTreeDragDestIface *iface)
}
#endif
-static GtkTreeModel *
-shortcuts_pane_model_filter_new (GtkFileChooserDefault *impl,
- GtkTreeModel *child_model,
- GtkTreePath *root)
+/********************************************************************
+ * Class/Instance Initializer *
+ ********************************************************************/
+static void
+_gtk_file_chooser_default_class_init (GtkFileChooserDefaultClass *class)
{
- ShortcutsPaneModelFilter *model;
+ static const guint quick_bookmark_keyvals[10] = {
+ GDK_KEY_1, GDK_KEY_2, GDK_KEY_3, GDK_KEY_4, GDK_KEY_5, GDK_KEY_6, GDK_KEY_7, GDK_KEY_8, GDK_KEY_9,
GDK_KEY_0
+ };
+ GObjectClass *gobject_class = G_OBJECT_CLASS (class);
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class);
+ GtkContainerClass *container_class = GTK_CONTAINER_CLASS (class);
+ GtkBindingSet *binding_set;
+ int i;
+
+ gobject_class->finalize = gtk_file_chooser_default_finalize;
+ gobject_class->constructor = gtk_file_chooser_default_constructor;
+ gobject_class->set_property = gtk_file_chooser_default_set_property;
+ gobject_class->get_property = gtk_file_chooser_default_get_property;
+ 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;
+ widget_class->style_updated = gtk_file_chooser_default_style_updated;
+ widget_class->screen_changed = gtk_file_chooser_default_screen_changed;
+
+ signals[LOCATION_POPUP] =
+ g_signal_new_class_handler (I_("location-popup"),
+ G_OBJECT_CLASS_TYPE (class),
+ G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+ G_CALLBACK (location_popup_handler),
+ NULL, NULL,
+ _gtk_marshal_VOID__STRING,
+ G_TYPE_NONE, 1, G_TYPE_STRING);
- model = g_object_new (SHORTCUTS_PANE_MODEL_FILTER_TYPE,
- "child-model", child_model,
- "virtual-root", root,
- NULL);
+ signals[LOCATION_POPUP_ON_PASTE] =
+ g_signal_new_class_handler (I_("location-popup-on-paste"),
+ G_OBJECT_CLASS_TYPE (class),
+ G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+ G_CALLBACK (location_popup_on_paste_handler),
+ NULL, NULL,
+ _gtk_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
- model->impl = impl;
+ signals[LOCATION_TOGGLE_POPUP] =
+ g_signal_new_class_handler (I_("location-toggle-popup"),
+ G_OBJECT_CLASS_TYPE (class),
+ G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+ G_CALLBACK (location_toggle_popup_handler),
+ NULL, NULL,
+ _gtk_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
- return GTK_TREE_MODEL (model);
+ signals[UP_FOLDER] =
+ g_signal_new_class_handler (I_("up-folder"),
+ G_OBJECT_CLASS_TYPE (class),
+ G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+ G_CALLBACK (up_folder_handler),
+ NULL, NULL,
+ _gtk_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ signals[DOWN_FOLDER] =
+ g_signal_new_class_handler (I_("down-folder"),
+ G_OBJECT_CLASS_TYPE (class),
+ G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+ G_CALLBACK (down_folder_handler),
+ NULL, NULL,
+ _gtk_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ signals[HOME_FOLDER] =
+ g_signal_new_class_handler (I_("home-folder"),
+ G_OBJECT_CLASS_TYPE (class),
+ G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+ G_CALLBACK (home_folder_handler),
+ NULL, NULL,
+ _gtk_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ signals[DESKTOP_FOLDER] =
+ g_signal_new_class_handler (I_("desktop-folder"),
+ G_OBJECT_CLASS_TYPE (class),
+ G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+ G_CALLBACK (desktop_folder_handler),
+ NULL, NULL,
+ _gtk_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ signals[QUICK_BOOKMARK] =
+ g_signal_new_class_handler (I_("quick-bookmark"),
+ G_OBJECT_CLASS_TYPE (class),
+ G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+ G_CALLBACK (quick_bookmark_handler),
+ NULL, NULL,
+ _gtk_marshal_VOID__INT,
+ G_TYPE_NONE, 1, G_TYPE_INT);
+
+ signals[SHOW_HIDDEN] =
+ g_signal_new_class_handler (I_("show-hidden"),
+ G_OBJECT_CLASS_TYPE (class),
+ G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+ G_CALLBACK (show_hidden_handler),
+ NULL, NULL,
+ _gtk_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ signals[SEARCH_SHORTCUT] =
+ g_signal_new_class_handler (I_("search-shortcut"),
+ G_OBJECT_CLASS_TYPE (class),
+ G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+ G_CALLBACK (search_shortcut_handler),
+ NULL, NULL,
+ _gtk_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ signals[RECENT_SHORTCUT] =
+ g_signal_new_class_handler (I_("recent-shortcut"),
+ G_OBJECT_CLASS_TYPE (class),
+ G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
+ G_CALLBACK (recent_shortcut_handler),
+ NULL, NULL,
+ _gtk_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ binding_set = gtk_binding_set_by_class (class);
+
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_l, GDK_CONTROL_MASK,
+ "location-toggle-popup",
+ 0);
+
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_slash, 0,
+ "location-popup",
+ 1, G_TYPE_STRING, "/");
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_KP_Divide, 0,
+ "location-popup",
+ 1, G_TYPE_STRING, "/");
+
+#ifdef G_OS_UNIX
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_asciitilde, 0,
+ "location-popup",
+ 1, G_TYPE_STRING, "~");
+#endif
+
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_v, GDK_CONTROL_MASK,
+ "location-popup-on-paste",
+ 0);
+
+ add_normal_and_shifted_binding (binding_set,
+ GDK_KEY_Up, GDK_MOD1_MASK,
+ "up-folder");
+
+ add_normal_and_shifted_binding (binding_set,
+ GDK_KEY_KP_Up, GDK_MOD1_MASK,
+ "up-folder");
+
+ add_normal_and_shifted_binding (binding_set,
+ GDK_KEY_Down, GDK_MOD1_MASK,
+ "down-folder");
+ add_normal_and_shifted_binding (binding_set,
+ GDK_KEY_KP_Down, GDK_MOD1_MASK,
+ "down-folder");
+
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_Home, GDK_MOD1_MASK,
+ "home-folder",
+ 0);
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_KP_Home, GDK_MOD1_MASK,
+ "home-folder",
+ 0);
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_d, GDK_MOD1_MASK,
+ "desktop-folder",
+ 0);
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_h, GDK_CONTROL_MASK,
+ "show-hidden",
+ 0);
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_s, GDK_MOD1_MASK,
+ "search-shortcut",
+ 0);
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_r, GDK_MOD1_MASK,
+ "recent-shortcut",
+ 0);
+
+ for (i = 0; i < 10; i++)
+ gtk_binding_entry_add_signal (binding_set,
+ quick_bookmark_keyvals[i], GDK_MOD1_MASK,
+ "quick-bookmark",
+ 1, G_TYPE_INT, i);
+
+ _gtk_file_chooser_install_properties (gobject_class);
+
+ g_type_class_add_private (gobject_class, sizeof (GtkFileChooserDefaultPrivate));
+
+ /* Bind class to template
+ */
+ gtk_container_class_set_template_from_resource (container_class,
+ "/org/gtk/libgtk/gtkfilechooserdefault.ui");
+
+ /* A *lot* of widgets that we need to handle .... */
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, browse_shortcuts_toolbar);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, browse_shortcuts_swin);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, browse_widgets_box);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, browse_widgets_hpaned);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, browse_header_box);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, browse_shortcuts_tree_view);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, browse_widgets_box);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate,
browse_shortcuts_add_button);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate,
browse_shortcuts_remove_button);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, browse_files_tree_view);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, browse_new_folder_button);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, browse_path_bar_hbox);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, browse_path_bar_size_group);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, browse_path_bar);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, browse_special_mode_icon);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, browse_special_mode_label);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate,
browse_select_a_folder_info_bar);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate,
browse_select_a_folder_label);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate,
browse_select_a_folder_icon);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, filter_combo_hbox);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, filter_combo);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, preview_box);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, extra_align);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, location_button);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, location_entry_box);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, location_label);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, shortcuts_model);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate,
shortcuts_pane_filter_model);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, list_name_column);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, list_pixbuf_renderer);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, list_name_renderer);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, list_mtime_column);
+ gtk_container_class_bind_child (container_class, GtkFileChooserDefaultPrivate, list_size_column);
+
+ /* And a *lot* of callbacks to bind ... */
+ gtk_container_class_bind_callback (container_class, shortcuts_key_press_event_after_cb);
+ gtk_container_class_bind_callback (container_class, shortcuts_key_press_event_cb);
+ gtk_container_class_bind_callback (container_class, shortcuts_drag_drop_cb);
+ gtk_container_class_bind_callback (container_class, shortcuts_drag_data_received_cb);
+ gtk_container_class_bind_callback (container_class, shortcuts_drag_data_delete_cb);
+ gtk_container_class_bind_callback (container_class, shortcuts_drag_end_cb);
+ gtk_container_class_bind_callback (container_class, shortcuts_popup_menu_cb);
+ gtk_container_class_bind_callback (container_class, shortcuts_query_tooltip_cb);
+ gtk_container_class_bind_callback (container_class, shortcuts_button_press_event_cb);
+ gtk_container_class_bind_callback (container_class, shortcuts_drag_motion_cb);
+ gtk_container_class_bind_callback (container_class, shortcuts_drag_leave_cb);
+ gtk_container_class_bind_callback (container_class, shortcuts_drag_begin_cb);
+ gtk_container_class_bind_callback (container_class, shortcuts_selection_changed_cb);
+ gtk_container_class_bind_callback (container_class, shortcuts_editing_canceled);
+ gtk_container_class_bind_callback (container_class, shortcuts_edited);
+ gtk_container_class_bind_callback (container_class, add_bookmark_button_clicked_cb);
+ gtk_container_class_bind_callback (container_class, remove_bookmark_button_clicked_cb);
+ gtk_container_class_bind_callback (container_class, browse_files_key_press_event_cb);
+ gtk_container_class_bind_callback (container_class, file_list_drag_drop_cb);
+ gtk_container_class_bind_callback (container_class, file_list_drag_data_received_cb);
+ gtk_container_class_bind_callback (container_class, list_popup_menu_cb);
+ gtk_container_class_bind_callback (container_class, file_list_query_tooltip_cb);
+ gtk_container_class_bind_callback (container_class, list_button_press_event_cb);
+ gtk_container_class_bind_callback (container_class, list_row_activated);
+ gtk_container_class_bind_callback (container_class, file_list_drag_motion_cb);
+ gtk_container_class_bind_callback (container_class, list_selection_changed);
+ gtk_container_class_bind_callback (container_class, renderer_editing_canceled_cb);
+ gtk_container_class_bind_callback (container_class, renderer_edited_cb);
+ gtk_container_class_bind_callback (container_class, filter_combo_changed);
+ gtk_container_class_bind_callback (container_class, location_button_toggled_cb);
+ gtk_container_class_bind_callback (container_class, new_folder_button_clicked);
+ gtk_container_class_bind_callback (container_class, path_bar_clicked);
+}
+
+static void
+gtk_file_chooser_default_iface_init (GtkFileChooserIface *iface)
+{
+ iface->select_file = gtk_file_chooser_default_select_file;
+ iface->unselect_file = gtk_file_chooser_default_unselect_file;
+ iface->select_all = gtk_file_chooser_default_select_all;
+ iface->unselect_all = gtk_file_chooser_default_unselect_all;
+ iface->get_files = gtk_file_chooser_default_get_files;
+ iface->get_preview_file = gtk_file_chooser_default_get_preview_file;
+ iface->get_file_system = gtk_file_chooser_default_get_file_system;
+ iface->set_current_folder = gtk_file_chooser_default_set_current_folder;
+ iface->get_current_folder = gtk_file_chooser_default_get_current_folder;
+ iface->set_current_name = gtk_file_chooser_default_set_current_name;
+ iface->add_filter = gtk_file_chooser_default_add_filter;
+ iface->remove_filter = gtk_file_chooser_default_remove_filter;
+ iface->list_filters = gtk_file_chooser_default_list_filters;
+ iface->add_shortcut_folder = gtk_file_chooser_default_add_shortcut_folder;
+ iface->remove_shortcut_folder = gtk_file_chooser_default_remove_shortcut_folder;
+ iface->list_shortcut_folders = gtk_file_chooser_default_list_shortcut_folders;
+}
+
+static void
+gtk_file_chooser_embed_default_iface_init (GtkFileChooserEmbedIface *iface)
+{
+ iface->get_default_size = gtk_file_chooser_default_get_default_size;
+ iface->should_respond = gtk_file_chooser_default_should_respond;
+ iface->initial_focus = gtk_file_chooser_default_initial_focus;
}
+static void
+post_process_ui (GtkFileChooserDefault *impl)
+{
+ GtkTreeSelection *selection;
+ GtkStyleContext *context;
+ GtkCellRenderer *cell;
+ GList *cells;
+
+ /* Target types for dragging a row to/from the shortcuts list */
+ const GtkTargetEntry tree_model_row_targets[] = {
+ { "GTK_TREE_MODEL_ROW", GTK_TARGET_SAME_WIDGET, GTK_TREE_MODEL_ROW }
+ };
+
+ /* Shortcuts model needs a pointer back to the 'impl' */
+ SHORTCUTS_PANE_MODEL_FILTER (impl->priv->shortcuts_pane_filter_model)->impl = impl;
+
+ /* Some qdata, qdata can't be set with GtkBuilder */
+#ifdef PROFILE_FILE_CHOOSER
+ g_object_set_data (G_OBJECT (impl->priv->browse_shortcuts_tree_view), "fmq-name", "shortcuts");
+ g_object_set_data (G_OBJECT (impl->priv->browse_files_tree_view), "fmq-name", "file_list");
+#endif
+ g_object_set_data (G_OBJECT (impl->priv->browse_files_tree_view), I_("GtkFileChooserDefault"), impl);
+
+ /* Setup Places and File List Treeviews
+ */
+ gtk_tree_view_enable_model_drag_source (GTK_TREE_VIEW (impl->priv->browse_shortcuts_tree_view),
+ GDK_BUTTON1_MASK,
+ tree_model_row_targets,
+ G_N_ELEMENTS (tree_model_row_targets),
+ GDK_ACTION_MOVE);
+
+ gtk_drag_dest_set (impl->priv->browse_shortcuts_tree_view,
+ GTK_DEST_DEFAULT_ALL,
+ tree_model_row_targets,
+ G_N_ELEMENTS (tree_model_row_targets),
+ GDK_ACTION_COPY | GDK_ACTION_MOVE);
+ gtk_drag_dest_add_uri_targets (impl->priv->browse_shortcuts_tree_view);
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_files_tree_view));
+ gtk_tree_selection_set_select_function (selection,
+ list_select_func,
+ impl, NULL);
+ gtk_tree_view_enable_model_drag_source (GTK_TREE_VIEW (impl->priv->browse_files_tree_view),
+ GDK_BUTTON1_MASK,
+ NULL, 0,
+ GDK_ACTION_COPY | GDK_ACTION_MOVE);
+ gtk_drag_source_add_uri_targets (impl->priv->browse_files_tree_view);
+
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (impl->priv->browse_shortcuts_tree_view));
+ gtk_tree_selection_set_select_function (selection,
+ shortcuts_select_func,
+ impl, NULL);
+
+ gtk_tree_view_set_row_separator_func (GTK_TREE_VIEW (impl->priv->browse_shortcuts_tree_view),
+ shortcuts_row_separator_func,
+ NULL, NULL);
+
+ gtk_drag_dest_set (impl->priv->browse_files_tree_view,
+ GTK_DEST_DEFAULT_ALL,
+ NULL, 0,
+ GDK_ACTION_COPY | GDK_ACTION_MOVE);
+ gtk_drag_dest_add_uri_targets (impl->priv->browse_files_tree_view);
+
+ /* GtkStyleContext 'junctions' cannot be set with GtkBuilder */
+ context = gtk_widget_get_style_context (impl->priv->browse_shortcuts_swin);
+ gtk_style_context_set_junction_sides (context, GTK_JUNCTION_BOTTOM);
+
+ context = gtk_widget_get_style_context (impl->priv->browse_shortcuts_toolbar);
+ gtk_style_context_set_junction_sides (context, GTK_JUNCTION_TOP);
+
+ /* File browser treemodel columns are shared between GtkFileChooser implementations,
+ * so we don't set cell renderer attributes in GtkBuilder, but rather keep that
+ * in code.
+ */
+ file_list_set_sort_column_ids (impl);
+ update_cell_renderer_attributes (impl);
+
+ /* Get the combo's text renderer and set ellipsize parameters,
+ * perhaps GtkComboBoxText should declare the cell renderer
+ * as an 'internal-child', then we could configure it in GtkBuilder
+ * instead of hard coding it here.
+ */
+ cells = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (impl->priv->filter_combo));
+ g_assert (cells);
+ cell = cells->data;
+ g_object_set (G_OBJECT (cell),
+ "ellipsize", PANGO_ELLIPSIZE_END,
+ NULL);
+
+ g_list_free (cells);
+
+ /* Set the GtkPathBar file system backend */
+ _gtk_path_bar_set_file_system (GTK_PATH_BAR (impl->priv->browse_path_bar), impl->priv->file_system);
+
+ /* Set the fixed size icon renderer, this requires
+ * that priv->icon_size be already setup.
+ */
+ set_icon_cell_renderer_fixed_size (impl);
+}
+
+static void
+_gtk_file_chooser_default_init (GtkFileChooserDefault *impl)
+{
+ profile_start ("start", NULL);
+#ifdef PROFILE_FILE_CHOOSER
+ access ("MARK: *** CREATE FILE CHOOSER", F_OK);
+#endif
+
+ impl->priv = G_TYPE_INSTANCE_GET_PRIVATE (impl,
+ GTK_TYPE_FILE_CHOOSER_DEFAULT,
+ GtkFileChooserDefaultPrivate);
+
+ impl->priv->local_only = TRUE;
+ impl->priv->preview_widget_active = TRUE;
+ impl->priv->use_preview_label = TRUE;
+ impl->priv->select_multiple = FALSE;
+ impl->priv->show_hidden = FALSE;
+ impl->priv->show_size_column = TRUE;
+ impl->priv->icon_size = FALLBACK_ICON_SIZE;
+ impl->priv->load_state = LOAD_EMPTY;
+ impl->priv->reload_state = RELOAD_EMPTY;
+ impl->priv->pending_select_files = NULL;
+ impl->priv->location_mode = LOCATION_MODE_PATH_BAR;
+ impl->priv->operation_mode = OPERATION_MODE_BROWSE;
+ impl->priv->sort_column = MODEL_COL_NAME;
+ impl->priv->sort_order = GTK_SORT_ASCENDING;
+ impl->priv->recent_manager = gtk_recent_manager_get_default ();
+ impl->priv->create_folders = TRUE;
+
+ /* Ensure GTK+ private types used by the template
+ * definition before calling gtk_container_init_template()
+ */
+ g_type_ensure (SHORTCUTS_PANE_MODEL_FILTER_TYPE);
+ g_type_ensure (GTK_TYPE_PATH_BAR);
+ gtk_container_init_template (GTK_CONTAINER (impl));
+
+ set_file_system_backend (impl);
+
+ /* Populate the Places sidebar */
+ shortcuts_model_populate (impl);
+
+ /* Setup various attributes and callbacks in the UI
+ * which cannot be done with GtkBuilder.
+ */
+ post_process_ui (impl);
+
+ profile_end ("end", NULL);
+}
diff --git a/gtk/gtkfilechooserdefault.ui b/gtk/gtkfilechooserdefault.ui
new file mode 100644
index 0000000..d6fdb26
--- /dev/null
+++ b/gtk/gtkfilechooserdefault.ui
@@ -0,0 +1,552 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <!-- interface-requires gtkprivate 3.10 -->
+ <!-- interface-requires gtk+ 3.10 -->
+ <template class="GtkFileChooserDefault" parent="GtkBox">
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkBox" id="browse_widgets_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkBox" id="browse_header_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkBox" id="location_entry_box">
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkLabel" id="location_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Location:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkPaned" id="browse_widgets_hpaned">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <child>
+ <object class="GtkBox" id="browse_shortcuts_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkScrolledWindow" id="browse_shortcuts_swin">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">never</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkTreeView" id="browse_shortcuts_tree_view">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="has_tooltip">True</property>
+ <property name="model">shortcuts_pane_filter_model</property>
+ <property name="enable_search">False</property>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="browse_shortcuts_tree_view-atkobject">
+ <property name="AtkObject::accessible-name" translatable="yes">Places</property>
+ </object>
+ </child>
+ <style>
+ <class name="sidebar"/>
+ </style>
+ <signal name="key-press-event" handler="shortcuts_key_press_event_after_cb"
after="yes" swapped="no"/>
+ <signal name="key-press-event" handler="shortcuts_key_press_event_cb" swapped="no"/>
+ <signal name="drag-drop" handler="shortcuts_drag_drop_cb" swapped="no"/>
+ <signal name="drag-data-received" handler="shortcuts_drag_data_received_cb"
swapped="no"/>
+ <signal name="drag-data-delete" handler="shortcuts_drag_data_delete_cb"
swapped="no"/>
+ <signal name="drag-end" handler="shortcuts_drag_end_cb" swapped="no"/>
+ <signal name="popup-menu" handler="shortcuts_popup_menu_cb" swapped="no"/>
+ <signal name="query-tooltip" handler="shortcuts_query_tooltip_cb" swapped="no"/>
+ <signal name="button-press-event" handler="shortcuts_button_press_event_cb"
swapped="no"/>
+ <signal name="drag-motion" handler="shortcuts_drag_motion_cb" swapped="no"/>
+ <signal name="drag-leave" handler="shortcuts_drag_leave_cb" swapped="no"/>
+ <signal name="drag-begin" handler="shortcuts_drag_begin_cb" swapped="no"/>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeview-selection1">
+ <signal name="changed" handler="shortcuts_selection_changed_cb" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="treeviewcolumn1">
+ <property name="title" translatable="yes">Places</property>
+ <child>
+ <object class="GtkCellRendererPixbuf" id="cellrendererpixbuf1"/>
+ <attributes>
+ <attribute name="visible">5</attribute>
+ <attribute name="pixbuf">0</attribute>
+ </attributes>
+ </child>
+ <child>
+ <object class="GtkCellRendererText" id="cellrenderertext1">
+ <property name="ellipsize">end</property>
+ <property name="width_chars">12</property>
+ <signal name="editing-canceled" handler="shortcuts_editing_canceled"
swapped="no"/>
+ <signal name="edited" handler="shortcuts_edited" swapped="no"/>
+ </object>
+ <attributes>
+ <attribute name="text">1</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolbar" id="browse_shortcuts_toolbar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="toolbar_style">icons</property>
+ <property name="icon_size">1</property>
+ <style>
+ <class name="inline-toolbar"/>
+ </style>
+ <child>
+ <object class="GtkToolButton" id="browse_shortcuts_add_button">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Add the selected folder to the
Bookmarks</property>
+ <property name="use_underline">True</property>
+ <property name="icon_name">list-add-symbolic</property>
+ <signal name="clicked" handler="add_bookmark_button_clicked_cb" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToolButton" id="browse_shortcuts_remove_button">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Remove the selected
bookmark</property>
+ <property name="use_underline">True</property>
+ <property name="icon_name">list-remove-symbolic</property>
+ <signal name="clicked" handler="remove_bookmark_button_clicked_cb" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">False</property>
+ <property name="shrink">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="browse_files_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkBox" id="list_and_preview_box">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkScrolledWindow" id="browse_files_swin">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="vscrollbar_policy">always</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkTreeView" id="browse_files_tree_view">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="has_tooltip">True</property>
+ <property name="rules_hint">True</property>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="browse_files_tree_view-atkobject">
+ <property name="AtkObject::accessible-name"
translatable="yes">Files</property>
+ </object>
+ </child>
+ <signal name="key-press-event" handler="browse_files_key_press_event_cb"
swapped="no"/>
+ <signal name="drag-drop" handler="file_list_drag_drop_cb" swapped="no"/>
+ <signal name="drag-data-received" handler="file_list_drag_data_received_cb"
swapped="no"/>
+ <signal name="popup-menu" handler="list_popup_menu_cb" swapped="no"/>
+ <signal name="query-tooltip" handler="file_list_query_tooltip_cb" swapped="no"/>
+ <signal name="button-press-event" handler="list_button_press_event_cb"
swapped="no"/>
+ <signal name="row-activated" handler="list_row_activated" swapped="no"/>
+ <signal name="drag-motion" handler="file_list_drag_motion_cb" swapped="no"/>
+ <child internal-child="selection">
+ <object class="GtkTreeSelection" id="treeview-selection2">
+ <signal name="changed" handler="list_selection_changed" swapped="no"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="list_name_column">
+ <property name="resizable">True</property>
+ <property name="title" translatable="yes">Name</property>
+ <property name="expand">True</property>
+ <child>
+ <object class="GtkCellRendererPixbuf" id="list_pixbuf_renderer"/>
+ </child>
+ <child>
+ <object class="GtkCellRendererText" id="list_name_renderer">
+ <property name="ellipsize">end</property>
+ <signal name="editing-canceled" handler="renderer_editing_canceled_cb"
swapped="no"/>
+ <signal name="edited" handler="renderer_edited_cb" swapped="no"/>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="list_size_column">
+ <property name="resizable">True</property>
+ <property name="title" translatable="yes">Size</property>
+ <child>
+ <object class="GtkCellRendererText" id="list_size_renderer">
+ <property name="alignment">right</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="list_mtime_column">
+ <property name="resizable">True</property>
+ <property name="title" translatable="yes">Modifed</property>
+ <child>
+ <object class="GtkCellRendererText" id="list_mtime_renderer"/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="preview_box">
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">12</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="filter_combo_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkComboBoxText" id="filter_combo">
+ <property name="focus_on_click">False</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Select which types of files are
shown</property>
+ <property name="entry_text_column">0</property>
+ <property name="id_column">1</property>
+ <signal name="changed" handler="filter_combo_changed" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="resize">True</property>
+ <property name="shrink">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="extra_align">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="valign">center</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </template>
+ <object class="GtkBox" id="browse_path_bar_hbox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
+ <child>
+ <object class="GtkToggleButton" id="location_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="tooltip_text" translatable="yes">Type a file name</property>
+ <property name="image">location_button_image</property>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="location_button-atkobject">
+ <property name="AtkObject::accessible-name" translatable="yes">Type a file name</property>
+ </object>
+ </child>
+ <signal name="toggled" handler="location_button_toggled_cb" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkPathBar" id="browse_path_bar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <signal name="path-clicked" handler="path_bar_clicked" after="yes" swapped="no"/>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkInfoBar" id="browse_select_a_folder_info_bar">
+ <property name="app_paintable">True</property>
+ <property name="can_focus">False</property>
+ <child internal-child="content_area">
+ <object class="GtkBox" id="infobar-content_area1">
+ <property name="can_focus">False</property>
+ <property name="border_width">8</property>
+ <property name="spacing">16</property>
+ <child>
+ <object class="GtkImage" id="browse_select_a_folder_icon">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-directory</property>
+ <property name="icon-size">1</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="browse_select_a_folder_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">message</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="infobar-action_area1">
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <property name="layout_style">end</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage" id="browse_special_mode_icon">
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-missing-image</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="browse_special_mode_label">
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">special</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="browse_new_folder_button">
+ <property name="label" translatable="yes">Create Fo_lder</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_underline">True</property>
+ <signal name="clicked" handler="new_folder_button_clicked" swapped="no"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
+ </object>
+ <object class="GtkImage" id="location_button_image">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="stock">gtk-edit</property>
+ </object>
+ <object class="GtkSizeGroup" id="browse_path_bar_size_group">
+ <property name="mode">vertical</property>
+ <widgets>
+ <widget name="location_button"/>
+ <widget name="browse_path_bar"/>
+ <widget name="browse_select_a_folder_info_bar"/>
+ <widget name="browse_special_mode_icon"/>
+ <widget name="browse_special_mode_label"/>
+ <widget name="browse_new_folder_button"/>
+ </widgets>
+ </object>
+ <object class="GtkSizeGroup" id="paned_group">
+ <property name="mode">vertical</property>
+ <widgets>
+ <widget name="browse_shortcuts_swin"/>
+ <widget name="browse_files_swin"/>
+ </widgets>
+ </object>
+ <object class="GtkListStore" id="shortcuts_model">
+ <columns>
+ <!-- column-name pixbuf -->
+ <column type="GdkPixbuf"/>
+ <!-- column-name name -->
+ <column type="gchararray"/>
+ <!-- column-name path-or-volume -->
+ <column type="gpointer"/>
+ <!-- column-name shortcut-type -->
+ <column type="gint"/>
+ <!-- column-name removable -->
+ <column type="gboolean"/>
+ <!-- column-name pixbuf-visible -->
+ <column type="gboolean"/>
+ <!-- column-name cancellable -->
+ <column type="gpointer"/>
+ </columns>
+ </object>
+ <object class="ShortcutsPaneModelFilter" id="shortcuts_pane_filter_model">
+ <property name="child_model">shortcuts_model</property>
+ </object>
+</interface>
diff --git a/gtk/gtkfilechooserprivate.h b/gtk/gtkfilechooserprivate.h
index 96329ad..3f7d08c 100644
--- a/gtk/gtkfilechooserprivate.h
+++ b/gtk/gtkfilechooserprivate.h
@@ -46,6 +46,7 @@ G_BEGIN_DECLS
#define GTK_FILE_CHOOSER_GET_IFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), GTK_TYPE_FILE_CHOOSER,
GtkFileChooserIface))
typedef struct _GtkFileChooserIface GtkFileChooserIface;
+typedef struct _GtkFileChooserDefaultPrivate GtkFileChooserDefaultPrivate;
struct _GtkFileChooserIface
{
@@ -152,160 +153,9 @@ struct _GtkFileChooserDefault
{
GtkBox parent_instance;
- GtkFileChooserAction action;
-
- GtkFileSystem *file_system;
-
- /* Save mode widgets */
- GtkWidget *save_widgets;
- GtkWidget *save_widgets_table;
-
- GtkWidget *save_folder_label;
-
- /* The file browsing widgets */
- GtkWidget *browse_widgets_box;
- GtkWidget *browse_widgets_hpaned;
- GtkWidget *browse_header_box;
- GtkWidget *browse_shortcuts_tree_view;
- GtkWidget *browse_shortcuts_add_button;
- GtkWidget *browse_shortcuts_remove_button;
- GtkWidget *browse_shortcuts_popup_menu;
- GtkWidget *browse_shortcuts_popup_menu_remove_item;
- GtkWidget *browse_shortcuts_popup_menu_rename_item;
- GtkWidget *browse_files_tree_view;
- GtkWidget *browse_files_popup_menu;
- GtkWidget *browse_files_popup_menu_add_shortcut_item;
- GtkWidget *browse_files_popup_menu_hidden_files_item;
- GtkWidget *browse_files_popup_menu_size_column_item;
- GtkWidget *browse_files_popup_menu_copy_file_location_item;
- GtkWidget *browse_files_popup_menu_visit_file_item;
- GtkWidget *browse_new_folder_button;
- GtkWidget *browse_path_bar_hbox;
- GtkSizeGroup *browse_path_bar_size_group;
- GtkWidget *browse_path_bar;
- GtkWidget *browse_special_mode_icon;
- GtkWidget *browse_special_mode_label;
- GtkWidget *browse_select_a_folder_info_bar;
- GtkWidget *browse_select_a_folder_label;
- GtkWidget *browse_select_a_folder_icon;
-
- GtkFileSystemModel *browse_files_model;
- char *browse_files_last_selected_name;
-
- /* OPERATION_MODE_SEARCH */
- GtkWidget *search_hbox;
- GtkWidget *search_entry;
- GtkSearchEngine *search_engine;
- GtkQuery *search_query;
- GtkFileSystemModel *search_model;
-
- /* OPERATION_MODE_RECENT */
- GtkRecentManager *recent_manager;
- GtkFileSystemModel *recent_model;
- guint load_recent_id;
-
- GtkWidget *filter_combo_hbox;
- GtkWidget *filter_combo;
- GtkWidget *preview_box;
- GtkWidget *preview_label;
- GtkWidget *preview_widget;
- GtkWidget *extra_align;
- GtkWidget *extra_widget;
-
- GtkWidget *location_button;
- GtkWidget *location_entry_box;
- GtkWidget *location_label;
- GtkWidget *location_entry;
- LocationMode location_mode;
-
- GtkListStore *shortcuts_model;
-
- /* Filter for the shortcuts pane. We filter out the "current folder" row and
- * the separator that we use for the "Save in folder" combo.
- */
- GtkTreeModel *shortcuts_pane_filter_model;
-
- /* Handles */
- GSList *loading_shortcuts;
- GSList *reload_icon_cancellables;
- GCancellable *file_list_drag_data_received_cancellable;
- GCancellable *update_current_folder_cancellable;
- GCancellable *should_respond_get_info_cancellable;
- GCancellable *file_exists_get_info_cancellable;
- GCancellable *update_from_entry_cancellable;
- GCancellable *shortcuts_activate_iter_cancellable;
-
- LoadState load_state;
- ReloadState reload_state;
- guint load_timeout_id;
-
- OperationMode operation_mode;
-
- GSList *pending_select_files;
-
- GtkFileFilter *current_filter;
- GSList *filters;
-
- int num_volumes;
- int num_shortcuts;
- int num_bookmarks;
-
- gulong volumes_changed_id;
- gulong bookmarks_changed_id;
-
- GFile *current_volume_file;
- GFile *current_folder;
- GFile *preview_file;
- char *preview_display_name;
-
- GtkTreeViewColumn *list_name_column;
- GtkCellRenderer *list_name_renderer;
- GtkTreeViewColumn *list_mtime_column;
- GtkTreeViewColumn *list_size_column;
-
- GSource *edited_idle;
- char *edited_new_text;
-
- gulong settings_signal_id;
- int icon_size;
-
- GSource *focus_entry_idle;
-
- gulong toplevel_set_focus_id;
- GtkWidget *toplevel_last_focus_widget;
-
- gint sort_column;
- GtkSortType sort_order;
-
-#if 0
- GdkDragContext *shortcuts_drag_context;
- GSource *shortcuts_drag_outside_idle;
-#endif
-
- /* Flags */
-
- guint local_only : 1;
- guint preview_widget_active : 1;
- guint use_preview_label : 1;
- guint select_multiple : 1;
- guint show_hidden : 1;
- guint do_overwrite_confirmation : 1;
- guint list_sort_ascending : 1;
- guint changing_folder : 1;
- guint shortcuts_current_folder_active : 1;
- guint has_home : 1;
- guint has_desktop : 1;
- guint has_search : 1;
- guint has_recent: 1;
- guint show_size_column : 1;
- guint create_folders : 1;
-
-#if 0
- guint shortcuts_drag_outside : 1;
-#endif
+ GtkFileChooserDefaultPrivate *priv;
};
-
G_END_DECLS
#endif /* __GTK_FILE_CHOOSER_PRIVATE_H__ */
diff --git a/gtk/tests/templates.c b/gtk/tests/templates.c
index 5eb4fd0..e6bbd84 100644
--- a/gtk/tests/templates.c
+++ b/gtk/tests/templates.c
@@ -15,9 +15,23 @@
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
* Authors: Tristan Van Berkom <tristanvb openismus com>
+ *
+ *
+ * NOTE:
+ *
+ * This test case should ideally be run with GTK_CONTAINER_ASSERT_COMPONENTS=1
+ * set into the environment.
*/
#include <gtk/gtk.h>
+static gboolean
+main_loop_quit_cb (gpointer data)
+{
+ gtk_main_quit ();
+
+ return FALSE;
+}
+
static void
test_dialog_basic (void)
{
@@ -25,6 +39,9 @@ test_dialog_basic (void)
dialog = gtk_dialog_new();
g_assert (GTK_IS_DIALOG (dialog));
+ g_assert (gtk_dialog_get_action_area (GTK_DIALOG (dialog)) != NULL);
+ g_assert (gtk_dialog_get_content_area (GTK_DIALOG (dialog)) != NULL);
+
gtk_widget_destroy (dialog);
}
@@ -136,6 +153,13 @@ test_app_chooser_dialog_basic (void)
widget = gtk_app_chooser_dialog_new_for_content_type (NULL, 0, "text/plain");
g_assert (GTK_IS_APP_CHOOSER_DIALOG (widget));
+
+ /* GtkAppChooserDialog bug, if destroyed before spinning
+ * the main context then app_chooser_online_get_default_ready_cb()
+ * will be eventually called and segfault.
+ */
+ g_timeout_add (500, main_loop_quit_cb, NULL);
+ gtk_main();
gtk_widget_destroy (widget);
}
@@ -149,6 +173,44 @@ test_color_chooser_dialog_basic (void)
gtk_widget_destroy (widget);
}
+/* Avoid warnings from GVFS-RemoteVolumeMonitor */
+static gboolean
+ignore_gvfs_warning (const gchar *log_domain,
+ GLogLevelFlags log_level,
+ const gchar *message,
+ gpointer user_data)
+{
+ if (g_strcmp0 (log_domain, "GVFS-RemoteVolumeMonitor") == 0)
+ return FALSE;
+
+ return TRUE;
+}
+
+static void
+test_file_chooser_widget_basic (void)
+{
+ GtkWidget *widget;
+
+ g_test_log_set_fatal_handler (ignore_gvfs_warning, NULL);
+
+ widget = gtk_file_chooser_widget_new (GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
+ g_assert (GTK_IS_FILE_CHOOSER_WIDGET (widget));
+
+ /* XXX BUG:
+ *
+ * Spin the mainloop for a bit, this allows the file operations
+ * to complete, GtkFileChooserDefault has a bug where it leaks
+ * GtkTreeRowReferences to the internal shortcuts_model
+ *
+ * Since we assert all automated children are finalized we
+ * can catch this
+ */
+ g_timeout_add (100, main_loop_quit_cb, NULL);
+ gtk_main();
+
+ gtk_widget_destroy (widget);
+}
+
int
main (int argc, char **argv)
{
@@ -167,6 +229,7 @@ main (int argc, char **argv)
g_test_add_func ("/Template/GtkAppChooserWidget/Basic", test_app_chooser_widget_basic);
g_test_add_func ("/Template/GtkAppChooserDialog/Basic", test_app_chooser_dialog_basic);
g_test_add_func ("/Template/GtkColorChooserDialog/Basic", test_color_chooser_dialog_basic);
+ g_test_add_func ("/Template/GtkFileChooserWidget/Basic", test_file_chooser_widget_basic);
return g_test_run();
}
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 3455a40..659332e 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -280,6 +280,7 @@ modules/printbackends/test/gtkprintbackendtest.c
[type: gettext/glade]gtk/gtkassistant.ui
[type: gettext/glade]gtk/gtkcolorchooserdialog.ui
[type: gettext/glade]gtk/gtkdialog.ui
+[type: gettext/glade]gtk/gtkfilechooserdedault.ui
[type: gettext/glade]gtk/gtkinfobar.ui
[type: gettext/glade]gtk/gtklockbutton.ui
[type: gettext/glade]gtk/gtkmessagedialog.ui
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]