]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphintabwidget.cpp
Fix files not being highlighted if directory of file is already open
[dolphin.git] / src / dolphintabwidget.cpp
index 0408d7ed47304dfead6ad8a9f35b58124bc20972..39a734b17b5c82d867abb20e786cd9094b596dfa 100644 (file)
@@ -28,6 +28,7 @@
 #include <KRun>
 #include <KShell>
 #include <kio/global.h>
+#include <KAcceleratorManager>
 
 #include <QApplication>
 #include <QDropEvent>
@@ -37,6 +38,8 @@ DolphinTabWidget::DolphinTabWidget(QWidget* parent) :
     m_placesSelectorVisible(true),
     m_lastViewedTab(0)
 {
+    KAcceleratorManager::setNoAccel(this);
+
     connect(this, &DolphinTabWidget::tabCloseRequested,
             this, QOverload<int>::of(&DolphinTabWidget::closeTab));
     connect(this, &DolphinTabWidget::currentChanged,
@@ -203,6 +206,10 @@ void DolphinTabWidget::openDirectories(const QList<QUrl>& dirs, bool splitView)
             } else {
                 tabPage->secondaryViewContainer()->setActive(true);
             }
+            // BUG: 147230
+            // Required for updateViewState() call in openFiles() to work as expected
+            // If there is a selection, updateViewState() calls are effectively a no-op
+            tabPage->activeViewContainer()->view()->clearSelection();
             continue;
         }
         if (splitView && (it != dirs.constEnd())) {
@@ -236,10 +243,14 @@ void DolphinTabWidget::openFiles(const QList<QUrl>& files, bool splitView)
     // Select the files. Although the files can be split between several
     // tabs, there is no need to split 'files' accordingly, as
     // the DolphinView will just ignore invalid selections.
-    for (int i = oldTabCount; i < tabCount; ++i) {
+    for (int i = 0; i < tabCount; ++i) {
         DolphinTabPage* tabPage = tabPageAt(i);
         tabPage->markUrlsAsSelected(files);
         tabPage->markUrlAsCurrent(files.first());
+        if (i < oldTabCount) {
+            // Force selection of file if directory was already open, BUG: 417230
+            tabPage->activeViewContainer()->view()->updateViewState();
+        }
     }
 }