More parent planning and related API changes. I now have a better handle over what I want after last night: p.SetChild() is only called by w.SetChild() and the various uiTab and uiGroup methods; everything else should call Control.SetParent(). Some renaming is needed.

This commit is contained in:
Pietro Gagliardi 2015-04-14 09:41:52 -04:00
parent e5fea12df6
commit 204f450ff8
2 changed files with 20 additions and 6 deletions

View File

@ -27,13 +27,27 @@ c.Add(h)
p.Update()
c.Resize()
d.Remove(1)
f.RemoveParent()
f.SetParent(NULL)
p.Update()
c.Resize()
g.Hide()
p.Update()
c.Resize()
w.SetChild(i)
?????????????
p.SetChild(i)
c.SetParent(NULL)
d.SetParent(NULL)
...
i.SetParent(p)
...
p.Update()
i.Resize()
w.SetChild(NULL)
p.SetChild(NULL)
i.SetParent(NULL)
p.Update()
w.SetChild(i)
(again)
w.Destroy()
?????????????
p.Destroy()
i.Destroy()

6
ui.h
View File

@ -41,7 +41,6 @@ struct uiControl {
void (*destroy)(uiControl *);
uintptr_t (*handle)(uiControl *);
void (*setParent)(uiControl *, uiParent *);
void (*removeParent)(uiControl *);
void (*preferredSize)(uiControl *, uiSizing *, intmax_t *, intmax_t *);
void (*resize)(uiControl *, intmax_t, intmax_t, intmax_t, intmax_t, uiSizing *);
int (*visible)(uiControl *);
@ -57,7 +56,6 @@ struct uiControl {
void uiControlDestroy(uiControl *);
uintptr_t uiControlHandle(uiControl *);
void uiControlSetParent(uiControl *, uiParent *);
void uiControlRemoveParent(uiControl *);
void uiControlPreferredSize(uiControl *, uiSizing *, intmax_t *width, intmax_t *height);
void uiControlResize(uiControl *, intmax_t, intmax_t, intmax_t, intmax_t, uiSizing *);
int uiControlVisible(uiControl *);
@ -90,7 +88,9 @@ struct uiParent {
// The uiParent should already not have a child and the uiControl should already not have a parent.
//
// child can be NULL, in which case the uiParent has no children.
// This form should be called by uiControl.RemoveParent().
// This version should also call uiControl.SetParent(), passing NULL.
//
// If this uiParent has a child already, then the current child is replaced with the new one.
void (*SetChild)(uiParent *p, uiControl *child);
#define uiParentSetChild(p, child) ((*((p)->SetChild))((p), (child)))