|
|
|
@ -48,53 +48,52 @@ inline void VisibilityManagerPrivate::setMode(Dock::Visibility mode)
|
|
|
|
|
this->mode = mode;
|
|
|
|
|
|
|
|
|
|
switch (this->mode) {
|
|
|
|
|
case Dock::AlwaysVisible:
|
|
|
|
|
{
|
|
|
|
|
wm->setDockStruts(dockRect, view->location());
|
|
|
|
|
raiseDock(true);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case Dock::AutoHide:
|
|
|
|
|
{
|
|
|
|
|
raiseDock(true);
|
|
|
|
|
}
|
|
|
|
|
case Dock::AlwaysVisible: {
|
|
|
|
|
wm->setDockStruts(dockRect, view->location());
|
|
|
|
|
raiseDock(true);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case Dock::DodgeActive:
|
|
|
|
|
{
|
|
|
|
|
connections[0] = connect(wm.get(), &AbstractWindowInterface::activeWindowChanged
|
|
|
|
|
, this, &VisibilityManagerPrivate::dodgeActive);
|
|
|
|
|
connections[1] = connect(wm.get(), &AbstractWindowInterface::windowChanged
|
|
|
|
|
, this, &VisibilityManagerPrivate::dodgeActive);
|
|
|
|
|
|
|
|
|
|
dodgeActive(wm->activeWindow());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case Dock::AutoHide: {
|
|
|
|
|
raiseDock(true);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case Dock::DodgeMaximized:
|
|
|
|
|
{
|
|
|
|
|
connections[0] = connect(wm.get(), &AbstractWindowInterface::windowChanged
|
|
|
|
|
, this, &VisibilityManagerPrivate::dodgeMaximized);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case Dock::DodgeActive: {
|
|
|
|
|
connections[0] = connect(wm.get(), &AbstractWindowInterface::activeWindowChanged
|
|
|
|
|
, this, &VisibilityManagerPrivate::dodgeActive);
|
|
|
|
|
connections[1] = connect(wm.get(), &AbstractWindowInterface::windowChanged
|
|
|
|
|
, this, &VisibilityManagerPrivate::dodgeActive);
|
|
|
|
|
|
|
|
|
|
dodgeActive(wm->activeWindow());
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case Dock::DodgeAllWindows:
|
|
|
|
|
{
|
|
|
|
|
for(const auto & wid : wm->windows()) {
|
|
|
|
|
windows.insert({wid, wm->requestInfo(wid)});
|
|
|
|
|
|
|
|
|
|
case Dock::DodgeMaximized: {
|
|
|
|
|
connections[0] = connect(wm.get(), &AbstractWindowInterface::windowChanged
|
|
|
|
|
, this, &VisibilityManagerPrivate::dodgeMaximized);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case Dock::DodgeAllWindows: {
|
|
|
|
|
for (const auto &wid : wm->windows()) {
|
|
|
|
|
windows.insert({wid, wm->requestInfo(wid)});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
connections[0] = connect(wm.get(), &AbstractWindowInterface::windowChanged
|
|
|
|
|
, this, &VisibilityManagerPrivate::dodgeWindows);
|
|
|
|
|
connections[0] = connect(wm.get(), &AbstractWindowInterface::windowChanged
|
|
|
|
|
, this, &VisibilityManagerPrivate::dodgeWindows);
|
|
|
|
|
|
|
|
|
|
connections[1] = connect(wm.get(), &AbstractWindowInterface::windowRemoved
|
|
|
|
|
, this, [&](WId wid) {
|
|
|
|
|
connections[1] = connect(wm.get(), &AbstractWindowInterface::windowRemoved
|
|
|
|
|
, this, [&](WId wid) {
|
|
|
|
|
windows.erase(wid);
|
|
|
|
|
timerCheckWindows.start();
|
|
|
|
|
});
|
|
|
|
|
connections[2] = connect(wm.get(), &AbstractWindowInterface::windowAdded
|
|
|
|
|
, this, [&](WId wid) {
|
|
|
|
|
});
|
|
|
|
|
connections[2] = connect(wm.get(), &AbstractWindowInterface::windowAdded
|
|
|
|
|
, this, [&](WId wid) {
|
|
|
|
|
windows.insert({wid, wm->requestInfo(wid)});
|
|
|
|
|
timerCheckWindows.start();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
saveConfig();
|
|
|
|
@ -246,13 +245,13 @@ inline void VisibilityManagerPrivate::saveConfig()
|
|
|
|
|
inline void VisibilityManagerPrivate::restoreConfig()
|
|
|
|
|
{
|
|
|
|
|
if (!view->containment())
|
|
|
|
|
return;
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
auto config = view->containment()->config();
|
|
|
|
|
auto config = view->containment()->config();
|
|
|
|
|
|
|
|
|
|
mode = static_cast<Dock::Visibility>(config.readEntry("visibility", static_cast<int>(Dock::DodgeActive)));
|
|
|
|
|
timerShow.setInterval(config.readEntry("timerShow", 0));
|
|
|
|
|
timerHide.setInterval(config.readEntry("timerHide", 0));
|
|
|
|
|
mode = static_cast<Dock::Visibility>(config.readEntry("visibility", static_cast<int>(Dock::DodgeActive)));
|
|
|
|
|
timerShow.setInterval(config.readEntry("timerShow", 0));
|
|
|
|
|
timerHide.setInterval(config.readEntry("timerHide", 0));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool VisibilityManagerPrivate::event(QEvent *ev)
|
|
|
|
|