ewins: Fix ewin area calculation

Checking EwinIsOnScreen() was meant to be an optimization but may cause
inconsistencies if ewin is slightly off-screen.
This commit is contained in:
Kim Woelders 2022-05-27 17:13:40 +02:00
parent 7963834b98
commit 474b5161ad
1 changed files with 3 additions and 11 deletions

View File

@ -140,17 +140,9 @@ EwinDetermineArea(EWin * ewin)
ewin->vx = dsk->current_area_x * EoGetW(dsk) + EoGetX(ewin);
ewin->vy = dsk->current_area_y * EoGetH(dsk) + EoGetY(ewin);
if (EwinIsOnScreen(ewin))
{
ax = dsk->current_area_x;
ay = dsk->current_area_y;
}
else
{
ax = (ewin->vx + EoGetW(ewin) / 2) / EoGetW(dsk);
ay = (ewin->vy + EoGetH(ewin) / 2) / EoGetH(dsk);
DesksFixArea(&ax, &ay);
}
ax = (ewin->vx + EoGetW(ewin) / 2) / EoGetW(dsk);
ay = (ewin->vy + EoGetH(ewin) / 2) / EoGetH(dsk);
DesksFixArea(&ax, &ay);
if (ax != ewin->area_x || ay != ewin->area_y)
{