#include <QPointer>
#include <QUrl>
#include <QWidget>
+#include <QSplitter>
class DolphinNavigatorsWidgetAction;
class DolphinViewContainer;
-class QSplitter;
class QVariantAnimation;
class KFileItemList;
+class DolphinTabPageSplitter;
enum Animated {
WithAnimation,
*
* @param enabled If true, creates a secondary viewContainer in this tab.
* Otherwise deletes it.
- * @param animated Decides wether the effects of this method call should
+ * @param animated Decides whether the effects of this method call should
* happen instantly or be transitioned to smoothly.
* @param secondaryUrl If \p enabled is true, the new viewContainer will be opened at this
* parameter. The default value will set the Url of the new viewContainer
void insertNavigatorsWidget(DolphinNavigatorsWidgetAction *navigatorsWidget);
- /**
- * Notify the connected DolphinNavigatorsWidgetAction of geometry changes which it
- * needs for visual alignment.
- */
- void resizeNavigators() const;
-
/**
* Marks the items indicated by \p urls to get selected after the
* directory DolphinView::url() has been loaded. Note that nothing
*/
void restoreState(const QByteArray& state);
- /**
- * Restores all tab related properties (urls, splitter layout, ...) from
- * the given \a state.
- *
- * @deprecated The first tab state version has no version number, we keep
- * this method to restore old states (<= Dolphin 4.14.x).
- */
- Q_DECL_DEPRECATED void restoreStateV1(const QByteArray& state);
-
/**
* Set whether the tab page is active
*
void startExpandViewAnimation(DolphinViewContainer *expandingContainer);
private:
- QSplitter* m_splitter;
+ DolphinTabPageSplitter *m_splitter;
QPointer<DolphinNavigatorsWidgetAction> m_navigatorsWidget;
QPointer<DolphinViewContainer> m_primaryViewContainer;
bool m_active;
};
+class DolphinTabPageSplitterHandle : public QSplitterHandle
+{
+ Q_OBJECT
+
+public:
+ explicit DolphinTabPageSplitterHandle(Qt::Orientation orientation, QSplitter *parent);
+
+protected:
+ bool event(QEvent *event) override;
+
+private:
+ void resetSplitterSizes();
+
+ // Sometimes QSplitterHandle doesn't receive MouseButtonDblClick event.
+ // We can detect that MouseButtonDblClick event should have been
+ // received if we receive two MouseButtonRelease events in a row.
+ bool m_mouseReleaseWasReceived;
+};
+
+class DolphinTabPageSplitter : public QSplitter
+{
+ Q_OBJECT
+
+public:
+ explicit DolphinTabPageSplitter(Qt::Orientation orientation, QWidget *parent);
+
+protected:
+ QSplitterHandle* createHandle() override;
+};
+
#endif // DOLPHIN_TAB_PAGE_H