]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Fix updating window and tab titles
authorEugene Popov <popov895@ukr.net>
Mon, 13 Sep 2021 15:34:40 +0000 (18:34 +0300)
committerEugene Popov <popov895@ukr.net>
Sat, 13 Nov 2021 16:20:59 +0000 (18:20 +0200)
This MR fixes an issue where the window and tab titles don't properly handle creating/deleting/renaming items in the places bar, as well as switching to the Search mode.

src/dolphinmainwindow.cpp
src/dolphintabwidget.cpp
src/dolphinviewcontainer.cpp
src/dolphinviewcontainer.h

index bb05fef0870a9052eb4ae33a4e6ec49fb219c2d2..cdbeba172b16607e09bef0b0b17ae5c6544b5bf1 100644 (file)
@@ -2134,6 +2134,8 @@ void DolphinMainWindow::connectViewSignals(DolphinViewContainer* container)
             this, &DolphinMainWindow::slotWriteStateChanged);
     connect(container, &DolphinViewContainer::searchModeEnabledChanged,
             this, &DolphinMainWindow::updateSearchAction);
+    connect(container, &DolphinViewContainer::captionChanged,
+            this, &DolphinMainWindow::updateWindowTitle);
 
     const QAction* toggleSearchAction = actionCollection()->action(QStringLiteral("toggle_search"));
     connect(toggleSearchAction, &QAction::triggered, container, &DolphinViewContainer::setSearchModeEnabled);
index 0e7012d3b687316be7097b249ea023b79f404d72..254e654a798c421c7d0d5a87b3630f0073bbd863 100644 (file)
@@ -162,10 +162,17 @@ void DolphinTabWidget::openNewTab(const QUrl& primaryUrl, const QUrl& secondaryU
             this, &DolphinTabWidget::activeViewChanged);
     connect(tabPage, &DolphinTabPage::activeViewUrlChanged,
             this, &DolphinTabWidget::tabUrlChanged);
+    connect(tabPage->activeViewContainer(), &DolphinViewContainer::captionChanged, this, [this, tabPage]() {
+        const int tabIndex = indexOf(tabPage);
+        Q_ASSERT(tabIndex >= 0);
+        tabBar()->setTabText(tabIndex, tabName(tabPage));
+    });
+
     int newTabIndex = -1;
     if (!GeneralSettings::openNewTabAfterLastTab()) {
         newTabIndex = currentIndex() + 1;
     }
+
     insertTab(newTabIndex, tabPage, QIcon() /* loaded in tabInserted */, tabName(tabPage));
 
     if (focusWidget) {
index 194fd774ba00450a5d3cfa248a561bd1d85e1015..5520bf794ab5f3272eebacce89090788531a409e 100644 (file)
@@ -196,6 +196,17 @@ DolphinViewContainer::DolphinViewContainer(const QUrl& url, QWidget* parent) :
         }
     });
 
+    KFilePlacesModel *placesModel = DolphinPlacesModelSingleton::instance().placesModel();
+    connect(placesModel, &KFilePlacesModel::dataChanged,
+            this, &DolphinViewContainer::slotPlacesModelChanged);
+    connect(placesModel, &KFilePlacesModel::rowsInserted,
+            this, &DolphinViewContainer::slotPlacesModelChanged);
+    connect(placesModel, &KFilePlacesModel::rowsRemoved,
+            this, &DolphinViewContainer::slotPlacesModelChanged);
+
+    connect(this, &DolphinViewContainer::searchModeEnabledChanged,
+            this, &DolphinViewContainer::captionChanged);
+
     // Initialize kactivities resource instance
 
 #ifdef HAVE_KACTIVITIES
@@ -791,6 +802,13 @@ void DolphinViewContainer::showErrorMessage(const QString& msg)
     showMessage(msg, Error);
 }
 
+void DolphinViewContainer::slotPlacesModelChanged()
+{
+    if (!GeneralSettings::showFullPathInTitlebar() && !isSearchModeEnabled()) {
+        Q_EMIT captionChanged();
+    }
+}
+
 bool DolphinViewContainer::isSearchUrl(const QUrl& url) const
 {
     return url.scheme().contains(QLatin1String("search"));
index 1a92e1fa6d266dd846941fa1b587c83257aedf8e..304c9958d9646dc77b0888275d6286b6626f81e8 100644 (file)
@@ -223,6 +223,12 @@ Q_SIGNALS:
      */
     void writeStateChanged(bool isFolderWritable);
 
+    /**
+     * Is emitted when the Caption has been changed.
+     * @see DolphinViewContainer::caption()
+     */
+    void captionChanged();
+
 private Q_SLOTS:
     /**
      * Updates the number of items (= number of files + number of
@@ -349,6 +355,12 @@ private Q_SLOTS:
      */
     void showErrorMessage(const QString& msg);
 
+    /**
+     * Is invoked when a KFilePlacesModel has been changed
+     * @see DolphinPlacesModelSingleton::instance().placesModel()
+     */
+    void slotPlacesModelChanged();
+
 private:
     /**
      * @return True if the URL protocol is a search URL (e. g. baloosearch:// or filenamesearch://).