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:
parent
7963834b98
commit
474b5161ad
|
@ -140,17 +140,9 @@ EwinDetermineArea(EWin * ewin)
|
||||||
ewin->vx = dsk->current_area_x * EoGetW(dsk) + EoGetX(ewin);
|
ewin->vx = dsk->current_area_x * EoGetW(dsk) + EoGetX(ewin);
|
||||||
ewin->vy = dsk->current_area_y * EoGetH(dsk) + EoGetY(ewin);
|
ewin->vy = dsk->current_area_y * EoGetH(dsk) + EoGetY(ewin);
|
||||||
|
|
||||||
if (EwinIsOnScreen(ewin))
|
ax = (ewin->vx + EoGetW(ewin) / 2) / EoGetW(dsk);
|
||||||
{
|
ay = (ewin->vy + EoGetH(ewin) / 2) / EoGetH(dsk);
|
||||||
ax = dsk->current_area_x;
|
DesksFixArea(&ax, &ay);
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ax != ewin->area_x || ay != ewin->area_y)
|
if (ax != ewin->area_x || ay != ewin->area_y)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue