Finished uiTab destruction code.

This commit is contained in:
Pietro Gagliardi 2015-06-01 17:37:43 -04:00
parent bc4ac108ce
commit 678ddbedf3
3 changed files with 14 additions and 5 deletions

View File

@ -60,7 +60,7 @@ static void tabCommitDestroy(uiControl *c)
while (t->pages->len != 0) { while (t->pages->len != 0) {
page = ptrArrayIndex(t->pages, uiControl *, 0); page = ptrArrayIndex(t->pages, uiControl *, 0);
ptrArrayDelete(t->pages, 0); ptrArrayDelete(t->pages, 0);
// TODO destroy control tabPageDestroyChild(page);
uiControlSetParent(page, NULL); uiControlSetParent(page, NULL);
uiControlDestroy(page); uiControlDestroy(page);
} }

View File

@ -10,7 +10,7 @@
struct tabPage { struct tabPage {
uiControl c; uiControl c;
HWND hwnd; HWND hwnd;
uiControl *control; // TODO rename child uiControl *child;
int margined; int margined;
void (*baseResize)(uiControl *, intmax_t, intmax_t, intmax_t, intmax_t, uiSizing *); void (*baseResize)(uiControl *, intmax_t, intmax_t, intmax_t, intmax_t, uiSizing *);
}; };
@ -52,7 +52,7 @@ static void tabPageResize(uiControl *c, intmax_t x, intmax_t y, intmax_t width,
// this rect is in client coordinates; we need toplevel window coordinates // this rect is in client coordinates; we need toplevel window coordinates
mapWindowRect(t->hwnd, dchild->Sys->CoordFrom, &r); mapWindowRect(t->hwnd, dchild->Sys->CoordFrom, &r);
uiControlResize(t->control, r.left, r.top, r.right - r.left, r.bottom - r.top, dchild); uiControlResize(t->child, r.left, r.top, r.right - r.left, r.bottom - r.top, dchild);
uiFreeSizing(dchild); uiFreeSizing(dchild);
} }
@ -90,8 +90,8 @@ uiControl *newTabPage(uiControl *child)
// TODO split into separate functions // TODO split into separate functions
uiControl(t)->Handle = tabPageHandle; uiControl(t)->Handle = tabPageHandle;
t->control = child; t->child = child;
uiControlSetParent(t->control, uiControl(t)); uiControlSetParent(t->child, uiControl(t));
t->baseResize = uiControl(t)->Resize; t->baseResize = uiControl(t)->Resize;
uiControl(t)->Resize = tabPageResize; uiControl(t)->Resize = tabPageResize;
@ -112,3 +112,11 @@ void tabPageSetMargined(uiControl *c, int margined)
t->margined = margined; t->margined = margined;
} }
void tabPageDestroyChild(uiControl *c)
{
struct tabPage *t = (struct tabPage *) c;
uiControlSetParent(t->child, NULL);
uiControlDestroy(t->child);
}

View File

@ -118,3 +118,4 @@ extern void setSingleHWNDFuncs(uiControl *);
extern uiControl *newTabPage(uiControl *); extern uiControl *newTabPage(uiControl *);
extern int tabPageMargined(uiControl *); extern int tabPageMargined(uiControl *);
extern void tabPageSetMargined(uiControl *, int); extern void tabPageSetMargined(uiControl *, int);
extern void tabPageDestroyChild(uiControl *);