mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-28 03:21:56 +00:00
React on the redirection signal from DolphinView to properly update the tab and window titles.
REVIEW: 119697 BUG: 305721
This commit is contained in:
parent
62418c58a5
commit
39d8fb12c1
|
@ -136,6 +136,8 @@ DolphinMainWindow::DolphinMainWindow() :
|
||||||
this, SLOT(activeViewChanged(DolphinViewContainer*)));
|
this, SLOT(activeViewChanged(DolphinViewContainer*)));
|
||||||
connect(m_tabWidget, SIGNAL(tabCountChanged(int)),
|
connect(m_tabWidget, SIGNAL(tabCountChanged(int)),
|
||||||
this, SLOT(tabCountChanged(int)));
|
this, SLOT(tabCountChanged(int)));
|
||||||
|
connect(m_tabWidget, SIGNAL(currentUrlChanged(KUrl)),
|
||||||
|
this, SLOT(setUrlAsCaption(KUrl)));
|
||||||
setCentralWidget(m_tabWidget);
|
setCentralWidget(m_tabWidget);
|
||||||
|
|
||||||
setupActions();
|
setupActions();
|
||||||
|
@ -236,7 +238,6 @@ void DolphinMainWindow::changeUrl(const KUrl& url)
|
||||||
updatePasteAction();
|
updatePasteAction();
|
||||||
updateViewActions();
|
updateViewActions();
|
||||||
updateGoActions();
|
updateGoActions();
|
||||||
setUrlAsCaption(url);
|
|
||||||
|
|
||||||
emit urlChanged(url);
|
emit urlChanged(url);
|
||||||
}
|
}
|
||||||
|
@ -945,8 +946,6 @@ void DolphinMainWindow::activeViewChanged(DolphinViewContainer* viewContainer)
|
||||||
updateGoActions();
|
updateGoActions();
|
||||||
|
|
||||||
const KUrl url = viewContainer->url();
|
const KUrl url = viewContainer->url();
|
||||||
setUrlAsCaption(url);
|
|
||||||
|
|
||||||
emit urlChanged(url);
|
emit urlChanged(url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -958,6 +957,22 @@ void DolphinMainWindow::tabCountChanged(int count)
|
||||||
actionCollection()->action("activate_prev_tab")->setEnabled(enableTabActions);
|
actionCollection()->action("activate_prev_tab")->setEnabled(enableTabActions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DolphinMainWindow::setUrlAsCaption(const KUrl& url)
|
||||||
|
{
|
||||||
|
QString caption;
|
||||||
|
if (!url.isLocalFile()) {
|
||||||
|
caption.append(url.protocol() + " - ");
|
||||||
|
if (url.hasHost()) {
|
||||||
|
caption.append(url.host() + " - ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const QString fileName = url.fileName().isEmpty() ? "/" : url.fileName();
|
||||||
|
caption.append(fileName);
|
||||||
|
|
||||||
|
setCaption(caption);
|
||||||
|
}
|
||||||
|
|
||||||
void DolphinMainWindow::setupActions()
|
void DolphinMainWindow::setupActions()
|
||||||
{
|
{
|
||||||
// setup 'File' menu
|
// setup 'File' menu
|
||||||
|
@ -1471,22 +1486,6 @@ bool DolphinMainWindow::isKompareInstalled() const
|
||||||
return installed;
|
return installed;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DolphinMainWindow::setUrlAsCaption(const KUrl& url)
|
|
||||||
{
|
|
||||||
QString caption;
|
|
||||||
if (!url.isLocalFile()) {
|
|
||||||
caption.append(url.protocol() + " - ");
|
|
||||||
if (url.hasHost()) {
|
|
||||||
caption.append(url.host() + " - ");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const QString fileName = url.fileName().isEmpty() ? "/" : url.fileName();
|
|
||||||
caption.append(fileName);
|
|
||||||
|
|
||||||
setCaption(caption);
|
|
||||||
}
|
|
||||||
|
|
||||||
void DolphinMainWindow::createPanelAction(const KIcon& icon,
|
void DolphinMainWindow::createPanelAction(const KIcon& icon,
|
||||||
const QKeySequence& shortcut,
|
const QKeySequence& shortcut,
|
||||||
QAction* dockAction,
|
QAction* dockAction,
|
||||||
|
|
|
@ -429,6 +429,12 @@ private slots:
|
||||||
*/
|
*/
|
||||||
void tabCountChanged(int count);
|
void tabCountChanged(int count);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the window caption to url.fileName() if this is non-empty,
|
||||||
|
* "/" if the URL is "file:///", and url.protocol() otherwise.
|
||||||
|
*/
|
||||||
|
void setUrlAsCaption(const KUrl& url);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void setupActions();
|
void setupActions();
|
||||||
void setupDockWidgets();
|
void setupDockWidgets();
|
||||||
|
@ -464,12 +470,6 @@ private:
|
||||||
|
|
||||||
bool isKompareInstalled() const;
|
bool isKompareInstalled() const;
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the window caption to url.fileName() if this is non-empty,
|
|
||||||
* "/" if the URL is "file:///", and url.protocol() otherwise.
|
|
||||||
*/
|
|
||||||
void setUrlAsCaption(const KUrl& url);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an action for showing/hiding a panel, that is accessible
|
* Creates an action for showing/hiding a panel, that is accessible
|
||||||
* in "Configure toolbars..." and "Configure shortcuts...". This is necessary
|
* in "Configure toolbars..." and "Configure shortcuts...". This is necessary
|
||||||
|
|
|
@ -41,6 +41,8 @@ DolphinTabPage::DolphinTabPage(const KUrl& primaryUrl, const KUrl& secondaryUrl,
|
||||||
m_primaryViewContainer = createViewContainer(primaryUrl);
|
m_primaryViewContainer = createViewContainer(primaryUrl);
|
||||||
connect(m_primaryViewContainer->view(), SIGNAL(urlChanged(KUrl)),
|
connect(m_primaryViewContainer->view(), SIGNAL(urlChanged(KUrl)),
|
||||||
this, SIGNAL(activeViewUrlChanged(KUrl)));
|
this, SIGNAL(activeViewUrlChanged(KUrl)));
|
||||||
|
connect(m_primaryViewContainer->view(), SIGNAL(redirection(KUrl,KUrl)),
|
||||||
|
this, SLOT(slotViewUrlRedirection(KUrl,KUrl)));
|
||||||
|
|
||||||
m_splitter->addWidget(m_primaryViewContainer);
|
m_splitter->addWidget(m_primaryViewContainer);
|
||||||
m_primaryViewContainer->show();
|
m_primaryViewContainer->show();
|
||||||
|
@ -245,14 +247,25 @@ void DolphinTabPage::slotViewActivated()
|
||||||
if (newActiveView != oldActiveView) {
|
if (newActiveView != oldActiveView) {
|
||||||
disconnect(oldActiveView, SIGNAL(urlChanged(KUrl)),
|
disconnect(oldActiveView, SIGNAL(urlChanged(KUrl)),
|
||||||
this, SIGNAL(activeViewUrlChanged(KUrl)));
|
this, SIGNAL(activeViewUrlChanged(KUrl)));
|
||||||
|
disconnect(oldActiveView, SIGNAL(redirection(KUrl,KUrl)),
|
||||||
|
this, SLOT(slotViewUrlRedirection(KUrl,KUrl)));
|
||||||
connect(newActiveView, SIGNAL(urlChanged(KUrl)),
|
connect(newActiveView, SIGNAL(urlChanged(KUrl)),
|
||||||
this, SIGNAL(activeViewUrlChanged(KUrl)));
|
this, SIGNAL(activeViewUrlChanged(KUrl)));
|
||||||
|
connect(newActiveView, SIGNAL(redirection(KUrl,KUrl)),
|
||||||
|
this, SLOT(slotViewUrlRedirection(KUrl,KUrl)));
|
||||||
}
|
}
|
||||||
|
|
||||||
emit activeViewUrlChanged(activeViewContainer()->url());
|
emit activeViewUrlChanged(activeViewContainer()->url());
|
||||||
emit activeViewChanged(activeViewContainer());
|
emit activeViewChanged(activeViewContainer());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DolphinTabPage::slotViewUrlRedirection(const KUrl& oldUrl, const KUrl& newUrl)
|
||||||
|
{
|
||||||
|
Q_UNUSED(oldUrl);
|
||||||
|
|
||||||
|
emit activeViewUrlChanged(newUrl);
|
||||||
|
}
|
||||||
|
|
||||||
DolphinViewContainer* DolphinTabPage::createViewContainer(const KUrl& url) const
|
DolphinViewContainer* DolphinTabPage::createViewContainer(const KUrl& url) const
|
||||||
{
|
{
|
||||||
DolphinViewContainer* container = new DolphinViewContainer(url, m_splitter);
|
DolphinViewContainer* container = new DolphinViewContainer(url, m_splitter);
|
||||||
|
|
|
@ -133,6 +133,13 @@ private slots:
|
||||||
*/
|
*/
|
||||||
void slotViewActivated();
|
void slotViewActivated();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles the view url redirection event.
|
||||||
|
*
|
||||||
|
* It emits the activeViewUrlChanged signal with the url \a newUrl.
|
||||||
|
*/
|
||||||
|
void slotViewUrlRedirection(const KUrl& oldUrl, const KUrl& newUrl);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/**
|
/**
|
||||||
* Creates a new view container and does the default initialization.
|
* Creates a new view container and does the default initialization.
|
||||||
|
|
|
@ -295,12 +295,19 @@ void DolphinTabWidget::tabUrlChanged(const KUrl& url)
|
||||||
if (index >= 0) {
|
if (index >= 0) {
|
||||||
tabBar()->setTabText(index, tabName(url));
|
tabBar()->setTabText(index, tabName(url));
|
||||||
tabBar()->setTabIcon(index, KIcon(KMimeType::iconNameForUrl(url)));
|
tabBar()->setTabIcon(index, KIcon(KMimeType::iconNameForUrl(url)));
|
||||||
|
|
||||||
|
// Emit the currentUrlChanged signal if the url of the current tab has been changed.
|
||||||
|
if (index == currentIndex()) {
|
||||||
|
emit currentUrlChanged(url);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DolphinTabWidget::currentTabChanged(int index)
|
void DolphinTabWidget::currentTabChanged(int index)
|
||||||
{
|
{
|
||||||
emit activeViewChanged(tabPageAt(index)->activeViewContainer());
|
DolphinViewContainer* viewContainer = tabPageAt(index)->activeViewContainer();
|
||||||
|
emit activeViewChanged(viewContainer);
|
||||||
|
emit currentUrlChanged(viewContainer->url());
|
||||||
}
|
}
|
||||||
|
|
||||||
void DolphinTabWidget::tabInserted(int index)
|
void DolphinTabWidget::tabInserted(int index)
|
||||||
|
|
|
@ -72,6 +72,12 @@ signals:
|
||||||
*/
|
*/
|
||||||
void rememberClosedTab(const KUrl& url, const QByteArray& state);
|
void rememberClosedTab(const KUrl& url, const QByteArray& state);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is emitted when the url of the current tab has been changed. This signal
|
||||||
|
* is also emitted when the active view has been changed.
|
||||||
|
*/
|
||||||
|
void currentUrlChanged(const KUrl& url);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
/**
|
/**
|
||||||
* Opens a new view with the current URL that is part of a tab and activates
|
* Opens a new view with the current URL that is part of a tab and activates
|
||||||
|
|
Loading…
Reference in a new issue