diff --git a/src/private/indicators/ClassicIndicators.cpp b/src/private/indicators/ClassicIndicators.cpp index 08a74b2a..7ef5a8e3 100644 --- a/src/private/indicators/ClassicIndicators.cpp +++ b/src/private/indicators/ClassicIndicators.cpp @@ -55,14 +55,44 @@ QPoint ClassicIndicators::posForIndicator(DropIndicatorOverlayInterface::DropLoc return m_indicatorWindow->posForIndicator(loc); } -bool ClassicIndicators::innerIndicatorsVisible() const +bool ClassicIndicators::innerLeftIndicatorVisible() const { - return dropIndicatorVisible(DropLocation_Inner); + return dropIndicatorVisible(DropLocation_Left); } -bool ClassicIndicators::outterIndicatorsVisible() const +bool ClassicIndicators::innerRightIndicatorVisible() const { - return dropIndicatorVisible(DropLocation_Outter); + return dropIndicatorVisible(DropLocation_Right); +} + +bool ClassicIndicators::innerTopIndicatorVisible() const +{ + return dropIndicatorVisible(DropLocation_Top); +} + +bool ClassicIndicators::innerBottomIndicatorVisible() const +{ + return dropIndicatorVisible(DropLocation_Bottom); +} + +bool ClassicIndicators::outterLeftIndicatorVisible() const +{ + return dropIndicatorVisible(DropLocation_OutterLeft); +} + +bool ClassicIndicators::outterRightIndicatorVisible() const +{ + return dropIndicatorVisible(DropLocation_OutterRight); +} + +bool ClassicIndicators::outterTopIndicatorVisible() const +{ + return dropIndicatorVisible(DropLocation_OutterTop); +} + +bool ClassicIndicators::outterBottomIndicatorVisible() const +{ + return dropIndicatorVisible(DropLocation_OutterBottom); } bool ClassicIndicators::tabIndicatorVisible() const @@ -88,9 +118,7 @@ void ClassicIndicators::updateVisibility() m_indicatorWindow->setVisible(false); } - Q_EMIT innerIndicatorsVisibleChanged(); - Q_EMIT outterIndicatorsVisibleChanged(); - Q_EMIT tabIndicatorVisibleChanged(); + Q_EMIT indicatorsVisibleChanged(); } void ClassicIndicators::raiseIndicators() diff --git a/src/private/indicators/ClassicIndicatorsWindow.cpp b/src/private/indicators/ClassicIndicatorsWindow.cpp index 9a8e3530..255dc494 100644 --- a/src/private/indicators/ClassicIndicatorsWindow.cpp +++ b/src/private/indicators/ClassicIndicatorsWindow.cpp @@ -138,9 +138,9 @@ IndicatorWindow::IndicatorWindow(ClassicIndicators *classicIndicators_) setAttribute(Qt::WA_TranslucentBackground); - connect(classicIndicators, &ClassicIndicators::innerIndicatorsVisibleChanged, + connect(classicIndicators, &ClassicIndicators::indicatorsVisibleChanged, this, &IndicatorWindow::updateIndicatorVisibility); - connect(classicIndicators, &ClassicIndicators::outterIndicatorsVisibleChanged, + connect(classicIndicators, &ClassicIndicators::indicatorsVisibleChanged, this, &IndicatorWindow::updateIndicatorVisibility); m_indicators << m_center << m_left << m_right << m_top << m_bottom @@ -199,13 +199,10 @@ void IndicatorWindow::resizeEvent(QResizeEvent *ev) void IndicatorWindow::updateIndicatorVisibility() { - for (Indicator *indicator : { m_left, m_right, m_bottom, m_top }) - indicator->setVisible(classicIndicators->innerIndicatorsVisible()); - - for (Indicator *indicator : { m_outterTop, m_outterLeft, m_outterRight, m_outterBottom }) - indicator->setVisible(classicIndicators->outterIndicatorsVisible()); - - m_center->setVisible(classicIndicators->tabIndicatorVisible()); + for (Indicator *indicator : { m_left, m_right, m_bottom, m_top, + m_outterTop, m_outterLeft, m_outterRight, m_outterBottom, + m_center }) + indicator->setVisible(classicIndicators->dropIndicatorVisible(indicator->m_dropLocation)); updateMask(); } diff --git a/src/private/indicators/ClassicIndicators_p.h b/src/private/indicators/ClassicIndicators_p.h index 47d081ac..126b14f4 100644 --- a/src/private/indicators/ClassicIndicators_p.h +++ b/src/private/indicators/ClassicIndicators_p.h @@ -23,9 +23,18 @@ class DOCKS_EXPORT ClassicIndicators : public DropIndicatorOverlayInterface { Q_OBJECT - Q_PROPERTY(bool innerIndicatorsVisible READ innerIndicatorsVisible NOTIFY innerIndicatorsVisibleChanged) - Q_PROPERTY(bool outterIndicatorsVisible READ outterIndicatorsVisible NOTIFY outterIndicatorsVisibleChanged) - Q_PROPERTY(bool tabIndicatorVisible READ tabIndicatorVisible NOTIFY tabIndicatorVisibleChanged) + // Properties for QML + Q_PROPERTY(bool innerLeftIndicatorVisible READ innerLeftIndicatorVisible NOTIFY indicatorsVisibleChanged) + Q_PROPERTY(bool innerRightIndicatorVisible READ innerRightIndicatorVisible NOTIFY indicatorsVisibleChanged) + Q_PROPERTY(bool innerTopIndicatorVisible READ innerTopIndicatorVisible NOTIFY indicatorsVisibleChanged) + Q_PROPERTY(bool innerBottomIndicatorVisible READ innerBottomIndicatorVisible NOTIFY indicatorsVisibleChanged) + + Q_PROPERTY(bool outterLeftIndicatorVisible READ outterLeftIndicatorVisible NOTIFY indicatorsVisibleChanged) + Q_PROPERTY(bool outterRightIndicatorVisible READ outterRightIndicatorVisible NOTIFY indicatorsVisibleChanged) + Q_PROPERTY(bool outterTopIndicatorVisible READ outterTopIndicatorVisible NOTIFY indicatorsVisibleChanged) + Q_PROPERTY(bool outterBottomIndicatorVisible READ outterBottomIndicatorVisible NOTIFY indicatorsVisibleChanged) + + Q_PROPERTY(bool tabIndicatorVisible READ tabIndicatorVisible NOTIFY indicatorsVisibleChanged) public: explicit ClassicIndicators(DropArea *dropArea); @@ -33,19 +42,22 @@ public: DropLocation hover_impl(QPoint globalPos) override; QPoint posForIndicator(DropLocation) const override; - bool innerIndicatorsVisible() const; - bool outterIndicatorsVisible() const; - - // The tab/center indicator + // Lots of getters needed because of QML: + bool innerLeftIndicatorVisible() const; + bool innerRightIndicatorVisible() const; + bool innerTopIndicatorVisible() const; + bool innerBottomIndicatorVisible() const; + bool outterLeftIndicatorVisible() const; + bool outterRightIndicatorVisible() const; + bool outterTopIndicatorVisible() const; + bool outterBottomIndicatorVisible() const; bool tabIndicatorVisible() const; protected: bool onResize(QSize newSize) override; void updateVisibility() override; Q_SIGNALS: - void innerIndicatorsVisibleChanged(); - void outterIndicatorsVisibleChanged(); - void tabIndicatorVisibleChanged(); + void indicatorsVisibleChanged(); private: friend class KDDockWidgets::Indicator; diff --git a/src/private/quick/qml/ClassicIndicatorsOverlay.qml b/src/private/quick/qml/ClassicIndicatorsOverlay.qml index f2f44b48..9e5396e2 100644 --- a/src/private/quick/qml/ClassicIndicatorsOverlay.qml +++ b/src/private/quick/qml/ClassicIndicatorsOverlay.qml @@ -21,7 +21,7 @@ Item { visible: width > 50 && height > 50 // don't show if window is too small' ClassicIndicator { - visible: _window.classicIndicators.outterIndicatorsVisible + visible: _window.classicIndicators.outterLeftIndicatorVisible indicatorType: DropIndicatorOverlayInterface.DropLocation_OutterLeft anchors { left: parent.left @@ -31,7 +31,7 @@ Item { } ClassicIndicator { - visible: _window.classicIndicators.outterIndicatorsVisible + visible: _window.classicIndicators.outterRightIndicatorVisible indicatorType: DropIndicatorOverlayInterface.DropLocation_OutterRight anchors { right: parent.right @@ -41,7 +41,7 @@ Item { } ClassicIndicator { - visible: _window.classicIndicators.outterIndicatorsVisible + visible: _window.classicIndicators.outterTopIndicatorVisible indicatorType: DropIndicatorOverlayInterface.DropLocation_OutterTop anchors { top: parent.top @@ -51,7 +51,7 @@ Item { } ClassicIndicator { - visible: _window.classicIndicators.outterIndicatorsVisible + visible: _window.classicIndicators.outterBottomIndicatorVisible indicatorType: DropIndicatorOverlayInterface.DropLocation_OutterBottom anchors { bottom: parent.bottom @@ -69,9 +69,12 @@ Item { width: (centerIndicator * 3) + (2 * innerMargin) height: width - visible: _window.classicIndicators.innerIndicatorsVisible + visible: _window.classicIndicators.innerLeftIndicatorVisible || _window.classicIndicators.innerRightIndicatorVisible || + _window.classicIndicators.innerTopIndicatorVisible || _window.classicIndicators.innerBottomIndicatorVisible || _window.classicIndicators.tabIndicatorVisible ClassicIndicator { + id: innerLeft + visible: _window.classicIndicators.innerLeftIndicatorVisible indicatorType: DropIndicatorOverlayInterface.DropLocation_Left anchors { right: centerIndicator.left @@ -88,6 +91,8 @@ Item { } ClassicIndicator { + id: innerRight + visible: _window.classicIndicators.innerRightIndicatorVisible indicatorType: DropIndicatorOverlayInterface.DropLocation_Right anchors { left: centerIndicator.right @@ -97,6 +102,8 @@ Item { } ClassicIndicator { + id: innerTop + visible: _window.classicIndicators.innerTopIndicatorVisible indicatorType: DropIndicatorOverlayInterface.DropLocation_Top anchors { bottom: centerIndicator.top @@ -106,6 +113,8 @@ Item { } ClassicIndicator { + id: innerBottom + visible: _window.classicIndicators.innerBottomIndicatorVisible indicatorType: DropIndicatorOverlayInterface.DropLocation_Bottom anchors { top: centerIndicator.bottom