Undid all the scrolling muckery. Going to need to figure this out for real...

This commit is contained in:
Pietro Gagliardi 2014-10-20 22:04:24 -04:00
parent c4a2bdc2a6
commit 0437ecd403
1 changed files with 2 additions and 4 deletions

View File

@ -152,7 +152,7 @@ static void vscrollto(struct table *t, intptr_t newpos)
// negative because ScrollWindowEx() is "backwards"
if (ScrollWindowEx(t->hwnd, 0, (-(newpos - t->firstVisible)) * rowHeight(t),
&scrollArea, &scrollArea, NULL, NULL,
NULL, NULL, NULL, NULL,
SW_ERASE | SW_INVALIDATE) == ERROR)
abort();
t->firstVisible = newpos;
@ -290,12 +290,10 @@ static void drawItems(struct table *t, HDC dc, RECT cliprect)
abort();
if (GetWindowOrgEx(dc, &prevOrigin) == 0)
abort();
// notice this calculation: we discount t->headerHeight so that (0,0) shows up at (0, t->headerHeight)
if (SetWindowOrgEx(dc, prevOrigin.x, prevOrigin.y + (t->firstVisible * tm.tmHeight - t->headerHeight), NULL) == 0)
if (SetWindowOrgEx(dc, prevOrigin.x, prevOrigin.y + (t->firstVisible * tm.tmHeight), NULL) == 0)
abort();
// see http://blogs.msdn.com/b/oldnewthing/archive/2003/07/29/54591.aspx and http://blogs.msdn.com/b/oldnewthing/archive/2003/07/30/54600.aspx
// this is also why we kept cliprect unaware of t->headerHeight above
first = cliprect.top / tm.tmHeight;
if (first < 0)
first = 0;