From bec9ba1ba7628bb9c14b31c1508de0afd7d33b0c Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Mon, 17 Aug 2015 19:19:02 -0400 Subject: [PATCH] More relayout parent work. More TODOs. --- redo/reredo/darwin/box.m | 2 +- redo/reredo/darwin/control.m | 2 +- redo/reredo/darwin/group.m | 5 +++++ redo/reredo/darwin/tab.m | 2 ++ redo/reredo/ui_darwin.h | 4 ++-- 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/redo/reredo/darwin/box.m b/redo/reredo/darwin/box.m index 435738ea..99a8ad61 100644 --- a/redo/reredo/darwin/box.m +++ b/redo/reredo/darwin/box.m @@ -191,7 +191,7 @@ static void relayout(uiBox *b) [metrics release]; [views release]; - uiDarwinControlRelayoutParent(uiControl(b)); + uiDarwinControlRelayoutParent(uiDarwinControl(b)); } static void boxRelayout(uiDarwinControl *c) diff --git a/redo/reredo/darwin/control.m b/redo/reredo/darwin/control.m index b8cf3e74..edbeb24d 100644 --- a/redo/reredo/darwin/control.m +++ b/redo/reredo/darwin/control.m @@ -17,7 +17,7 @@ void uiDarwinControlRelayoutParent(uiDarwinControl *c) p = uiControlParent(uiControl(c)); if (p == NULL) return; - (*(uiDarwinControl(p)->Relayout))(p); + (*(uiDarwinControl(p)->Relayout))(uiDarwinControl(p)); } void osCommitShow(uiControl *c) diff --git a/redo/reredo/darwin/group.m b/redo/reredo/darwin/group.m index f1708ec4..18d13d28 100644 --- a/redo/reredo/darwin/group.m +++ b/redo/reredo/darwin/group.m @@ -1,6 +1,9 @@ // 14 august 2015 #import "uipriv_darwin.h" +// TODO +// - even with the uiDarwinControlRelayoutParent() calls, we still need to click the button twice for the ambiguity to go away + struct uiGroup { uiDarwinControl c; NSBox *box; @@ -54,6 +57,7 @@ void uiGroupSetChild(uiGroup *g, uiControl *child) uiControlSetParent(g->child, uiControl(g)); [g->box addSubview:childView]; layoutSingleView(g->box, childView, g->margined); + uiDarwinControlRelayoutParent(uiDarwinControl(g)); } } @@ -70,6 +74,7 @@ void uiGroupSetMargined(uiGroup *g, int margined) if (g->child != NULL) { childView = (NSView *) uiControlHandle(g->child); layoutSingleView(g->box, childView, g->margined); + uiDarwinControlRelayoutParent(uiDarwinControl(g)); } } diff --git a/redo/reredo/darwin/tab.m b/redo/reredo/darwin/tab.m index 31ba6f06..7949f637 100644 --- a/redo/reredo/darwin/tab.m +++ b/redo/reredo/darwin/tab.m @@ -60,6 +60,7 @@ void uiTabInsertAt(uiTab *t, const char *name, uintmax_t n, uiControl *child) view = [[NSView alloc] initWithFrame:NSZeroRect]; [view addSubview:childView]; layoutSingleView(view, childView, 0); + uiDarwinControlRelayoutParent(uiDarwinControl(t)); [t->pages insertObject:[NSValue valueWithPointer:child] atIndex:n]; [t->views insertObject:view atIndex:n]; @@ -122,6 +123,7 @@ void uiTabSetMargined(uiTab *t, uintmax_t n, int margined) child = (uiControl *) [childv pointerValue]; childView = (NSView *) uiControlHandle(child); layoutSingleView(view, childView, margined); + uiDarwinControlRelayoutParent(uiDarwinControl(t)); } uiTab *uiNewTab(void) diff --git a/redo/reredo/ui_darwin.h b/redo/reredo/ui_darwin.h index 75bd2ed5..d8d10d37 100644 --- a/redo/reredo/ui_darwin.h +++ b/redo/reredo/ui_darwin.h @@ -10,7 +10,7 @@ This file assumes that you have imported and "ui.h" beforehand. typedef struct uiDarwinControl uiDarwinControl; struct uiDarwinControl { uiControl c; - void (*Relayout)(uiControl *); + void (*Relayout)(uiDarwinControl *); }; _UI_EXTERN uintmax_t uiDarwinControlType(void); #define uiDarwinControl(this) ((uiDarwinControl *) uiIsA((this), uiDarwinControlType(), 1)) @@ -40,7 +40,7 @@ _UI_EXTERN void uiDarwinControlRelayoutParent(uiDarwinControl *); { \ /* do nothing */ \ } \ - static void _ ## type ## Relayout(uiControl *c) \ + static void _ ## type ## Relayout(uiDarwinControl *c) \ { \ uiDarwinControlRelayoutParent(uiDarwinControl(c)); \ }