From 8481f9c3f4eeceacf6b7ee9d8c76f54768b9c667 Mon Sep 17 00:00:00 2001 From: Vincent Reher Date: Sat, 13 Aug 2022 09:48:46 -0700 Subject: Implemented better fallback when konqlistviewrc/[Settings]/hiddenFileSpec key does not exist Implemented more comprehensive response to user-caused changes to hidden file match criteria Signed-off-by: Vincent Reher --- konqueror/listview/konq_listview.cpp | 55 +++++++++++++++++++++++-------- konqueror/listview/konq_listviewitems.cpp | 5 ++- libkonq/konq_propsview.cpp | 2 +- 3 files changed, 45 insertions(+), 17 deletions(-) diff --git a/konqueror/listview/konq_listview.cpp b/konqueror/listview/konq_listview.cpp index 6752dbac1..a611c388d 100644 --- a/konqueror/listview/konq_listview.cpp +++ b/konqueror/listview/konq_listview.cpp @@ -273,7 +273,10 @@ KonqListView::KonqListView( TQWidget *parentWidget, TQObject *parent, const char m_sortColumnIndexPrimary = 0; m_sortColumnIndexAlternate = 1; - m_pListView->m_dirLister->matcher->setCriteria( m_pProps->hiddenFileSpec() ); + TQString hiddenFileSpec = m_pProps->hiddenFileSpec() ; + if ( ! hiddenFileSpec.isNull() ) { + m_pListView->m_dirLister->matcher->setCriteria( hiddenFileSpec ); + } // otherwise we rely on matcher's default criteria setupActions(); @@ -481,31 +484,57 @@ void KonqListView::newIconSize( int size ) void KonqListView::slotChangeHiddenFileMatcher() { - /* - Since the user might be providing *updated* hidden file match properties, - we first need to make sure that we are showing (not hiding) "hidden" files - as defined by the *current* match properties. Otherwise there can be - a lot of confusion! - */ - m_paShowDot->setChecked( TRUE ); - slotShowDot(); - - int result = m_pListView->m_dirLister->matcher->getMatchPropertiesFromUser() ; + bool wasShowingHidden = m_paShowDot->isChecked(); + if ( ! wasShowingHidden ) { + /* + Since the user might be providing *updated* hidden file match properties, + we first need to make sure that we are showing (not hiding) "hidden" files + as defined by the *current* match properties. Otherwise there can be + a lot of confusion! + */ + m_paShowDot->setChecked( TRUE ); + slotShowDot(); + } + int result = m_pListView->m_dirLister->matcher->getMatchPropertiesFromUser( "Konqueror Listview" ) ; switch ( result ) { case TDEIO::HiddenFileMatcher::criteriaUnchanged: + if ( ! wasShowingHidden ) { + m_paShowDot->setChecked( FALSE ); + slotShowDot(); + } return; break; case TDEIO::HiddenFileMatcher::criteriaApplied: - return; + // On-the-fly change break; case TDEIO::HiddenFileMatcher::saveCriteria: m_pProps->setHiddenFileSpec( m_pListView->m_dirLister->matcher->getCriteria() ); break; case TDEIO::HiddenFileMatcher::reloadCriteria: - m_pListView->m_dirLister->matcher->setCriteria( m_pProps->hiddenFileSpec() ); + TQString hiddenFileSpec = m_pProps->hiddenFileSpec() ; + if ( ! hiddenFileSpec.isNull() ) { + // Reload from current listview setting + m_pListView->m_dirLister->matcher->setCriteria( hiddenFileSpec ); + } + else { + // Reload from current systemwide default setting + TDEIO::HiddenFileMatcher *commonMatcher = TDEIO::CommonHiddenFileMatcher::getMatcher(); + m_pListView->m_dirLister->matcher->setCriteria( commonMatcher->getCriteria() ); + } break; } + + // Hidden file match properties WERE changed, so we need to + // ensure that these UI view options continue to work properly: + + // "Group Hidden First" sort option + slotToggleDisplayHiddenFirst(); + + // "Show Hidden Files" option + m_paShowDot->setChecked( wasShowingHidden ); + slotShowDot(); // + } void KonqListView::slotShowDot() diff --git a/konqueror/listview/konq_listviewitems.cpp b/konqueror/listview/konq_listviewitems.cpp index ae6a5ca4f..5b9ef230f 100644 --- a/konqueror/listview/konq_listviewitems.cpp +++ b/konqueror/listview/konq_listviewitems.cpp @@ -96,9 +96,8 @@ void KonqListViewItem::updateContents() sortChar = S_ISDIR( m_fileitem->mode() ) ? 1 : 3; else sortChar = 3; - if ( m_groupHiddenFirst && m_pListViewWidget->m_dirLister->matcher->match( m_fileitem->text() ) ) - --sortChar; - + if ( m_fileitem->isHidden( m_pListViewWidget->m_dirLister->matcher ) ) + --sortChar; //now we have the first column, so let's do the rest diff --git a/libkonq/konq_propsview.cpp b/libkonq/konq_propsview.cpp index 61e454a40..ca5019442 100644 --- a/libkonq/konq_propsview.cpp +++ b/libkonq/konq_propsview.cpp @@ -99,7 +99,7 @@ KonqPropsView::KonqPropsView( TDEInstance * instance, KonqPropsView * defaultPro d->dirsfirst = config->readBoolEntry( "SortDirsFirst", true ); d->hiddenfirst = config->readBoolEntry( "SortHiddenFirst", true ); d->descending = config->readBoolEntry( "SortDescending", false ); - d->hiddenfilecriteria = config->readEntry( "HiddenFileSpec", "w.*" ); // default is wildcard for dotfiles + d->hiddenfilecriteria = config->readEntry( "HiddenFileSpec" ); // need fallback to be TQString::null m_bShowDot = config->readBoolEntry( "ShowDotFiles", false ); m_bShowDirectoryOverlays = config->readBoolEntry( "ShowDirectoryOverlays", false ); m_bShowFreeSpaceOverlays = config->readBoolEntry( "ShowFreeSpaceOverlays", true ); -- cgit v1.2.3