filechooser: Prevent random completion popups
authorMatthias Clasen <mclasen@redhat.com>
Sun, 17 Apr 2022 03:29:04 +0000 (23:29 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 17 Apr 2022 03:29:04 +0000 (23:29 -0400)
It is very irritating when the entry completion popup
appears not in response to user input in the entry.
In particular, when that happens right as the dialog
is shown.

To prevent that, temporarily disable completion
when setting the entry text programmatically.

gtk/gtkfilechooserwidget.c

index a2310f35d856c5e0ba5d1087ca5332a1646f341c..f08e5ad6ea4b5086f7d65a81836119e6803ee9b6 100644 (file)
@@ -4748,9 +4748,15 @@ update_chooser_entry (GtkFileChooserWidget *impl)
 
           if (change_entry && !impl->auto_selecting_first_row)
             {
+              GtkEntryCompletion *completion = gtk_entry_get_completion (GTK_ENTRY (impl->location_entry));
+
+              if (completion)
+                gtk_entry_completion_set_popup_completion (completion, FALSE);
               g_signal_handlers_block_by_func (impl->location_entry, G_CALLBACK (location_entry_changed_cb), impl);
               gtk_editable_set_text (GTK_EDITABLE (impl->location_entry), impl->browse_files_last_selected_name);
               g_signal_handlers_unblock_by_func (impl->location_entry, G_CALLBACK (location_entry_changed_cb), impl);
+              if (completion)
+                gtk_entry_completion_set_popup_completion (completion, TRUE);
 
               if (impl->action == GTK_FILE_CHOOSER_ACTION_SAVE)
                 _gtk_file_chooser_entry_select_filename (GTK_FILE_CHOOSER_ENTRY (impl->location_entry));