mirror of
https://github.com/KDE/latte-dock.git
synced 2025-03-05 00:58:20 +03:00
added blockHiding property on visibilitymanager
This commit is contained in:
parent
a4699e9230
commit
8e4b4f36bc
@ -32,7 +32,7 @@ VisibilityManagerPrivate::VisibilityManagerPrivate(PlasmaQuick::ContainmentView
|
||||
}
|
||||
});
|
||||
connect(&timerHide, &QTimer::timeout, this, [this]() {
|
||||
if (!isHidden) {
|
||||
if (!blockHiding && !isHidden) {
|
||||
qDebug() << "must be hide";
|
||||
emit this->q->mustBeHide();
|
||||
}
|
||||
@ -146,10 +146,34 @@ inline void VisibilityManagerPrivate::setIsHidden(bool isHidden)
|
||||
if (this->isHidden == isHidden)
|
||||
return;
|
||||
|
||||
if (blockHiding) {
|
||||
qWarning() << "isHidden property is blocked, ignoring update";
|
||||
return;
|
||||
}
|
||||
|
||||
this->isHidden = isHidden;
|
||||
emit q->isHiddenChanged();
|
||||
}
|
||||
|
||||
void VisibilityManagerPrivate::setBlockHiding(bool blockHiding)
|
||||
{
|
||||
if (this->blockHiding == blockHiding)
|
||||
return;
|
||||
|
||||
this->blockHiding = blockHiding;
|
||||
|
||||
if (this->blockHiding) {
|
||||
timerHide.stop();
|
||||
|
||||
if (isHidden)
|
||||
isHidden = false;
|
||||
} else {
|
||||
updateHiddenState();
|
||||
}
|
||||
|
||||
emit q->blockHidingChanged();
|
||||
}
|
||||
|
||||
inline void VisibilityManagerPrivate::setTimerShow(int msec)
|
||||
{
|
||||
timerShow.setInterval(msec);
|
||||
@ -172,7 +196,7 @@ inline void VisibilityManagerPrivate::raiseDock(bool raise)
|
||||
if (!timerShow.isActive()) {
|
||||
timerShow.start();
|
||||
}
|
||||
} else {
|
||||
} else if (!blockHiding) {
|
||||
timerShow.stop();
|
||||
|
||||
if (!timerHide.isActive())
|
||||
@ -180,6 +204,27 @@ inline void VisibilityManagerPrivate::raiseDock(bool raise)
|
||||
}
|
||||
}
|
||||
|
||||
void VisibilityManagerPrivate::updateHiddenState()
|
||||
{
|
||||
switch (mode) {
|
||||
case Dock::AutoHide:
|
||||
raiseDock(false);
|
||||
break;
|
||||
|
||||
case Dock::DodgeActive:
|
||||
dodgeActive(wm->activeWindow());
|
||||
break;
|
||||
|
||||
case Dock::DodgeMaximized:
|
||||
dodgeMaximized(wm->activeWindow());
|
||||
break;
|
||||
|
||||
case Dock::DodgeAllWindows:
|
||||
dodgeWindows(wm->activeWindow());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
inline void VisibilityManagerPrivate::setDockRect(const QRect &dockRect)
|
||||
{
|
||||
if (!view->containment() || this->dockRect == dockRect)
|
||||
@ -314,24 +359,7 @@ bool VisibilityManagerPrivate::event(QEvent *ev)
|
||||
containsMouse = false;
|
||||
emit q->containsMouseChanged();
|
||||
|
||||
switch (mode) {
|
||||
case Dock::AutoHide:
|
||||
raiseDock(false);
|
||||
break;
|
||||
|
||||
case Dock::DodgeActive:
|
||||
dodgeActive(wm->activeWindow());
|
||||
break;
|
||||
|
||||
case Dock::DodgeMaximized:
|
||||
dodgeMaximized(wm->activeWindow());
|
||||
break;
|
||||
|
||||
case Dock::DodgeAllWindows:
|
||||
dodgeWindows(wm->activeWindow());
|
||||
break;
|
||||
}
|
||||
|
||||
updateHiddenState();
|
||||
} else if (ev->type() == QEvent::Show) {
|
||||
wm->setDockDefaultFlags();
|
||||
}
|
||||
@ -372,6 +400,16 @@ void VisibilityManager::setIsHidden(bool isHidden)
|
||||
d->setIsHidden(isHidden);
|
||||
}
|
||||
|
||||
bool VisibilityManager::blockHiding() const
|
||||
{
|
||||
return d->blockHiding;
|
||||
}
|
||||
|
||||
void VisibilityManager::setBlockHiding(bool blockHiding)
|
||||
{
|
||||
d->setBlockHiding(blockHiding);
|
||||
}
|
||||
|
||||
bool VisibilityManager::containsMouse() const
|
||||
{
|
||||
return d->containsMouse;
|
||||
|
@ -18,6 +18,7 @@ class VisibilityManager : public QObject {
|
||||
|
||||
Q_PROPERTY(Latte::Dock::Visibility mode READ mode WRITE setMode NOTIFY modeChanged)
|
||||
Q_PROPERTY(bool isHidden READ isHidden WRITE setIsHidden NOTIFY isHiddenChanged)
|
||||
Q_PROPERTY(bool blockHiding READ blockHiding WRITE setBlockHiding NOTIFY blockHidingChanged)
|
||||
Q_PROPERTY(bool containsMouse READ containsMouse NOTIFY containsMouseChanged)
|
||||
Q_PROPERTY(int timerShow READ timerShow WRITE setTimerShow NOTIFY timerShowChanged)
|
||||
Q_PROPERTY(int timerHide READ timerHide WRITE setTimerHide NOTIFY timerHideChanged)
|
||||
@ -32,6 +33,9 @@ public:
|
||||
bool isHidden() const;
|
||||
void setIsHidden(bool isHidden);
|
||||
|
||||
bool blockHiding() const;
|
||||
void setBlockHiding(bool blockHiding);
|
||||
|
||||
bool containsMouse() const;
|
||||
|
||||
int timerShow() const;
|
||||
@ -51,6 +55,7 @@ signals:
|
||||
|
||||
void modeChanged();
|
||||
void isHiddenChanged();
|
||||
void blockHidingChanged();
|
||||
void containsMouseChanged();
|
||||
void timerShowChanged();
|
||||
void timerHideChanged();
|
||||
|
@ -30,10 +30,12 @@ public:
|
||||
|
||||
void setMode(Dock::Visibility mode);
|
||||
void setIsHidden(bool isHidden);
|
||||
void setBlockHiding(bool blockHiding);
|
||||
void setTimerShow(int msec);
|
||||
void setTimerHide(int msec);
|
||||
|
||||
void raiseDock(bool raise);
|
||||
void updateHiddenState();
|
||||
|
||||
void setDockRect(const QRect &rect);
|
||||
|
||||
@ -61,6 +63,7 @@ public:
|
||||
QTimer timerCheckWindows;
|
||||
QRect dockRect;
|
||||
bool isHidden{false};
|
||||
bool blockHiding{false};
|
||||
bool containsMouse{false};
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user