diff --git a/ApplicationLibCode/Commands/RicRecursiveFileSearchDialog.cpp b/ApplicationLibCode/Commands/RicRecursiveFileSearchDialog.cpp index e394ee4208..c02824c51b 100644 --- a/ApplicationLibCode/Commands/RicRecursiveFileSearchDialog.cpp +++ b/ApplicationLibCode/Commands/RicRecursiveFileSearchDialog.cpp @@ -287,6 +287,7 @@ RicRecursiveFileSearchDialogResult RicRecursiveFileSearchDialog::runRecursiveSea RicRecursiveFileSearchDialog::RicRecursiveFileSearchDialog( QWidget* parent, const std::vector& fileTypes ) : QDialog( parent, RiuTools::defaultDialogFlags() ) , m_incomingFileTypes( fileTypes ) + , m_blockUpdateOfOtherItems( false ) { // Create widgets m_browseButton = new QPushButton(); @@ -359,12 +360,25 @@ RicRecursiveFileSearchDialog::RicRecursiveFileSearchDialog( QWidget* parent, con QObject::connect( &m_filePathModel, &QStandardItemModel::itemChanged, - []( QStandardItem* item ) + [this]( QStandardItem* item ) { + if ( m_blockUpdateOfOtherItems ) return; + if ( item->isCheckable() ) { setCheckedStateChildItems( item, item->checkState() ); } + + if ( item->checkState() == Qt::Checked ) + { + auto parent = item->parent(); + if ( parent ) + { + m_blockUpdateOfOtherItems = true; + parent->setCheckState( Qt::Checked ); + m_blockUpdateOfOtherItems = false; + } + } } ); m_fileTreeView->setModel( &m_filePathModel ); diff --git a/ApplicationLibCode/Commands/RicRecursiveFileSearchDialog.h b/ApplicationLibCode/Commands/RicRecursiveFileSearchDialog.h index f9aac443e9..b87ee85043 100644 --- a/ApplicationLibCode/Commands/RicRecursiveFileSearchDialog.h +++ b/ApplicationLibCode/Commands/RicRecursiveFileSearchDialog.h @@ -175,6 +175,7 @@ private: FileType m_fileType; bool m_isCancelPressed; + bool m_blockUpdateOfOtherItems; }; //==================================================================================================