summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--new/container_darwin.m17
-rw-r--r--new/newcontrol_darwin.m13
-rw-r--r--new/uipriv_darwin.h2
-rw-r--r--new/window_darwin.m3
4 files changed, 29 insertions, 6 deletions
diff --git a/new/container_darwin.m b/new/container_darwin.m
index 747ccf7..333b914 100644
--- a/new/container_darwin.m
+++ b/new/container_darwin.m
@@ -24,11 +24,26 @@ uiLogObjCClassAllocations
- (void)setFrameSize:(NSSize)s
{
+ [super setFrameSize:s];
+ [self uiUpdateNow];
+}
+
+- (void)uiUpdateNow
+{
uiSizing d;
- [super setFrameSize:s];
if (self.child != NULL)
(*(self.child->resize))(self.child, [self bounds].origin.y, [self bounds].origin.y, [self bounds].size.width, [self bounds].size.height, &d);
}
@end
+
+void updateParent(uintptr_t parent)
+{
+ uiContainer *c;
+
+ if (parent == 0)
+ return;
+ c = (uiContainer *) parent;
+ [c uiUpdateNow];
+}
diff --git a/new/newcontrol_darwin.m b/new/newcontrol_darwin.m
index 04f6c1c..8b0bd48 100644
--- a/new/newcontrol_darwin.m
+++ b/new/newcontrol_darwin.m
@@ -8,6 +8,7 @@ struct uiSingleViewControl {
NSView *view;
NSScrollView *scrollView;
NSView *immediate; // the control that is added to the parent container; either view or scrollView
+ uintptr_t parent;
};
#define S(c) ((uiSingleViewControl *) (c))
@@ -24,9 +25,17 @@ static uintptr_t singleHandle(uiControl *c)
static void singleSetParent(uiControl *c, uintptr_t parent)
{
- NSView *parentView = (NSView *) parent;
+ uiSingleViewControl *s = S(c);
+ uintptr_t oldparent;
+ NSView *parentView;
- [parentView addSubview:S(c)->immediate];
+ oldparent = s->parent;
+ s->parent = parent;
+ parentView = (NSView *) (s->parent);
+ // TODO will this change parents?
+ [parentView addSubview:s->immediate];
+ updateParent(oldparent);
+ updateParent(s->parent);
}
// also good for NSBox and NSProgressIndicator
diff --git a/new/uipriv_darwin.h b/new/uipriv_darwin.h
index 514297c..1205d81 100644
--- a/new/uipriv_darwin.h
+++ b/new/uipriv_darwin.h
@@ -36,5 +36,7 @@ extern void setStandardControlFont(NSControl *);
// container_darwin.m
@interface uiContainer : NSView
+// TODO rename to uiChild
@property uiControl *child;
+- (void)uiUpdateNow;
@end
diff --git a/new/window_darwin.m b/new/window_darwin.m
index 613b78f..c2c312a 100644
--- a/new/window_darwin.m
+++ b/new/window_darwin.m
@@ -1,9 +1,6 @@
// 6 april 2015
#import "uipriv_darwin.h"
-// TODO
-// - showing on size
-
@interface uiWindowDelegate : NSObject <NSWindowDelegate>
@property (assign) NSWindow *w;
@property (assign) uiContainer *container;