mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 17:33:05 +00:00
fix(frame): 多屏对角拼接时任务栏消失
在对角位错位时原有代码判断失效,现加上判断对角情况,另修改上下判断出错问题 Log: 修复多屏条件下两个显示器成对角拼接时,调整任务栏为最左或最右后,任务栏消失问题 Bug: https://pms.uniontech.com/zentao/bug-view-27364.html
This commit is contained in:
parent
9dec7f3ebe
commit
fd823f5383
@ -803,64 +803,67 @@ void DockSettings::calculateRelativePos(Monitor *s1, Monitor *s2)
|
|||||||
// 对齐
|
// 对齐
|
||||||
bool isAligment = false;
|
bool isAligment = false;
|
||||||
// 左右拼
|
// 左右拼
|
||||||
// s1左 s2右
|
if (s1->bottom() > s2->top() && s1->top() < s2->bottom()) {
|
||||||
if (s1->right() == s2->left() ) {
|
// s1左 s2右
|
||||||
isAligment = (s1->topRight() == s2->topLeft())
|
if (s1->right() == s2->left() ) {
|
||||||
&& (s1->bottomRight() == s2->bottomLeft());
|
isAligment = (s1->topRight() == s2->topLeft())
|
||||||
if (isAligment) {
|
&& (s1->bottomRight() == s2->bottomLeft());
|
||||||
s1->dockPosition().rightDock = false;
|
if (isAligment) {
|
||||||
s2->dockPosition().leftDock = false;
|
|
||||||
} else {
|
|
||||||
if (!s1->isPrimary())
|
|
||||||
s1->dockPosition().rightDock = false;
|
s1->dockPosition().rightDock = false;
|
||||||
if (!s2->isPrimary())
|
|
||||||
s2->dockPosition().leftDock = false;
|
s2->dockPosition().leftDock = false;
|
||||||
|
} else {
|
||||||
|
if (!s1->isPrimary())
|
||||||
|
s1->dockPosition().rightDock = false;
|
||||||
|
if (!s2->isPrimary())
|
||||||
|
s2->dockPosition().leftDock = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
// s1右 s2左
|
||||||
// s1右 s2左
|
if (s1->left() == s2->right()) {
|
||||||
if (s1->left() == s2->right()) {
|
isAligment = (s1->topLeft() == s2->topRight())
|
||||||
isAligment = (s1->topLeft() == s2->topRight())
|
&& (s1->bottomLeft() == s2->bottomRight());
|
||||||
&& (s1->bottomLeft() == s2->bottomRight());
|
if (isAligment) {
|
||||||
if (isAligment) {
|
|
||||||
s1->dockPosition().leftDock = false;
|
|
||||||
s2->dockPosition().rightDock = false;
|
|
||||||
} else {
|
|
||||||
if (!s1->isPrimary())
|
|
||||||
s1->dockPosition().leftDock = false;
|
s1->dockPosition().leftDock = false;
|
||||||
if (!s2->isPrimary())
|
|
||||||
s2->dockPosition().rightDock = false;
|
s2->dockPosition().rightDock = false;
|
||||||
|
} else {
|
||||||
|
if (!s1->isPrimary())
|
||||||
|
s1->dockPosition().leftDock = false;
|
||||||
|
if (!s2->isPrimary())
|
||||||
|
s2->dockPosition().rightDock = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 上下拼
|
// 上下拼
|
||||||
// s1上 s2下
|
if (s1->right() > s2->left() && s1->left() < s2->right()) {
|
||||||
if (s1->top() == s2->bottom()) {
|
// s1上 s2下
|
||||||
isAligment = (s1->bottomLeft() == s2->topLeft())
|
if (s1->bottom() == s2->top()) {
|
||||||
&& (s1->bottomRight() == s2->topRight());
|
isAligment = (s1->bottomLeft() == s2->topLeft())
|
||||||
if (isAligment) {
|
&& (s1->bottomRight() == s2->topRight());
|
||||||
s1->dockPosition().bottomDock = false;
|
if (isAligment) {
|
||||||
s2->dockPosition().topDock = false;
|
|
||||||
} else {
|
|
||||||
if (!s1->isPrimary())
|
|
||||||
s1->dockPosition().bottomDock = false;
|
s1->dockPosition().bottomDock = false;
|
||||||
if (!s2->isPrimary())
|
|
||||||
s2->dockPosition().topDock = false;
|
s2->dockPosition().topDock = false;
|
||||||
|
} else {
|
||||||
|
if (!s1->isPrimary())
|
||||||
|
s1->dockPosition().bottomDock = false;
|
||||||
|
if (!s2->isPrimary())
|
||||||
|
s2->dockPosition().topDock = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
// s1下 s2上
|
||||||
// s1下 s2上
|
if (s1->top() == s2->bottom()) {
|
||||||
if (s1->bottom() == s2->top()) {
|
isAligment = (s1->topLeft() == s2->bottomLeft())
|
||||||
isAligment = (s1->topLeft() == s2->bottomLeft())
|
&& (s1->topRight() == s2->bottomRight());
|
||||||
&& (s1->topRight() == s2->bottomRight());
|
if (isAligment) {
|
||||||
if (isAligment) {
|
|
||||||
s1->dockPosition().topDock = false;
|
|
||||||
s2->dockPosition().bottomDock = false;
|
|
||||||
} else {
|
|
||||||
if (!s1->isPrimary())
|
|
||||||
s1->dockPosition().topDock = false;
|
s1->dockPosition().topDock = false;
|
||||||
if (!s2->isPrimary())
|
|
||||||
s2->dockPosition().bottomDock = false;
|
s2->dockPosition().bottomDock = false;
|
||||||
|
} else {
|
||||||
|
if (!s1->isPrimary())
|
||||||
|
s1->dockPosition().topDock = false;
|
||||||
|
if (!s2->isPrimary())
|
||||||
|
s2->dockPosition().bottomDock = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 对角拼
|
// 对角拼
|
||||||
bool isDiagonal = (s1->topLeft() == s2->bottomRight())
|
bool isDiagonal = (s1->topLeft() == s2->bottomRight())
|
||||||
|| (s1->topRight() == s2->bottomLeft())
|
|| (s1->topRight() == s2->bottomLeft())
|
||||||
@ -868,9 +871,9 @@ void DockSettings::calculateRelativePos(Monitor *s1, Monitor *s2)
|
|||||||
|| (s1->bottomRight() == s2->topLeft());
|
|| (s1->bottomRight() == s2->topLeft());
|
||||||
if (isDiagonal) {
|
if (isDiagonal) {
|
||||||
auto position = Monitor::DockPosition(false, false, false, false);
|
auto position = Monitor::DockPosition(false, false, false, false);
|
||||||
if (!s1->isPrimary())
|
if (s1->isPrimary())
|
||||||
s2->setDockPosition(position);
|
s2->setDockPosition(position);
|
||||||
if (!s2->isPrimary())
|
if (s2->isPrimary())
|
||||||
s1->setDockPosition(position);
|
s1->setDockPosition(position);
|
||||||
|
|
||||||
switch (m_position) {
|
switch (m_position) {
|
||||||
|
@ -721,7 +721,7 @@ void MainWindow::setStrutPartial()
|
|||||||
// pass if strut area is intersect with other screen
|
// pass if strut area is intersect with other screen
|
||||||
//优化了文件管理的代码 会导致bug 15351 需要注释一下代码
|
//优化了文件管理的代码 会导致bug 15351 需要注释一下代码
|
||||||
// int count = 0;
|
// int count = 0;
|
||||||
// const QRect pr = m_settings->primaryRect();
|
// const QRect pr = m_settings->currentRawRect();
|
||||||
// for (auto *screen : qApp->screens()) {
|
// for (auto *screen : qApp->screens()) {
|
||||||
// const QRect sr = screen->geometry();
|
// const QRect sr = screen->geometry();
|
||||||
// if (sr == pr)
|
// if (sr == pr)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user