Centralize changing the operation mode in operation_mode_set()
This will be the central function to switch operation modes: stop searches or the recent-files process; switch widgets, etc. We factor out the common code from recent_switch_to_browse_mode() and search_switch_to_browse_mode(), and remove those functions. All the code that switched modes by hand now calls the central operation_mode_set(). Signed-off-by: Federico Mena Quintero <federico@gnome.org>
This commit is contained in:
@ -411,7 +411,6 @@ static void search_stop_searching (GtkFileChooserDefault *impl,
|
|||||||
static void search_clear_model (GtkFileChooserDefault *impl,
|
static void search_clear_model (GtkFileChooserDefault *impl,
|
||||||
gboolean remove_from_treeview);
|
gboolean remove_from_treeview);
|
||||||
static gboolean search_should_respond (GtkFileChooserDefault *impl);
|
static gboolean search_should_respond (GtkFileChooserDefault *impl);
|
||||||
static void search_switch_to_browse_mode (GtkFileChooserDefault *impl);
|
|
||||||
static GSList *search_get_selected_files (GtkFileChooserDefault *impl);
|
static GSList *search_get_selected_files (GtkFileChooserDefault *impl);
|
||||||
static void search_entry_activate_cb (GtkEntry *entry,
|
static void search_entry_activate_cb (GtkEntry *entry,
|
||||||
gpointer data);
|
gpointer data);
|
||||||
@ -421,7 +420,6 @@ static void recent_stop_loading (GtkFileChooserDefault *impl);
|
|||||||
static void recent_clear_model (GtkFileChooserDefault *impl,
|
static void recent_clear_model (GtkFileChooserDefault *impl,
|
||||||
gboolean remove_from_treeview);
|
gboolean remove_from_treeview);
|
||||||
static gboolean recent_should_respond (GtkFileChooserDefault *impl);
|
static gboolean recent_should_respond (GtkFileChooserDefault *impl);
|
||||||
static void recent_switch_to_browse_mode (GtkFileChooserDefault *impl);
|
|
||||||
static GSList * recent_get_selected_files (GtkFileChooserDefault *impl);
|
static GSList * recent_get_selected_files (GtkFileChooserDefault *impl);
|
||||||
static void set_file_system_backend (GtkFileChooserDefault *impl);
|
static void set_file_system_backend (GtkFileChooserDefault *impl);
|
||||||
static void unset_file_system_backend (GtkFileChooserDefault *impl);
|
static void unset_file_system_backend (GtkFileChooserDefault *impl);
|
||||||
@ -5256,6 +5254,42 @@ operation_mode_stop (GtkFileChooserDefault *impl, OperationMode mode)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
gtk_widget_show (impl->location_button);
|
||||||
|
|
||||||
|
if (impl->location_mode == LOCATION_MODE_FILENAME_ENTRY)
|
||||||
|
gtk_widget_show (impl->location_entry_box);
|
||||||
|
}
|
||||||
|
|
||||||
|
file_list_set_sort_column_ids (impl);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
operation_mode_set (GtkFileChooserDefault *impl, OperationMode mode)
|
||||||
|
{
|
||||||
|
operation_mode_stop (impl, impl->operation_mode);
|
||||||
|
|
||||||
|
impl->operation_mode = mode;
|
||||||
|
|
||||||
|
switch (impl->operation_mode)
|
||||||
|
{
|
||||||
|
case OPERATION_MODE_BROWSE:
|
||||||
|
operation_mode_set_browse (impl);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
g_assert_not_reached ();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/* This function is basically a do_all function.
|
/* This function is basically a do_all function.
|
||||||
*
|
*
|
||||||
* It sets the visibility on all the widgets based on the current state, and
|
* It sets the visibility on all the widgets based on the current state, and
|
||||||
@ -7153,17 +7187,7 @@ gtk_file_chooser_default_update_current_folder (GtkFileChooser *chooser,
|
|||||||
|
|
||||||
g_object_ref (file);
|
g_object_ref (file);
|
||||||
|
|
||||||
switch (impl->operation_mode)
|
operation_mode_set (impl, OPERATION_MODE_BROWSE);
|
||||||
{
|
|
||||||
case OPERATION_MODE_SEARCH:
|
|
||||||
search_switch_to_browse_mode (impl);
|
|
||||||
break;
|
|
||||||
case OPERATION_MODE_RECENT:
|
|
||||||
recent_switch_to_browse_mode (impl);
|
|
||||||
break;
|
|
||||||
case OPERATION_MODE_BROWSE:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (impl->local_only && !g_file_is_native (file))
|
if (impl->local_only && !g_file_is_native (file))
|
||||||
{
|
{
|
||||||
@ -8995,29 +9019,6 @@ search_stop_searching (GtkFileChooserDefault *impl,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Stops any pending searches, clears the file list, and switches back to OPERATION_MODE_BROWSE */
|
|
||||||
static void
|
|
||||||
search_switch_to_browse_mode (GtkFileChooserDefault *impl)
|
|
||||||
{
|
|
||||||
g_assert (impl->operation_mode != OPERATION_MODE_BROWSE);
|
|
||||||
|
|
||||||
operation_mode_stop (impl, impl->operation_mode);
|
|
||||||
|
|
||||||
impl->operation_mode = OPERATION_MODE_BROWSE;
|
|
||||||
path_bar_update (impl);
|
|
||||||
|
|
||||||
if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
|
|
||||||
impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
|
|
||||||
{
|
|
||||||
gtk_widget_show (impl->location_button);
|
|
||||||
|
|
||||||
if (impl->location_mode == LOCATION_MODE_FILENAME_ENTRY)
|
|
||||||
gtk_widget_show (impl->location_entry_box);
|
|
||||||
}
|
|
||||||
|
|
||||||
file_list_set_sort_column_ids (impl);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Creates the search_model and puts it in the tree view */
|
/* Creates the search_model and puts it in the tree view */
|
||||||
static void
|
static void
|
||||||
search_setup_model (GtkFileChooserDefault *impl)
|
search_setup_model (GtkFileChooserDefault *impl)
|
||||||
@ -9276,33 +9277,6 @@ recent_stop_loading (GtkFileChooserDefault *impl)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Stops any pending load, clears the file list, and switches
|
|
||||||
* back to OPERATION_MODE_BROWSE
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
recent_switch_to_browse_mode (GtkFileChooserDefault *impl)
|
|
||||||
{
|
|
||||||
g_assert (impl->operation_mode != OPERATION_MODE_BROWSE);
|
|
||||||
|
|
||||||
operation_mode_stop (impl, impl->operation_mode);
|
|
||||||
|
|
||||||
impl->operation_mode = OPERATION_MODE_BROWSE;
|
|
||||||
path_bar_update (impl);
|
|
||||||
|
|
||||||
if (impl->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
|
|
||||||
impl->action == GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER)
|
|
||||||
{
|
|
||||||
gtk_widget_show (impl->location_button);
|
|
||||||
|
|
||||||
if (impl->location_mode == LOCATION_MODE_FILENAME_ENTRY)
|
|
||||||
gtk_widget_show (impl->location_entry_box);
|
|
||||||
}
|
|
||||||
|
|
||||||
gtk_tree_view_column_set_visible (impl->list_size_column, impl->show_size_column);
|
|
||||||
|
|
||||||
file_list_set_sort_column_ids (impl);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
recent_setup_model (GtkFileChooserDefault *impl)
|
recent_setup_model (GtkFileChooserDefault *impl)
|
||||||
{
|
{
|
||||||
@ -9748,17 +9722,7 @@ shortcuts_activate_volume (GtkFileChooserDefault *impl,
|
|||||||
{
|
{
|
||||||
GFile *file;
|
GFile *file;
|
||||||
|
|
||||||
switch (impl->operation_mode)
|
operation_mode_set (impl, OPERATION_MODE_BROWSE);
|
||||||
{
|
|
||||||
case OPERATION_MODE_BROWSE:
|
|
||||||
break;
|
|
||||||
case OPERATION_MODE_SEARCH:
|
|
||||||
search_switch_to_browse_mode (impl);
|
|
||||||
break;
|
|
||||||
case OPERATION_MODE_RECENT:
|
|
||||||
recent_switch_to_browse_mode (impl);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* We ref the file chooser since volume_mount() may run a main loop, and the
|
/* We ref the file chooser since volume_mount() may run a main loop, and the
|
||||||
* user could close the file chooser window in the meantime.
|
* user could close the file chooser window in the meantime.
|
||||||
@ -10195,21 +10159,9 @@ location_popup_handler (GtkFileChooserDefault *impl,
|
|||||||
if (impl->operation_mode != OPERATION_MODE_BROWSE)
|
if (impl->operation_mode != OPERATION_MODE_BROWSE)
|
||||||
{
|
{
|
||||||
GtkWidget *widget_to_focus;
|
GtkWidget *widget_to_focus;
|
||||||
|
|
||||||
/* This will give us the location widgets back */
|
|
||||||
switch (impl->operation_mode)
|
|
||||||
{
|
|
||||||
case OPERATION_MODE_SEARCH:
|
|
||||||
search_switch_to_browse_mode (impl);
|
|
||||||
break;
|
|
||||||
case OPERATION_MODE_RECENT:
|
|
||||||
recent_switch_to_browse_mode (impl);
|
|
||||||
break;
|
|
||||||
case OPERATION_MODE_BROWSE:
|
|
||||||
g_assert_not_reached ();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
operation_mode_set (impl, OPERATION_MODE_BROWSE);
|
||||||
|
|
||||||
if (impl->current_folder)
|
if (impl->current_folder)
|
||||||
change_folder_and_display_error (impl, impl->current_folder, FALSE);
|
change_folder_and_display_error (impl, impl->current_folder, FALSE);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user