filechooserwidget: Listen to items-changed too

To track changes of the selected items in a selection
model, we need to listen to both ::selection-changed
and ::items-changed.

This fixes the open button not turning sensitive
when initially loading a new folder.
This commit is contained in:
Matthias Clasen
2022-10-10 19:53:36 -04:00
parent 0141ba4e00
commit ec4f814bd4

View File

@@ -478,6 +478,11 @@ static void list_selection_changed (GtkSelectionModel *selection_model,
guint position,
guint n_items,
GtkFileChooserWidget *impl);
static void list_items_changed (GListModel *model,
guint position,
guint removed,
guint added,
GtkFileChooserWidget *impl);
static void path_bar_clicked (GtkPathBar *path_bar,
GFile *file,
GFile *child,
@@ -6262,6 +6267,19 @@ list_selection_changed (GtkSelectionModel *selection_model,
update_default (impl);
}
static void
list_items_changed (GListModel *model,
guint position,
guint removed,
guint added,
GtkFileChooserWidget *impl)
{
if (get_current_model (impl) == NULL)
return;
update_default (impl);
}
static gboolean
browse_files_column_view_keynav_failed_cb (GtkWidget *widget,
GtkDirectionType direction,
@@ -7111,10 +7129,10 @@ gtk_file_chooser_widget_init (GtkFileChooserWidget *impl)
impl->auto_selecting_first_row = FALSE;
impl->renamed_file = NULL;
g_signal_connect (impl->selection_model,
"selection-changed",
G_CALLBACK (list_selection_changed),
impl);
g_signal_connect (impl->selection_model, "selection-changed",
G_CALLBACK (list_selection_changed), impl);
g_signal_connect (impl->selection_model, "items-changed",
G_CALLBACK (list_items_changed), impl);
/* Ensure private types used by the template
* definition before calling gtk_widget_init_template()