GtkFileChooserDefault: Define children with a GtkBuilder template

This commit is contained in:
Tristan Van Berkom 2013-03-25 01:40:08 +09:00
parent 09b44d7ab5
commit bf909f5615
6 changed files with 2298 additions and 2097 deletions

View File

@ -1102,6 +1102,7 @@ COMPOSITE_TEMPLATES = \
gtkassistant.ui \
gtkcolorchooserdialog.ui \
gtkdialog.ui \
gtkfilechooserdefault.ui \
gtkinfobar.ui \
gtklockbutton.ui \
gtkmessagedialog.ui \

View File

@ -17,6 +17,7 @@
<file compressed="true">gtkassistant.ui</file>
<file compressed="true">gtkcolorchooserdialog.ui</file>
<file compressed="true">gtkdialog.ui</file>
<file compressed="true">gtkfilechooserdefault.ui</file>
<file compressed="true">gtkinfobar.ui</file>
<file compressed="true">gtklockbutton.ui</file>
<file compressed="true">gtkmessagedialog.ui</file>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,555 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface domain="gtk30">
<!-- interface-requires gtkprivate 3.10 -->
<!-- interface-requires gtk+ 3.10 -->
<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>
<template class="GtkFileChooserDefault" parent="GtkBox">
<property name="can_focus">False</property>
<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>
<child>
<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"/>
</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">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">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>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">1</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="button-press-event" handler="shortcuts_button_press_event_cb" swapped="no"/>
<signal name="drag-begin" handler="shortcuts_drag_begin_cb" swapped="no"/>
<signal name="drag-data-delete" handler="shortcuts_drag_data_delete_cb" swapped="no"/>
<signal name="drag-data-received" handler="shortcuts_drag_data_received_cb" swapped="no"/>
<signal name="drag-drop" handler="shortcuts_drag_drop_cb" swapped="no"/>
<signal name="drag-end" handler="shortcuts_drag_end_cb" swapped="no"/>
<signal name="drag-leave" handler="shortcuts_drag_leave_cb" swapped="no"/>
<signal name="drag-motion" handler="shortcuts_drag_motion_cb" swapped="no"/>
<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="popup-menu" handler="shortcuts_popup_menu_cb" swapped="no"/>
<signal name="query-tooltip" handler="shortcuts_query_tooltip_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="edited" handler="shortcuts_edited" swapped="no"/>
<signal name="editing-canceled" handler="shortcuts_editing_canceled" 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>
<style>
<class name="inline-toolbar"/>
</style>
<property name="icon_size">1</property>
<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="button-press-event" handler="list_button_press_event_cb" swapped="no"/>
<signal name="drag-data-received" handler="file_list_drag_data_received_cb" swapped="no"/>
<signal name="drag-drop" handler="file_list_drag_drop_cb" swapped="no"/>
<signal name="drag-motion" handler="file_list_drag_motion_cb" swapped="no"/>
<signal name="key-press-event" handler="browse_files_key_press_event_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="row-activated" handler="list_row_activated" 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="edited" handler="renderer_edited_cb" swapped="no"/>
<signal name="editing-canceled" handler="renderer_editing_canceled_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="can_focus">False</property>
<property name="spacing">12</property>
<child>
<object class="GtkComboBoxText" id="filter_combo">
<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="focus_on_click">False</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="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="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>

View File

@ -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__ */

View File

@ -18,6 +18,14 @@
*/
#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 +33,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 +147,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 +167,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)
{
@ -173,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();
}