screenedge: allow creation between screens on wayland

Allow the creation of screen edges bordering two screens. This allows
panels in auto-hide/dodge-windows mode to work when the panel is
positioned between two edges.

Don't change the X11 behavior since edge barrier is not supported on
X11, without which it is virtually impossible to exactly position the
cursor on the pixel to activate the edge.

BUG: 351175
This commit is contained in:
Yifan Zhu 2024-02-10 21:26:15 -08:00
parent ad13765348
commit 2e5d3253d4

View file

@ -1345,7 +1345,7 @@ bool ScreenEdges::createEdgeForClient(Window *client, ElectricBorder border)
const QRect screen = output->geometry();
switch (border) {
case ElectricTop:
if (!isTopScreen(screen, fullArea)) {
if (!waylandServer() && !isTopScreen(screen, fullArea)) {
return false;
}
y = screen.y();
@ -1354,7 +1354,7 @@ bool ScreenEdges::createEdgeForClient(Window *client, ElectricBorder border)
width = geo.width();
break;
case ElectricBottom:
if (!isBottomScreen(screen, fullArea)) {
if (!waylandServer() && !isBottomScreen(screen, fullArea)) {
return false;
}
y = screen.y() + screen.height() - 1;
@ -1363,7 +1363,7 @@ bool ScreenEdges::createEdgeForClient(Window *client, ElectricBorder border)
width = geo.width();
break;
case ElectricLeft:
if (!isLeftScreen(screen, fullArea)) {
if (!waylandServer() && !isLeftScreen(screen, fullArea)) {
return false;
}
x = screen.x();
@ -1372,7 +1372,7 @@ bool ScreenEdges::createEdgeForClient(Window *client, ElectricBorder border)
height = geo.height();
break;
case ElectricRight:
if (!isRightScreen(screen, fullArea)) {
if (!waylandServer() && !isRightScreen(screen, fullArea)) {
return false;
}
x = screen.x() + screen.width() - 1;