Implemented uiControlContainerUpdateState() on uiBox, uiGroup, and uiWindow. Not on uiTab yet; there's a few glitches that I need to take care of first.

This commit is contained in:
Pietro Gagliardi 2015-08-21 01:09:07 -04:00
parent 133f258c3f
commit ff4f8fbd58
5 changed files with 34 additions and 6 deletions

View File

@ -62,8 +62,6 @@ uiControl *toplevelOwning(uiControl *c)
} }
} }
static void controlUpdateState(uiControl *);
void uiControlSetParent(uiControl *c, uiControl *parent) void uiControlSetParent(uiControl *c, uiControl *parent)
{ {
struct controlBase *cb = controlBase(c); struct controlBase *cb = controlBase(c);
@ -133,7 +131,7 @@ void uiControlDisable(uiControl *c)
controlUpdateState(c); controlUpdateState(c);
} }
static void controlUpdateState(uiControl *c) void controlUpdateState(uiControl *c)
{ {
if (controlContainerVisible(c)) if (controlContainerVisible(c))
osCommitShow(c); osCommitShow(c);

View File

@ -56,7 +56,21 @@ static void onDestroy(uiBox *b)
[b->stretchy release]; [b->stretchy release];
} }
// TODO container update state static void boxContainerUpdateState(uiControl *c)
{
uiBox *b = uiBox(c);
NSUInteger i;
for (i = 0; i < [b->children count]; i++) {
NSValue *v;
uiControl *child;
v = (NSValue *) [b->children objectAtIndex:i];
// TODO change all these other instances of casts to conversions
child = uiControl([v pointerValue]);
controlUpdateState(child);
}
}
static NSString *viewName(uintmax_t n) static NSString *viewName(uintmax_t n)
{ {
@ -281,6 +295,7 @@ static uiBox *finishNewBox(BOOL vertical)
setHuggingPri(b->noStretchyView, NSLayoutPriorityDefaultLow, NSLayoutConstraintOrientationVertical); setHuggingPri(b->noStretchyView, NSLayoutPriorityDefaultLow, NSLayoutConstraintOrientationVertical);
uiDarwinFinishNewControl(b, uiBox); uiDarwinFinishNewControl(b, uiBox);
uiControl(b)->ContainerUpdateState = boxContainerUpdateState;
uiDarwinControl(b)->Relayout = boxRelayout; uiDarwinControl(b)->Relayout = boxRelayout;
return b; return b;

View File

@ -28,7 +28,13 @@ static void onDestroy(uiGroup *g)
} }
} }
// TODO group container update static void groupContainerUpdateState(uiControl *c)
{
uiGroup *g = uiGroup(c);
if (g->child != NULL)
controlUpdateState(g->child);
}
static void groupRelayout(uiDarwinControl *c) static void groupRelayout(uiDarwinControl *c)
{ {
@ -110,6 +116,7 @@ uiGroup *uiNewGroup(const char *title)
[g->box setTitleFont:[NSFont systemFontOfSize:[NSFont systemFontSizeForControlSize:NSSmallControlSize]]]; [g->box setTitleFont:[NSFont systemFontOfSize:[NSFont systemFontSizeForControlSize:NSSmallControlSize]]];
uiDarwinFinishNewControl(g, uiGroup); uiDarwinFinishNewControl(g, uiGroup);
uiControl(g)->ContainerUpdateState = groupContainerUpdateState;
uiDarwinControl(g)->Relayout = groupRelayout; uiDarwinControl(g)->Relayout = groupRelayout;
return g; return g;

View File

@ -112,7 +112,13 @@ static void windowCommitHide(uiControl *c)
[w->window orderOut:w->window]; [w->window orderOut:w->window];
} }
// TODO container update state static void windowContainerUpdateState(uiControl *c)
{
uiWindow *w = uiWindow(c);
if (w->child != NULL)
controlUpdateState(w->child);
}
static void windowRelayout(uiDarwinControl *c) static void windowRelayout(uiDarwinControl *c)
{ {
@ -209,6 +215,7 @@ uiWindow *uiNewWindow(const char *title, int width, int height, int hasMenubar)
uiDarwinFinishNewControl(w, uiWindow); uiDarwinFinishNewControl(w, uiWindow);
//TODO uiControl(w)->CommitShow = windowCommitShow; //TODO uiControl(w)->CommitShow = windowCommitShow;
//TODO uiControl(w)->CommitHide = windowCommitHide; //TODO uiControl(w)->CommitHide = windowCommitHide;
uiControl(w)->ContainerUpdateState = windowContainerUpdateState;
uiDarwinControl(w)->Relayout = windowRelayout; uiDarwinControl(w)->Relayout = windowRelayout;
return w; return w;

View File

@ -17,6 +17,7 @@ extern void complain(const char *, ...);
extern int isToplevel(uiControl *); extern int isToplevel(uiControl *);
extern uiControl *toplevelOwning(uiControl *); extern uiControl *toplevelOwning(uiControl *);
extern void controlUpdateState(uiControl *);
extern void osCommitShow(uiControl *); extern void osCommitShow(uiControl *);
extern void osCommitHide(uiControl *); extern void osCommitHide(uiControl *);