summaryrefslogtreecommitdiffstats
path: root/src/pane.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pane.c')
-rw-r--r--src/pane.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/pane.c b/src/pane.c
new file mode 100644
index 0000000..c5aea81
--- /dev/null
+++ b/src/pane.c
@@ -0,0 +1,35 @@
+#include "pane.h"
+#include "util.h"
+
+void
+pane_init(struct pane *pane, pane_handler handle, pane_updater update)
+{
+ pane->win = newwin(1, 1, 0, 0);
+ ASSERT(pane->win != NULL);
+ pane->handle = handle;
+ pane->update = update;
+}
+
+void
+pane_resize(struct pane *pane, int sx, int sy, int ex, int ey)
+{
+ pane->sx = sx;
+ pane->sy = sy;
+ pane->ex = ex;
+ pane->ey = ey;
+ pane->w = pane->ex - pane->sx;
+ pane->h = pane->ey - pane->sy;
+
+ pane->active = (pane->w > 0 && pane->h > 0);
+ if (pane->active) {
+ wresize(pane->win, pane->h, pane->w);
+ mvwin(pane->win, pane->sy, pane->sx);
+ redrawwin(pane->win);
+ }
+}
+
+void
+pane_free(struct pane *pane)
+{
+ delwin(pane->win);
+}