mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-17 06:10:15 +00:00
file chooser: Allow to limit search
Add a button to allow restricting search to the current folder (and subdirectories). This makes the search more useful, and makes the file chooser more similar to nautilus.
This commit is contained in:
parent
2c5ea0dd45
commit
ff87c6516b
@ -67,6 +67,7 @@
|
||||
#include "gtksettings.h"
|
||||
#include "gtksizegroup.h"
|
||||
#include "gtksizerequest.h"
|
||||
#include "gtktogglebutton.h"
|
||||
#include "gtktoolbar.h"
|
||||
#include "gtktoolbutton.h"
|
||||
#include "gtktooltip.h"
|
||||
@ -235,6 +236,7 @@ struct _GtkFileChooserWidgetPrivate {
|
||||
|
||||
/* OPERATION_MODE_SEARCH */
|
||||
GtkWidget *search_entry;
|
||||
GtkWidget *current_location_radio;
|
||||
GtkSearchEngine *search_engine;
|
||||
GtkQuery *search_query;
|
||||
GtkFileSystemModel *search_model;
|
||||
@ -2539,6 +2541,7 @@ static void
|
||||
operation_mode_set_search (GtkFileChooserWidget *impl)
|
||||
{
|
||||
GtkFileChooserWidgetPrivate *priv = impl->priv;
|
||||
gchar *current;
|
||||
|
||||
g_assert (priv->search_model == NULL);
|
||||
|
||||
@ -2548,6 +2551,12 @@ operation_mode_set_search (GtkFileChooserWidget *impl)
|
||||
gtk_entry_grab_focus_without_selecting (GTK_ENTRY (priv->search_entry));
|
||||
gtk_places_sidebar_set_location (GTK_PLACES_SIDEBAR (priv->places_sidebar), NULL);
|
||||
gtk_widget_set_sensitive (priv->filter_combo, FALSE);
|
||||
if (priv->current_folder)
|
||||
current = g_file_get_basename (priv->current_folder);
|
||||
else
|
||||
current = g_strdup (_("Home"));
|
||||
gtk_button_set_label (GTK_BUTTON (priv->current_location_radio), current);
|
||||
g_free (current);
|
||||
|
||||
gtk_tree_view_column_set_visible (priv->list_location_column, TRUE);
|
||||
}
|
||||
@ -6282,6 +6291,15 @@ search_start_query (GtkFileChooserWidget *impl,
|
||||
_gtk_query_set_text (priv->search_query, query_text);
|
||||
}
|
||||
|
||||
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->current_location_radio)) &&
|
||||
priv->current_folder)
|
||||
{
|
||||
gchar *location;
|
||||
location = g_file_get_uri (priv->current_folder);
|
||||
_gtk_query_set_location (priv->search_query, location);
|
||||
g_free (location);
|
||||
}
|
||||
|
||||
_gtk_search_engine_set_query (priv->search_engine, priv->search_query);
|
||||
|
||||
g_signal_connect (priv->search_engine, "hits-added",
|
||||
@ -7478,6 +7496,7 @@ gtk_file_chooser_widget_class_init (GtkFileChooserWidgetClass *class)
|
||||
gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserWidget, extra_and_filters);
|
||||
gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserWidget, location_entry_box);
|
||||
gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserWidget, search_entry);
|
||||
gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserWidget, current_location_radio);
|
||||
gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserWidget, list_name_column);
|
||||
gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserWidget, list_pixbuf_renderer);
|
||||
gtk_widget_class_bind_template_child_private (widget_class, GtkFileChooserWidget, list_name_renderer);
|
||||
|
@ -134,6 +134,30 @@
|
||||
<signal name="stop-search" handler="search_entry_stop_cb" swapped="yes"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="visible">True</property>
|
||||
<style>
|
||||
<class name="linked"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkRadioButton" id="current_location_radio">
|
||||
<property name="visible">True</property>
|
||||
<property name="draw-indicator">False</property>
|
||||
<property name="label" translatable="yes">Home</property>
|
||||
<signal name="toggled" handler="search_entry_activate_cb" swapped="yes"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRadioButton">
|
||||
<property name="visible">True</property>
|
||||
<property name="draw-indicator">False</property>
|
||||
<property name="group">current_location_radio</property>
|
||||
<property name="label" translatable="yes">All Files</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="name">search</property>
|
||||
|
@ -1,4 +1,6 @@
|
||||
N_("Create Folder");
|
||||
N_("Home");
|
||||
N_("All Files");
|
||||
N_("Files");
|
||||
N_("Name");
|
||||
N_("Size");
|
||||
|
Loading…
Reference in New Issue
Block a user