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;
|
||||
// 左右拼
|
||||
// s1左 s2右
|
||||
if (s1->right() == s2->left() ) {
|
||||
isAligment = (s1->topRight() == s2->topLeft())
|
||||
&& (s1->bottomRight() == s2->bottomLeft());
|
||||
if (isAligment) {
|
||||
s1->dockPosition().rightDock = false;
|
||||
s2->dockPosition().leftDock = false;
|
||||
} else {
|
||||
if (!s1->isPrimary())
|
||||
if (s1->bottom() > s2->top() && s1->top() < s2->bottom()) {
|
||||
// s1左 s2右
|
||||
if (s1->right() == s2->left() ) {
|
||||
isAligment = (s1->topRight() == s2->topLeft())
|
||||
&& (s1->bottomRight() == s2->bottomLeft());
|
||||
if (isAligment) {
|
||||
s1->dockPosition().rightDock = false;
|
||||
if (!s2->isPrimary())
|
||||
s2->dockPosition().leftDock = false;
|
||||
} else {
|
||||
if (!s1->isPrimary())
|
||||
s1->dockPosition().rightDock = false;
|
||||
if (!s2->isPrimary())
|
||||
s2->dockPosition().leftDock = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
// s1右 s2左
|
||||
if (s1->left() == s2->right()) {
|
||||
isAligment = (s1->topLeft() == s2->topRight())
|
||||
&& (s1->bottomLeft() == s2->bottomRight());
|
||||
if (isAligment) {
|
||||
s1->dockPosition().leftDock = false;
|
||||
s2->dockPosition().rightDock = false;
|
||||
} else {
|
||||
if (!s1->isPrimary())
|
||||
// s1右 s2左
|
||||
if (s1->left() == s2->right()) {
|
||||
isAligment = (s1->topLeft() == s2->topRight())
|
||||
&& (s1->bottomLeft() == s2->bottomRight());
|
||||
if (isAligment) {
|
||||
s1->dockPosition().leftDock = false;
|
||||
if (!s2->isPrimary())
|
||||
s2->dockPosition().rightDock = false;
|
||||
} else {
|
||||
if (!s1->isPrimary())
|
||||
s1->dockPosition().leftDock = false;
|
||||
if (!s2->isPrimary())
|
||||
s2->dockPosition().rightDock = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
// 上下拼
|
||||
// s1上 s2下
|
||||
if (s1->top() == s2->bottom()) {
|
||||
isAligment = (s1->bottomLeft() == s2->topLeft())
|
||||
&& (s1->bottomRight() == s2->topRight());
|
||||
if (isAligment) {
|
||||
s1->dockPosition().bottomDock = false;
|
||||
s2->dockPosition().topDock = false;
|
||||
} else {
|
||||
if (!s1->isPrimary())
|
||||
if (s1->right() > s2->left() && s1->left() < s2->right()) {
|
||||
// s1上 s2下
|
||||
if (s1->bottom() == s2->top()) {
|
||||
isAligment = (s1->bottomLeft() == s2->topLeft())
|
||||
&& (s1->bottomRight() == s2->topRight());
|
||||
if (isAligment) {
|
||||
s1->dockPosition().bottomDock = false;
|
||||
if (!s2->isPrimary())
|
||||
s2->dockPosition().topDock = false;
|
||||
} else {
|
||||
if (!s1->isPrimary())
|
||||
s1->dockPosition().bottomDock = false;
|
||||
if (!s2->isPrimary())
|
||||
s2->dockPosition().topDock = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
// s1下 s2上
|
||||
if (s1->bottom() == s2->top()) {
|
||||
isAligment = (s1->topLeft() == s2->bottomLeft())
|
||||
&& (s1->topRight() == s2->bottomRight());
|
||||
if (isAligment) {
|
||||
s1->dockPosition().topDock = false;
|
||||
s2->dockPosition().bottomDock = false;
|
||||
} else {
|
||||
if (!s1->isPrimary())
|
||||
// s1下 s2上
|
||||
if (s1->top() == s2->bottom()) {
|
||||
isAligment = (s1->topLeft() == s2->bottomLeft())
|
||||
&& (s1->topRight() == s2->bottomRight());
|
||||
if (isAligment) {
|
||||
s1->dockPosition().topDock = false;
|
||||
if (!s2->isPrimary())
|
||||
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())
|
||||
|| (s1->topRight() == s2->bottomLeft())
|
||||
@ -868,9 +871,9 @@ void DockSettings::calculateRelativePos(Monitor *s1, Monitor *s2)
|
||||
|| (s1->bottomRight() == s2->topLeft());
|
||||
if (isDiagonal) {
|
||||
auto position = Monitor::DockPosition(false, false, false, false);
|
||||
if (!s1->isPrimary())
|
||||
if (s1->isPrimary())
|
||||
s2->setDockPosition(position);
|
||||
if (!s2->isPrimary())
|
||||
if (s2->isPrimary())
|
||||
s1->setDockPosition(position);
|
||||
|
||||
switch (m_position) {
|
||||
|
@ -721,7 +721,7 @@ void MainWindow::setStrutPartial()
|
||||
// pass if strut area is intersect with other screen
|
||||
//优化了文件管理的代码 会导致bug 15351 需要注释一下代码
|
||||
// int count = 0;
|
||||
// const QRect pr = m_settings->primaryRect();
|
||||
// const QRect pr = m_settings->currentRawRect();
|
||||
// for (auto *screen : qApp->screens()) {
|
||||
// const QRect sr = screen->geometry();
|
||||
// if (sr == pr)
|
||||
|
Loading…
x
Reference in New Issue
Block a user