mirror of
https://github.com/KDE/latte-dock.git
synced 2025-01-01 01:17:51 +03:00
more improvements for MultipleLayouts case
--fix the strut setting between multiple running layouts. When the activity is changing then each dock/panel removes or adds its struts accordingly
This commit is contained in:
parent
4280c14acd
commit
19cd67627d
@ -1193,7 +1193,7 @@ void DockView::setMaskArea(QRect area)
|
||||
setMask(fixedMask);
|
||||
}
|
||||
|
||||
qDebug() << "dock mask set:" << m_maskArea;
|
||||
// qDebug() << "dock mask set:" << m_maskArea;
|
||||
emit maskAreaChanged();
|
||||
}
|
||||
|
||||
|
@ -444,15 +444,16 @@ void LayoutManager::loadLayouts()
|
||||
|
||||
void LayoutManager::loadLatteLayout(QString layoutPath)
|
||||
{
|
||||
qDebug() << " -------------------------------------------------------------------- ";
|
||||
qDebug() << " -------------------------------------------------------------------- ";
|
||||
|
||||
if (m_corona->containments().size() > 0) {
|
||||
qDebug() << "There are still containments present :::: " << m_corona->containments().size();
|
||||
qDebug() << "LOAD LATTE LAYOUT ::: There are still containments present !!!! :: " << m_corona->containments().size();
|
||||
}
|
||||
|
||||
if (!layoutPath.isEmpty() && m_corona->containments().size() == 0) {
|
||||
if (!layoutPath.isEmpty()) {
|
||||
qDebug() << "loading layout:" << layoutPath;
|
||||
m_corona->loadLayout(layoutPath);
|
||||
}
|
||||
qDebug() << "LOADING CORONA LAYOUT:" << layoutPath;
|
||||
m_corona->loadLayout(layoutPath);
|
||||
|
||||
//! ~~~ ADDING DOCKVIEWS AND ENFORCE LOADING IF TASKS ARENT PRESENT BASED ON SCREENS ~~~ !//
|
||||
|
||||
@ -523,7 +524,7 @@ bool LayoutManager::switchToLayout(QString layoutName)
|
||||
m_activeLayouts.removeFirst();
|
||||
layout->unloadContainments();
|
||||
layout->unloadDockViews();
|
||||
layout->deleteLater();
|
||||
delete layout;
|
||||
}
|
||||
|
||||
if (initializingMultipleLayouts) {
|
||||
@ -598,7 +599,7 @@ void LayoutManager::syncMultipleLayoutsToActivities(QString layoutForOrphans)
|
||||
layoutsToUnload.removeFirst();
|
||||
tempLayout->unloadContainments();
|
||||
tempLayout->unloadDockViews();
|
||||
tempLayout->deleteLater();
|
||||
delete tempLayout;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -113,7 +113,7 @@ inline void VisibilityManagerPrivate::setMode(Dock::Visibility mode)
|
||||
switch (this->mode) {
|
||||
case Dock::AlwaysVisible: {
|
||||
if (view->containment() && !view->containment()->isUserConfiguring() && view->screen()) {
|
||||
wm->setDockStruts(*view, dockGeometry, view->location());
|
||||
updateStrutsBasedOnLayoutsAndActivities();
|
||||
}
|
||||
|
||||
connections[0] = connect(view->containment(), &Plasma::Containment::locationChanged
|
||||
@ -129,20 +129,8 @@ inline void VisibilityManagerPrivate::setMode(Dock::Visibility mode)
|
||||
|
||||
|
||||
if (dockCorona && dockCorona->layoutManager()->memoryUsage() == Dock::MultipleLayouts) {
|
||||
if (dockView->managedLayout() && (dockView->managedLayout()->name() == dockCorona->layoutManager()->currentLayoutName())) {
|
||||
wm->setDockStruts(*view, dockGeometry, view->location());
|
||||
} else {
|
||||
wm->removeDockStruts(*view);
|
||||
}
|
||||
|
||||
connections[2] = connect(dockCorona->activitiesConsumer(), &KActivities::Consumer::currentActivityChanged, this, [&]() {
|
||||
Layout *mLayout = dockView->managedLayout();
|
||||
|
||||
if (mLayout && (mLayout->name() == dockCorona->layoutManager()->currentLayoutName())) {
|
||||
wm->setDockStruts(*view, dockGeometry, view->location());
|
||||
} else {
|
||||
wm->removeDockStruts(*view);
|
||||
}
|
||||
updateStrutsBasedOnLayoutsAndActivities();
|
||||
});
|
||||
|
||||
}
|
||||
@ -208,6 +196,19 @@ inline void VisibilityManagerPrivate::setMode(Dock::Visibility mode)
|
||||
emit q->modeChanged();
|
||||
}
|
||||
|
||||
void VisibilityManagerPrivate::updateStrutsBasedOnLayoutsAndActivities()
|
||||
{
|
||||
bool multipleLayoutsAndCurrent = (dockCorona->layoutManager()->memoryUsage() == Dock::MultipleLayouts
|
||||
&& dockView->managedLayout()
|
||||
&& dockCorona->layoutManager()->currentLayoutName() == dockView->managedLayout()->name());
|
||||
|
||||
if (dockCorona->layoutManager()->memoryUsage() == Dock::SingleLayout || multipleLayoutsAndCurrent) {
|
||||
wm->setDockStruts(*view, dockGeometry, view->location());
|
||||
} else {
|
||||
wm->removeDockStruts(*view);
|
||||
}
|
||||
}
|
||||
|
||||
void VisibilityManagerPrivate::setRaiseOnDesktop(bool enable)
|
||||
{
|
||||
if (enable == raiseOnDesktopChange)
|
||||
@ -349,7 +350,7 @@ inline void VisibilityManagerPrivate::setDockGeometry(const QRect &geometry)
|
||||
this->dockGeometry = geometry;
|
||||
|
||||
if (mode == Dock::AlwaysVisible && !view->containment()->isUserConfiguring() && view->screen()) {
|
||||
wm->setDockStruts(*view, this->dockGeometry, view->containment()->location());
|
||||
updateStrutsBasedOnLayoutsAndActivities();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -67,6 +67,8 @@ public:
|
||||
|
||||
bool intersects(const WindowInfoWrap &winfo);
|
||||
|
||||
void updateStrutsBasedOnLayoutsAndActivities();
|
||||
|
||||
void saveConfig();
|
||||
void restoreConfig();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user