Allow re-enabling typeahead in GTK3 file chooser

GTK3 changed the file chooser widget to search for files when typing,
instead of selecting the closest matching file (typeahead).

We introduce a 'typeahead' flag for gtk+:3, letting users re-enable the
old behaviour if they so prefer.
master
q3k 2018-04-06 15:44:02 +01:00
parent 6103b92948
commit c896abde68
3 changed files with 92 additions and 2 deletions

View File

@ -1,5 +1,6 @@
AUX gtk+-3.22.2-update-icon-cache.patch 5474 BLAKE2B fe374a5f50ffc69df0d09e5b50d8b5c22ec57eb8709d13270b53cc389f2a14a4fa145051e5c0d80e7eb0c9e6778a240fbd64e4299d36736500ca6695a1345b13 SHA512 46ac52f18c0e74f5e35101ef978d7708c42abb05985894b65e8a7f7a76f1934015ff35a912628a5ae2c6333916ffd00570aa19230108aabe3a20adc5e31d958e
AUX gtk+-3.22.20-libcloudproviders-automagic.patch 1904 BLAKE2B ed4e774a5641a8e857ae63b83cd481479f3562de3471b5c662eb5b110e583a0a84e7defe272c2fdc6fba58649763b3e97a7e453f83e4693f40a051c8565de7b5 SHA512 3981e3d0dd9a7422b41918a6e426fe36715c6a80c7a46a241edbd1ea364381ac34fa0ae6240bc59980dd56bb816cead55dd4d29437ff288d78b90c139cb5807f
AUX gtk+-3.22.26-typeahead.patch 3389 BLAKE2B 097f5d0df65d64f287eb4846317b0eb3f6070f0dfc438f5ca1acaebc60104c6bec9b698b0b05551248312a98baffcde01e4e6424b6210593fab6747aebf2dbbc SHA512 2a50f553b820fda1d7ce2077b65e8a2c2dc2df5f84c5da5dff54b7d7ede6d57349b18489709269ba0466e1d76977997b53fd7be0817c03af47d53d7d0b3e6e7e
AUX settings.ini 96 BLAKE2B dd0ffe58f3c702d0518e1ad59930a511f98fd1b6e7139b2b2293a3dc8b0419a63a14260ba75b30dc9197f0423a375c675b4f3b34d593ce12828192d18e539fbb SHA512 76eff45e3413ed7b2fb6bb557c363cd6d8a65ae505709cf5ce26d579470e38968d51e72615779f47fac2994937a3c64ac4143c6cbd2cf5a2db23a01bcd9b6418
DIST gtk+-3.22.26.tar.xz 18922136 BLAKE2B a1e43be24abe2bda8eb63f3794b191b152abb5717334f8f46fe3158eb7ec92d5413ed3ca0df2a1ad676deacee3e7ce5e737661ec5f5c911609d40d3b9379c4c4 SHA512 2fd3a4175168d37f243359bac5df84722a2830fe5b62f86b914ce39ff500f0361e412843922343dffef8bee8f1205799ff86dd3ae8ac419928f4fe977e0e946f
EBUILD gtk+-3.22.26.ebuild 6961 BLAKE2B f7efd4cd7ea7a91ed82a1eab888a3eb317a72e8c5d71adac4e5d231d69ca51298eb7c997c9da8db631f4c7ba46738e0b14b00d5cc56a3f2d773af95367a31f69 SHA512 8ef4e04588eff83a258b03241a0794c8f962077bd36bf2372f78dc70588ebd0a4d0ba3877338495d3bc977f9ba04d26fa7d24053a6b4368ff22a31704622eed1
EBUILD gtk+-3.22.26.ebuild 7136 BLAKE2B e7ad4ab8fa276302fbd1abdd8fd91ddc7e5d80a2c109f021f78f4bcf86927f4aa7899fc89b541edad7b71c4e020ae94fb1a9ab9fdebe793f6c01139c9b7c8903 SHA512 38ab9f14824765a54c15cd899ba40f259cc1db125ab16abbc829b58713143488036050a9a3871128e1e0c5828f5679992884f0e2a6768daecf3f7b65155a85a3

View File

