summaryrefslogtreecommitdiff
path: root/redo/area_windows.c
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2014-08-21 13:01:50 -0400
committerPietro Gagliardi <[email protected]>2014-08-21 13:01:50 -0400
commit3a16648b83748c2b771cbd17b6b120318aeede20 (patch)
tree0dafc1fe86bc6ff5a5982e804a07221948772155 /redo/area_windows.c
parent5ddef4113332035429ac54b5ba62f4539eb20da0 (diff)
Implemented Area.Repaint() on Windows.
Diffstat (limited to 'redo/area_windows.c')
-rw-r--r--redo/area_windows.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/redo/area_windows.c b/redo/area_windows.c
index ce538db..7e49bff 100644
--- a/redo/area_windows.c
+++ b/redo/area_windows.c
@@ -289,10 +289,10 @@ static void adjustAreaScrollbars(HWND hwnd, void *data)
SetScrollInfo(hwnd, SB_VERT, &si, TRUE);
}
-void repaintArea(HWND hwnd)
+void repaintArea(HWND hwnd, RECT *r)
{
// NULL - the whole area; TRUE - have windows erase if possible
- if (InvalidateRect(hwnd, NULL, TRUE) == 0)
+ if (InvalidateRect(hwnd, r, TRUE) == 0)
xpanic("error flagging Area as needing repainting after event", GetLastError());
if (UpdateWindow(hwnd) == 0)
xpanic("error repainting Area after event", GetLastError());
@@ -386,10 +386,16 @@ static LRESULT CALLBACK areaWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM
return (LRESULT) areaKeyEvent(data, TRUE, wParam, lParam);
case msgAreaSizeChanged:
adjustAreaScrollbars(hwnd, data);
- repaintArea(hwnd); // this calls for an update
+ repaintArea(hwnd, NULL); // this calls for an update
+ return 0;
+ case msgAreaGetScroll:
+ getScrollPos(hwnd, (int *) wParam, (int *) lParam);
+ return 0;
+ case msgAreaRepaint:
+ repaintArea(hwnd, (RECT *) lParam);
return 0;
case msgAreaRepaintAll:
- repaintArea(hwnd);
+ repaintArea(hwnd, NULL);
return 0;
default:
return DefWindowProcW(hwnd, uMsg, wParam, lParam);