diff options
| author | Felix Ernst <[email protected]> | 2020-11-19 21:22:27 +0000 |
|---|---|---|
| committer | Elvis Angelaccio <[email protected]> | 2020-11-19 21:22:27 +0000 |
| commit | 50ca5af7e0ec460f9f004a3660efa10bb1dd8cb1 (patch) | |
| tree | f87dde47243cd134a1d106f06e7a2b650cb2edc9 /src/dolphinnavigatorswidgetaction.cpp | |
| parent | f2d2f325b628f8b831cce076c1a5f5dc43ac21ee (diff) | |
Allow having the UrlNavigators below the tab bar
This commit restores the possibility to have the UrlNavigators below
the tab bar. This will happen automatically whenever the UrlNavigator
is removed from the toolbar.
It is also now again possible to have the toolbar on the side. This
option is disabled while the toolbar contains the UrlNavigators.
This commit makes no changes to the new default which is having the
UrlNavigators in the toolbar but makes sure that upgrading users won't
be affected.
Diffstat (limited to 'src/dolphinnavigatorswidgetaction.cpp')
| -rw-r--r-- | src/dolphinnavigatorswidgetaction.cpp | 58 |
1 files changed, 29 insertions, 29 deletions
diff --git a/src/dolphinnavigatorswidgetaction.cpp b/src/dolphinnavigatorswidgetaction.cpp index e0ae3132a..b8c77c69b 100644 --- a/src/dolphinnavigatorswidgetaction.cpp +++ b/src/dolphinnavigatorswidgetaction.cpp @@ -18,6 +18,7 @@ #include <QHBoxLayout> #include <QPushButton> #include <QSplitter> +#include <QToolBar> #include <limits> @@ -35,7 +36,6 @@ DolphinNavigatorsWidgetAction::DolphinNavigatorsWidgetAction(QWidget *parent) : setIcon(QIcon::fromTheme(QStringLiteral("dialog-scripts"))); m_splitter->setChildrenCollapsible(false); - setDefaultWidget(m_splitter.get()); m_splitter->addWidget(createNavigatorWidget(Primary)); @@ -45,34 +45,6 @@ DolphinNavigatorsWidgetAction::DolphinNavigatorsWidgetAction(QWidget *parent) : this, &DolphinNavigatorsWidgetAction::adjustSpacing); } -bool DolphinNavigatorsWidgetAction::addToToolbarAndSave(KXmlGuiWindow *mainWindow) -{ - const QString rawXml = KXMLGUIFactory::readConfigFile(mainWindow->xmlFile()); - QDomDocument domDocument; - if (rawXml.isEmpty() || !domDocument.setContent(rawXml) || domDocument.isNull()) { - return false; - } - QDomNode toolbar = domDocument.elementsByTagName(QStringLiteral("ToolBar")).at(0); - if (toolbar.isNull()) { - return false; - } - - QDomElement urlNavigatorElement = domDocument.createElement(QStringLiteral("Action")); - urlNavigatorElement.setAttribute(QStringLiteral("name"), QStringLiteral("url_navigators")); - - QDomNode position = toolbar.firstChildElement(QStringLiteral("Spacer")); - if (position.isNull()) { - toolbar.appendChild(urlNavigatorElement); - } else { - toolbar.replaceChild(urlNavigatorElement, position); - } - - KXMLGUIFactory::saveConfigFile(domDocument, mainWindow->xmlFile()); - mainWindow->reloadXML(); - mainWindow->createGUI(); - return true; -} - void DolphinNavigatorsWidgetAction::createSecondaryUrlNavigator() { Q_ASSERT(m_splitter->count() == 1); @@ -109,6 +81,11 @@ void DolphinNavigatorsWidgetAction::followViewContainersGeometry( adjustSpacing(); } +bool DolphinNavigatorsWidgetAction::isInToolbar() const +{ + return qobject_cast<QToolBar *>(m_splitter->parentWidget()); +} + DolphinUrlNavigator* DolphinNavigatorsWidgetAction::primaryUrlNavigator() const { Q_ASSERT(m_splitter); @@ -137,6 +114,29 @@ void DolphinNavigatorsWidgetAction::setSecondaryNavigatorVisible(bool visible) updateText(); } +QWidget *DolphinNavigatorsWidgetAction::createWidget(QWidget *parent) +{ + QWidget *oldParent = m_splitter->parentWidget(); + if (oldParent && oldParent->layout()) { + oldParent->layout()->removeWidget(m_splitter.get()); + QGridLayout *layout = qobject_cast<QGridLayout *>(oldParent->layout()); + if (qobject_cast<QToolBar *>(parent) && layout) { + // in DolphinTabPage::insertNavigatorsWidget the minimumHeight of this row was + // set to fit the m_splitter. Since we are now removing it again, the + // minimumHeight can be reset to 0. + layout->setRowMinimumHeight(0, 0); + } + } + m_splitter->setParent(parent); + return m_splitter.get(); +} + +void DolphinNavigatorsWidgetAction::deleteWidget(QWidget *widget) +{ + Q_UNUSED(widget) + m_splitter->setParent(nullptr); +} + void DolphinNavigatorsWidgetAction::adjustSpacing() { Q_ASSERT(m_globalXOfSplitter != INT_MIN); |
