diff --git a/krusader/panelmanager.cpp b/krusader/panelmanager.cpp --- a/krusader/panelmanager.cpp +++ b/krusader/panelmanager.cpp @@ -206,6 +206,7 @@ ListPanel *panel = i < numTabsOld ? _tabbar->getPanel(i) : addPanel(false, grpTab); panel->restoreSettings(grpTab); + _tabbar->updateTab(panel); } for(int i = numTabsOld - 1; i >= numTabsNew && i > 0; i--) @@ -436,8 +437,10 @@ void PanelManager::slotLockTab() { - currentPanel()->gui->setLocked(!currentPanel()->gui->isLocked()); + ListPanel *panel = _self; + panel->gui->setLocked(!panel->gui->isLocked()); _actions->refreshActions(); + _tabbar->updateTab(panel); } void PanelManager::newTabs(const QStringList& urls) { diff --git a/krusader/paneltabbar.h b/krusader/paneltabbar.h --- a/krusader/paneltabbar.h +++ b/krusader/paneltabbar.h @@ -94,10 +94,10 @@ virtual void resizeEvent(QResizeEvent *e) Q_DECL_OVERRIDE; protected slots: - void closeTab(); void duplicateTab(); private: + void setIcon(int index, ListPanel *panel); KActionMenu *_panelActionMenu; bool _left; int _maxTabLength; diff --git a/krusader/paneltabbar.cpp b/krusader/paneltabbar.cpp --- a/krusader/paneltabbar.cpp +++ b/krusader/paneltabbar.cpp @@ -37,6 +37,7 @@ #include #include +#include #include #define DISPLAY(X) (X.isLocalFile() ? X.path() : X.toDisplayString()) @@ -70,32 +71,31 @@ { int insertIndex = -1; - if(nextTo) { - for(int i = 0; i < count(); i++) { - if(getPanel(i) == nextTo) { + if (nextTo) { + for (int i = 0; i < count(); i++) { + if (getPanel(i) == nextTo) { insertIndex = i + 1; break; } } } - int newId; - if(insertIndex != -1) { - newId = insertTab(insertIndex, squeeze(DISPLAY(panel->virtualPath()))); - } else - newId = addTab(squeeze(DISPLAY(panel->virtualPath()))); + const QString text = squeeze(DISPLAY(panel->virtualPath())); + const int index = insertIndex != -1 ? insertTab(insertIndex, text) : addTab(text); QVariant v; v.setValue((long long)panel); - setTabData(newId, v); + setTabData(index, v); + + setIcon(index, panel); // make sure all tabs lengths are correct layoutTabs(); if (setCurrent) - setCurrentIndex(newId); + setCurrentIndex(index); - return newId; + return index; } ListPanel* PanelTabBar::getPanel(int tabIdx) @@ -134,6 +134,7 @@ for (int i = 0; i < count(); i++) { if ((ListPanel*)tabData(i).toLongLong() == panel) { setTabText(i, squeeze(DISPLAY(panel->virtualPath()), i)); + setIcon(i, panel); break; } } @@ -145,9 +146,10 @@ emit newTab(((ListPanel*)tabData(id).toLongLong())->virtualPath()); } -void PanelTabBar::closeTab() +void PanelTabBar::setIcon(int index, ListPanel *panel) { - emit closeCurrentTab(); + setTabIcon(index, + panel->isLocked() ? krLoader->loadIcon("lock", KIconLoader::Toolbar, 16) : QIcon()); } QString PanelTabBar::squeeze(QString text, int index) @@ -265,8 +267,8 @@ setCurrentIndex(clickedTab); - ListPanel *p = getPanel(clickedTab); - if(p) + ListPanel *p = getPanel(clickedTab); + if (p) p->slotFocusOnMe(); if (e->button() == Qt::RightButton) {