Implemented show/hide/enable/disable on uiStack and fixed other bugs. It works!
This commit is contained in:
parent
6d8a811e35
commit
5c567d920d
|
@ -78,8 +78,8 @@ static int singleVisible(uiControl *c)
|
||||||
singleWidget *s = (singleWidget *) (c->internal);
|
singleWidget *s = (singleWidget *) (c->internal);
|
||||||
|
|
||||||
if (s->userHid)
|
if (s->userHid)
|
||||||
return 1;
|
|
||||||
return 0;
|
return 0;
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void singleShow(uiControl *c)
|
static void singleShow(uiControl *c)
|
||||||
|
|
110
stack.c
110
stack.c
|
@ -11,6 +11,10 @@ struct stack {
|
||||||
int vertical;
|
int vertical;
|
||||||
uintptr_t parent;
|
uintptr_t parent;
|
||||||
int padded;
|
int padded;
|
||||||
|
int userHid;
|
||||||
|
int containerHid;
|
||||||
|
int userDisabled;
|
||||||
|
int containerDisabled;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct stackControl {
|
struct stackControl {
|
||||||
|
@ -205,6 +209,103 @@ static void stackResize(uiControl *c, intmax_t x, intmax_t y, intmax_t width, in
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int stackVisible(uiControl *c)
|
||||||
|
{
|
||||||
|
stack *s = (stack *) (c->data);
|
||||||
|
|
||||||
|
return !(s->userHid);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void stackShow(uiControl *c)
|
||||||
|
{
|
||||||
|
stack *s = (stack *) (c->data);
|
||||||
|
uintmax_t i;
|
||||||
|
|
||||||
|
s->userHid = 0;
|
||||||
|
if (!s->containerHid) {
|
||||||
|
for (i = 0; i < s->len; i++)
|
||||||
|
uiControlContainerShow(s->controls[i].c);
|
||||||
|
updateParent(s->parent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void stackHide(uiControl *c)
|
||||||
|
{
|
||||||
|
stack *s = (stack *) (c->data);
|
||||||
|
uintmax_t i;
|
||||||
|
|
||||||
|
s->userHid = 1;
|
||||||
|
for (i = 0; i < s->len; i++)
|
||||||
|
uiControlContainerHide(s->controls[i].c);
|
||||||
|
updateParent(s->parent);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void stackContainerShow(uiControl *c)
|
||||||
|
{
|
||||||
|
stack *s = (stack *) (c->data);
|
||||||
|
uintmax_t i;
|
||||||
|
|
||||||
|
s->containerHid = 0;
|
||||||
|
if (!s->userHid) {
|
||||||
|
for (i = 0; i < s->len; i++)
|
||||||
|
uiControlContainerShow(s->controls[i].c);
|
||||||
|
updateParent(s->parent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void stackContainerHide(uiControl *c)
|
||||||
|
{
|
||||||
|
stack *s = (stack *) (c->data);
|
||||||
|
uintmax_t i;
|
||||||
|
|
||||||
|
s->containerHid = 1;
|
||||||
|
for (i = 0; i < s->len; i++)
|
||||||
|
uiControlContainerHide(s->controls[i].c);
|
||||||
|
updateParent(s->parent);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void stackEnable(uiControl *c)
|
||||||
|
{
|
||||||
|
stack *s = (stack *) (c->data);
|
||||||
|
uintmax_t i;
|
||||||
|
|
||||||
|
s->userDisabled = 0;
|
||||||
|
if (!s->containerDisabled)
|
||||||
|
for (i = 0; i < s->len; i++)
|
||||||
|
uiControlContainerEnable(s->controls[i].c);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void stackDisable(uiControl *c)
|
||||||
|
{
|
||||||
|
stack *s = (stack *) (c->data);
|
||||||
|
uintmax_t i;
|
||||||
|
|
||||||
|
s->userDisabled = 1;
|
||||||
|
for (i = 0; i < s->len; i++)
|
||||||
|
uiControlContainerDisable(s->controls[i].c);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void stackContainerEnable(uiControl *c)
|
||||||
|
{
|
||||||
|
stack *s = (stack *) (c->data);
|
||||||
|
uintmax_t i;
|
||||||
|
|
||||||
|
s->containerDisabled = 0;
|
||||||
|
if (!s->userDisabled)
|
||||||
|
for (i = 0; i < s->len; i++)
|
||||||
|
uiControlContainerEnable(s->controls[i].c);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void stackContainerDisable(uiControl *c)
|
||||||
|
{
|
||||||
|
stack *s = (stack *) (c->data);
|
||||||
|
uintmax_t i;
|
||||||
|
|
||||||
|
s->containerDisabled = 1;
|
||||||
|
for (i = 0; i < s->len; i++)
|
||||||
|
uiControlContainerDisable(s->controls[i].c);
|
||||||
|
}
|
||||||
|
|
||||||
uiControl *uiNewHorizontalStack(void)
|
uiControl *uiNewHorizontalStack(void)
|
||||||
{
|
{
|
||||||
uiControl *c;
|
uiControl *c;
|
||||||
|
@ -220,6 +321,15 @@ uiControl *uiNewHorizontalStack(void)
|
||||||
c->removeParent = stackRemoveParent;
|
c->removeParent = stackRemoveParent;
|
||||||
c->preferredSize = stackPreferredSize;
|
c->preferredSize = stackPreferredSize;
|
||||||
c->resize = stackResize;
|
c->resize = stackResize;
|
||||||
|
c->visible = stackVisible;
|
||||||
|
c->show = stackShow;
|
||||||
|
c->hide = stackHide;
|
||||||
|
c->containerShow = stackContainerShow;
|
||||||
|
c->containerHide = stackContainerHide;
|
||||||
|
c->enable = stackEnable;
|
||||||
|
c->disable = stackDisable;
|
||||||
|
c->containerEnable = stackContainerEnable;
|
||||||
|
c->containerDisable = stackContainerDisable;
|
||||||
|
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue