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>
bb10
J-P Nurmi 2016-08-19 16:56:30 +02:00
parent 916a8c44c4
commit e416cc553d
2 changed files with 7 additions and 4 deletions

View File

@ -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()) {

View File

@ -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);