diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2016-08-19 16:56:30 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2016-08-20 08:20:25 +0000 |
commit | e416cc553d997121657c753aec02aebb968e3cc0 (patch) | |
tree | 03e2701ed457f7399fe72a59588e8d1ab1a2d655 /src/plugins/platformthemes/gtk3 | |
parent | 916a8c44c4a9ba639e89660226d14d51ed44feaa (diff) |
QGtk3FileDialogHelper: provide proper filterSelected()
The GTK+ file dialog never had a proper filterSelected() signal. As a
workaround, filterSelected() was emitted from accept() to ensure that
the signal wasn't entirely missing. Now we can remove the improper
emission on accept, because using the "notify::filter" signal gives
proper notifications whenever the filter selection in the dialog
changes.
Change-Id: Iedfe08c49b85adf262af9cdc750efb1fd1698379
Task-number: QTBUG-55298
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/plugins/platformthemes/gtk3')
-rw-r--r-- | src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp | 10 | ||||
-rw-r--r-- | src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.h | 1 |
2 files changed, 7 insertions, 4 deletions
diff --git a/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp b/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp index 0da04f2669..a18d67bf03 100644 --- a/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp +++ b/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.cpp @@ -245,6 +245,7 @@ QGtk3FileDialogHelper::QGtk3FileDialogHelper() g_signal_connect(GTK_FILE_CHOOSER(d->gtkDialog()), "selection-changed", G_CALLBACK(onSelectionChanged), this); g_signal_connect_swapped(GTK_FILE_CHOOSER(d->gtkDialog()), "current-folder-changed", G_CALLBACK(onCurrentFolderChanged), this); + g_signal_connect_swapped(GTK_FILE_CHOOSER(d->gtkDialog()), "notify::filter", G_CALLBACK(onFilterChanged), this); } QGtk3FileDialogHelper::~QGtk3FileDialogHelper() @@ -357,10 +358,6 @@ void QGtk3FileDialogHelper::onAccepted() { emit accept(); - QString filter = selectedNameFilter(); - if (filter.isEmpty()) - emit filterSelected(filter); - QList<QUrl> files = selectedFiles(); emit filesSelected(files); if (files.count() == 1) @@ -383,6 +380,11 @@ void QGtk3FileDialogHelper::onCurrentFolderChanged(QGtk3FileDialogHelper *dialog emit dialog->directoryEntered(dialog->directory()); } +void QGtk3FileDialogHelper::onFilterChanged(QGtk3FileDialogHelper *dialog) +{ + emit dialog->filterSelected(dialog->selectedNameFilter()); +} + static GtkFileChooserAction gtkFileChooserAction(const QSharedPointer<QFileDialogOptions> &options) { switch (options->fileMode()) { diff --git a/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.h b/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.h index 40961d5201..99add3bda3 100644 --- a/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.h +++ b/src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.h @@ -107,6 +107,7 @@ private Q_SLOTS: private: static void onSelectionChanged(GtkDialog *dialog, QGtk3FileDialogHelper *helper); static void onCurrentFolderChanged(QGtk3FileDialogHelper *helper); + static void onFilterChanged(QGtk3FileDialogHelper *helper); void applyOptions(); void setNameFilters(const QStringList &filters); |