#include "dolphin_generalsettings.h"
#include "dolphinviewcontainer.h"
-#include "global.h"
#include <QVariantAnimation>
-#include <QSplitter>
#include <QGridLayout>
#include <QWidgetAction>
#include <QStyle>
layout->setSpacing(0);
layout->setContentsMargins(0, 0, 0, 0);
- m_splitter = new QSplitter(Qt::Horizontal, this);
+ m_splitter = new DolphinTabPageSplitter(Qt::Horizontal, this);
m_splitter->setChildrenCollapsible(false);
connect(m_splitter, &QSplitter::splitterMoved,
this, &DolphinTabPage::splitterMoved);
view->setDisabled(true);
startExpandViewAnimation(m_primaryViewContainer);
}
+
+ m_primaryViewContainer->slotSplitTabDisabled();
}
}
}
m_splitter->restoreState(splitterState);
}
-void DolphinTabPage::restoreStateV1(const QByteArray& state)
-{
- if (state.isEmpty()) {
- return;
- }
-
- QByteArray sd = state;
- QDataStream stream(&sd, QIODevice::ReadOnly);
-
- bool isSplitViewEnabled = false;
- stream >> isSplitViewEnabled;
- setSplitViewEnabled(isSplitViewEnabled, WithoutAnimation);
-
- QUrl primaryUrl;
- stream >> primaryUrl;
- m_primaryViewContainer->setUrl(primaryUrl);
- bool primaryUrlEditable;
- stream >> primaryUrlEditable;
- m_primaryViewContainer->urlNavigatorInternalWithHistory()->setUrlEditable(primaryUrlEditable);
-
- if (isSplitViewEnabled) {
- QUrl secondaryUrl;
- stream >> secondaryUrl;
- m_secondaryViewContainer->setUrl(secondaryUrl);
- bool secondaryUrlEditable;
- stream >> secondaryUrlEditable;
- m_secondaryViewContainer->urlNavigatorInternalWithHistory()->setUrlEditable(secondaryUrlEditable);
- }
-
- stream >> m_primaryViewActive;
- if (m_primaryViewActive) {
- m_primaryViewContainer->setActive(true);
- } else {
- Q_ASSERT(m_splitViewEnabled);
- m_secondaryViewContainer->setActive(true);
- }
-
- QByteArray splitterState;
- stream >> splitterState;
- m_splitter->restoreState(splitterState);
-}
-
void DolphinTabPage::setActive(bool active)
{
if (active) {
}
m_expandViewAnimation->start(QAbstractAnimation::DeleteWhenStopped);
}
+
+DolphinTabPageSplitterHandle::DolphinTabPageSplitterHandle(Qt::Orientation orientation, QSplitter *parent)
+ : QSplitterHandle(orientation, parent)
+ , m_mouseReleaseWasReceived(false)
+{}
+
+bool DolphinTabPageSplitterHandle::event(QEvent *event)
+{
+ switch (event->type()) {
+ case QEvent::MouseButtonPress:
+ m_mouseReleaseWasReceived = false;
+ break;
+ case QEvent::MouseButtonRelease:
+ if (m_mouseReleaseWasReceived) {
+ resetSplitterSizes();
+ }
+ m_mouseReleaseWasReceived = !m_mouseReleaseWasReceived;
+ break;
+ case QEvent::MouseButtonDblClick:
+ m_mouseReleaseWasReceived = false;
+ resetSplitterSizes();
+ break;
+ default:
+ break;
+ }
+
+ return QSplitterHandle::event(event);
+}
+
+void DolphinTabPageSplitterHandle::resetSplitterSizes()
+{
+ QList<int> splitterSizes = splitter()->sizes();
+ std::fill(splitterSizes.begin(), splitterSizes.end(), 0);
+ splitter()->setSizes(splitterSizes);
+}
+
+DolphinTabPageSplitter::DolphinTabPageSplitter(Qt::Orientation orientation, QWidget *parent)
+ : QSplitter(orientation, parent)
+{}
+
+QSplitterHandle* DolphinTabPageSplitter::createHandle()
+{
+ return new DolphinTabPageSplitterHandle(orientation(), this);
+}