/* Invalidate a certain section of the display. One main reason for this is that a window has been moved or destroyed. The following windows are affected: * windows below the window creating the invalidation. * transparent windows located above The coordinates given are absolute coordinates (desktop coordinates) */ void WM__InvalidateAreaBelow(const GUI_RECT* pRect, WM_HWIN StopWin) { WM_HWIN iWin, iNext; /* Iterate over windows below StopWin */ for (iWin = WM__FirstWin; iWin!=StopWin; iWin = iNext) { GUI_RECT r = *pRect; WM_Obj* pWin = WM_H2P(iWin); iNext = pWin->hNextLin; if (GUI__IntersectRects(&r, &r, &pWin->Rect)) { WM_InvalidateBWin1Abs (iWin, &r); } }; }
/* Invalidate a certain section of the display. One main reason for this is that a window has been moved or destroyed. The following windows are affected: * windows below the window creating the invalidation. * transparent windows located above The coordinates given are absolute coordinates (desktop coordinates) */ void WM__InvalidateAreaBelow(const GUI_RECT* pRect, WM_HWIN StopWin) { WM_HWIN iWin, iNext; GUI_USE_PARA(StopWin); /* tbd: change calls of this function */ /* Iterate over windows below StopWin */ for (iWin = WM__FirstWin; iWin/*!=StopWin*/; iWin = iNext) { GUI_RECT r = *pRect; WM_Obj* pWin = WM_H2P(iWin); iNext = pWin->hNextLin; if (GUI__IntersectRects(&r, &r, &pWin->Rect)) { WM_InvalidateBWin1Abs (iWin, &r); } }; }
/* Invalidate any transparent window above the given area */ void WM__InvalidateTransAreaAbove(const GUI_RECT* pRect, WM_HWIN StopWin) { GUI_USE_PARA(pRect); GUI_USE_PARA(StopWin); #if 0 WM_HWIN iWin; /* Iterate over windows below StopWin */ for (iWin = StopWin; iWin!=WM_HWIN_NULL; iWin = WM_H2P(iWin)->Next) { WM_Obj *pWin = WM_H2P(iWin); if (pWin->Status & WM_SF_HASTRANS) { GUI_RECT r = *pRect; if (GUI__IntersectRects(&r, &r, &WM_H2P(iWin)->Rect)) { WM_InvalidateBWin1Abs (iWin, &r); } } } #endif }