@ -0,0 +1,83 @@
--- gtk+-3.22.26/gtk/gtkfilechooserwidget.c 2017-10-02 17:00:49.000000000 +0100
+++ gtk+-3.22.26.patched/gtk/gtkfilechooserwidget.c 2018-04-06 15:25:11.964251341 +0100
@@ -1391,6 +1391,12 @@
GtkFileChooserWidget *impl = (GtkFileChooserWidget *) widget;
GtkFileChooserWidgetPrivate *priv = impl->priv;
+ if (!event->is_modifier) {
+ gtk_widget_grab_focus (priv->browse_files_tree_view);
+ gboolean ret;
+ g_signal_emit_by_name (priv->browse_files_tree_view, "key-press-event", event, &ret);
+ }
+
if (should_trigger_location_entry (impl, event))
{
if (priv->action == GTK_FILE_CHOOSER_ACTION_OPEN ||
@@ -1400,12 +1406,6 @@
return TRUE;
}
}
- else if (gtk_search_entry_handle_event (GTK_SEARCH_ENTRY (priv->search_entry), (GdkEvent *)event))
- {
- if (priv->operation_mode != OPERATION_MODE_SEARCH)
- operation_mode_set (impl, OPERATION_MODE_SEARCH);
- return TRUE;
- }
if (GTK_WIDGET_CLASS (gtk_file_chooser_widget_parent_class)->key_press_event (widget, event))
return TRUE;
@@ -2477,7 +2477,7 @@
{
GtkFileChooserWidgetPrivate *priv = impl->priv;
- gtk_tree_view_set_search_column (GTK_TREE_VIEW (priv->browse_files_tree_view), -1);
+ gtk_tree_view_set_search_column (GTK_TREE_VIEW (priv->browse_files_tree_view), MODEL_COL_NAME);
gtk_tree_view_column_set_sort_column_id (priv->list_name_column, MODEL_COL_NAME);
gtk_tree_view_column_set_sort_column_id (priv->list_time_column, MODEL_COL_TIME);
@@ -4391,6 +4391,7 @@
gtk_tree_view_set_model (GTK_TREE_VIEW (priv->browse_files_tree_view),
GTK_TREE_MODEL (priv->browse_files_model));
update_columns (impl, FALSE, _("Modified"));
+ gtk_tree_view_set_enable_search (GTK_TREE_VIEW (priv->browse_files_tree_view), TRUE);
file_list_set_sort_column_ids (impl);
set_sort_column (impl);
profile_msg (" gtk_tree_view_set_model end", NULL);
@@ -7151,10 +7152,6 @@
{
GList *l, *files, *files_with_info, *infos;
GFile *file;
- gboolean select = FALSE;
-
- if (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (impl->priv->search_model), NULL) == 0)
- select = TRUE;
files = NULL;
files_with_info = NULL;
@@ -7182,8 +7179,6 @@
g_list_free_full (infos, g_object_unref);
gtk_stack_set_visible_child_name (GTK_STACK (impl->priv->browse_files_stack), "list");
- if (select)
- gtk_widget_grab_focus (impl->priv->browse_files_tree_view);
}
/* Callback used from GtkSearchEngine when the query is done running */
@@ -7480,6 +7475,7 @@
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (priv->recent_model),
GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID,
GTK_SORT_DESCENDING);
+ gtk_tree_view_set_enable_search (GTK_TREE_VIEW (priv->browse_files_tree_view), TRUE);
}
typedef struct
@@ -7497,7 +7493,7 @@
gtk_tree_view_set_model (GTK_TREE_VIEW (priv->browse_files_tree_view),
GTK_TREE_MODEL (priv->recent_model));
- gtk_tree_view_set_search_column (GTK_TREE_VIEW (priv->browse_files_tree_view), -1);
+ gtk_tree_view_set_search_column (GTK_TREE_VIEW (priv->browse_files_tree_view), MODEL_COL_NAME);
gtk_tree_view_column_set_sort_column_id (priv->list_name_column, -1);
gtk_tree_view_column_set_sort_column_id (priv->list_time_column, -1);

View File

@ -11,7 +11,7 @@ HOMEPAGE="https://www.gtk.org/"
LICENSE="LGPL-2+"
SLOT="3"
IUSE="aqua broadway cloudprint colord cups examples +introspection test vim-syntax wayland +X xinerama"
IUSE="aqua broadway cloudprint colord cups examples typeahead +introspection test vim-syntax wayland +X xinerama"
REQUIRED_USE="
|| ( aqua wayland X )
xinerama? ( X )
@ -129,6 +129,12 @@ src_prepare() {
# Fix broken autotools logic
eapply "${FILESDIR}"/${PN}-3.22.20-libcloudproviders-automagic.patch
# Re-enable type-ahead in file select dialog instead of recursive file
# search.
if use typeahead; then
eapply "${FILESDIR}"/${PN}-3.22.26-typeahead.patch
fi
eautoreconf
gnome2_src_prepare
}