summaryrefslogtreecommitdiff
path: root/wintable/resize.h
diff options
context:
space:
mode:
Diffstat (limited to 'wintable/resize.h')
-rw-r--r--wintable/resize.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/wintable/resize.h b/wintable/resize.h
new file mode 100644
index 0000000..2ffaad7
--- /dev/null
+++ b/wintable/resize.h
@@ -0,0 +1,39 @@
+// 7 december 2014
+
+// TODO why doesn't this trigger on first show?
+// TODO see if there's anything not metaphor related in the last bits of the scrollbar series
+// TODO rename this to boot
+
+HANDLER(resizeHandler)
+{
+ WINDOWPOS *wp;
+ RECT client;
+ intptr_t height;
+
+ if (uMsg != WM_WINDOWPOSCHANGED)
+ return FALSE;
+ wp = (WINDOWPOS *) lParam;
+ if ((wp->flags & SWP_NOSIZE) != 0)
+ return FALSE;
+
+ // TODO does wp store the window rect or the client rect?
+ if (GetClientRect(t->hwnd, &client) == 0)
+ panic("error getting Table client rect in resizeHandler()");
+ // TODO do this after calling updateTableWidth() (which calls repositionHeader()?)?
+ client.top += t->headerHeight;
+
+ // update the width...
+ // this will call repositionHeader(); there's a good reason... (see comments)
+ // TODO when I clean that mess up, remove this comment
+ updateTableWidth(t);
+
+ // ...and the height
+ // TODO find out if order matters
+ height = client.bottom - client.top;
+ t->vpagesize = height / rowht(t);
+ // do a dummy scroll to reflect those changes
+ vscrollby(t, 0);
+
+ *lResult = 0;
+ return TRUE;
+}