From: Matthias Clasen Date: Mon, 10 Oct 2022 23:53:36 +0000 (-0400) Subject: filechooserwidget: Listen to items-changed too X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~9^2~143^2~31 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=ec4f814bd46a19af72ed8f45d957a3d29ca6b416;p=gtk4.git 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. --- diff --git a/gtk/gtkfilechooserwidget.c b/gtk/gtkfilechooserwidget.c index 4f3c30d399..ab4273249f 100644 --- a/gtk/gtkfilechooserwidget.c +++ b/gtk/gtkfilechooserwidget.c @@ -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()