summaryrefslogtreecommitdiffstats
path: root/src/plugins/platformthemes/gtk3
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2016-08-19 16:56:30 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2016-08-20 08:20:25 +0000
commite416cc553d997121657c753aec02aebb968e3cc0 (patch)
tree03e2701ed457f7399fe72a59588e8d1ab1a2d655 /src/plugins/platformthemes/gtk3
parent916a8c44c4a9ba639e89660226d14d51ed44feaa (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.cpp10
-rw-r--r--src/plugins/platformthemes/gtk3/qgtk3dialoghelpers.h1
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);