summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--new/control.c5
-rw-r--r--new/newcontrol_windows.c26
-rw-r--r--new/stack.c27
3 files changed, 20 insertions, 38 deletions
diff --git a/new/control.c b/new/control.c
index c7cd928..61acb18 100644
--- a/new/control.c
+++ b/new/control.c
@@ -16,11 +16,6 @@ void uiControlSetParent(uiControl *c, uiParent *parent)
(*(c->setParent))(c, parent);
}
-void uiControlRemoveParent(uiControl *c)
-{
- (*(c->removeParent))(c);
-}
-
void uiControlPreferredSize(uiControl *c, uiSizing *d, intmax_t *width, intmax_t *height)
{
(*(c->preferredSize))(c, d, width, height);
diff --git a/new/newcontrol_windows.c b/new/newcontrol_windows.c
index 12a26f3..105b70c 100644
--- a/new/newcontrol_windows.c
+++ b/new/newcontrol_windows.c
@@ -34,23 +34,20 @@ static uintptr_t singleHandle(uiControl *c)
static void singleSetParent(uiControl *c, uiParent *parent)
{
singleHWND *s = (singleHWND *) (c->internal);
-
- s->parent = parent;
- if (SetParent(s->hwnd, uiParentHWND(s->parent)) == NULL)
- logLastError("error setting control parent in singleSetParent()");
- uiParentUpdate(s->parent);
-}
-
-static void singleRemoveParent(uiControl *c)
-{
- singleHWND *s = (singleHWND *) (c->internal);
uiParent *oldparent;
+ HWND newParentHWND;
oldparent = s->parent;
- s->parent = NULL;
- if (SetParent(s->hwnd, initialParent) == NULL)
- logLastError("error removing control parent in singleSetParent()");
- uiParentUpdate(oldparent);
+ s->parent = parent;
+ newParentHWND = initialParent;
+ if (s->parent != NULL)
+ newParentHWND = uiParentHWND(s->parent);
+ if (SetParent(s->hwnd, newParentHWND) == NULL)
+ logLastError("error setting control parent in singleSetParent()");
+ if (oldparent != NULL)
+ uiParentUpdate(oldparent);
+ if (s->parent != NULL)
+ uiParentUpdate(s->parent);
}
static void singleResize(uiControl *c, intmax_t x, intmax_t y, intmax_t width, intmax_t height, uiSizing *d)
@@ -199,7 +196,6 @@ uiControl *uiWindowsNewControl(uiWindowsNewControlParams *p)
c->destroy = singleDestroy;
c->handle = singleHandle;
c->setParent = singleSetParent;
- c->removeParent = singleRemoveParent;
c->resize = singleResize;
c->visible = singleVisible;
c->show = singleShow;
diff --git a/new/stack.c b/new/stack.c
index 3850a63..a5de6a4 100644
--- a/new/stack.c
+++ b/new/stack.c
@@ -48,24 +48,16 @@ static void stackSetParent(uiControl *c, uiParent *parent)
{
stack *s = (stack *) (c->data);
uintmax_t i;
-
- s->parent = parent;
- for (i = 0; i < s->len; i++)
- uiControlSetParent(s->controls[i].c, s->parent);
- uiParentUpdate(s->parent);
-}
-
-static void stackRemoveParent(uiControl *c)
-{
- stack *s = (stack *) (c->data);
- uintmax_t i;
uiParent *oldparent;
oldparent = s->parent;
- s->parent = NULL;
+ s->parent = parent;
for (i = 0; i < s->len; i++)
- uiControlRemoveParent(s->controls[i].c);
- uiParentUpdate(oldparent);
+ uiControlSetParent(s->controls[i].c, s->parent);
+ if (oldparent != NULL)
+ uiParentUpdate(oldparent);
+ if (s->parent != NULL)
+ uiParentUpdate(s->parent);
}
static void stackPreferredSize(uiControl *c, uiSizing *d, intmax_t *width, intmax_t *height)
@@ -324,7 +316,6 @@ uiControl *uiNewHorizontalStack(void)
c->destroy = stackDestroy;
c->handle = stackHandle;
c->setParent = stackSetParent;
- c->removeParent = stackRemoveParent;
c->preferredSize = stackPreferredSize;
c->resize = stackResize;
c->visible = stackVisible;
@@ -363,14 +354,14 @@ void uiStackAdd(uiControl *st, uiControl *c, int stretchy)
}
s->controls[s->len].c = c;
s->controls[s->len].stretchy = stretchy;
- s->len++;
if (s->parent != NULL) {
uiControlSetParent(s->controls[s->len].c, s->parent);
uiParentUpdate(s->parent);
}
+ s->len++;
}
-void uiStackRemove(uiControl *st, uintptr_t index)
+void uiStackRemove(uiControl *st, uintmax_t index)
{
stack *s = (stack *) (st->data);
uiControl *removed;
@@ -382,7 +373,7 @@ void uiStackRemove(uiControl *st, uintptr_t index)
memmove(&(s->controls[index + 1]), &(s->controls[index]), nAfter * sizeof (stackControl));
s->len--;
if (s->parent != NULL) {
- uiControlRemoveParent(removed);
+ uiControlSetParent(removed, NULL);
uiParentUpdate(s->parent);
}
}