summaryrefslogtreecommitdiff
path: root/new/newcontrol_darwin.m
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2015-04-13 12:53:05 -0400
committerPietro Gagliardi <[email protected]>2015-04-13 12:53:05 -0400
commit963feb6c0668b3c64242607fe71f458420a91f32 (patch)
tree89876bc232359f6b166dc325a609bf27cac05ed7 /new/newcontrol_darwin.m
parente4147f14afecc95db90430143d672512a9e92bdb (diff)
Converted and fixed the Mac OS X code for uiParent. I'm still not happy, but this is DEFINITELY a step in the right direction... Perhaps automatic deletion is a pipe dream :/ I should also really nail the parenting/unparenting logic, but for that I need to add one more method.
Diffstat (limited to 'new/newcontrol_darwin.m')
-rw-r--r--new/newcontrol_darwin.m22
1 files changed, 13 insertions, 9 deletions
diff --git a/new/newcontrol_darwin.m b/new/newcontrol_darwin.m
index 56a9f7b..560a934 100644
--- a/new/newcontrol_darwin.m
+++ b/new/newcontrol_darwin.m
@@ -7,7 +7,7 @@ struct singleView {
NSView *view;
NSScrollView *scrollView;
NSView *immediate; // the control that is added to the parent container; either view or scrollView
- uintptr_t parent;
+ uiParent *parent;
BOOL userHid;
BOOL containerHid;
BOOL userDisabled;
@@ -28,15 +28,15 @@ static uintptr_t singleHandle(uiControl *c)
return (uintptr_t) (s->view);
}
-static void singleSetParent(uiControl *c, uintptr_t parent)
+static void singleSetParent(uiControl *c, uiParent *parent)
{
singleView *s = (singleView *) (c->internal);
NSView *parentView;
s->parent = parent;
- parentView = (NSView *) (s->parent);
+ parentView = (NSView *) uiParentHandle(s->parent);
[parentView addSubview:s->immediate];
- updateParent(s->parent);
+ uiParentUpdate(s->parent);
}
static void singleRemoveParent(uiControl *c)
@@ -47,7 +47,7 @@ static void singleRemoveParent(uiControl *c)
oldparent = s->parent;
s->parent = NULL;
[s->immediate removeFromSuperview];
- updateParent(oldparent);
+ uiParentUpdate(oldparent);
}
// also good for NSBox and NSProgressIndicator
@@ -95,7 +95,8 @@ static void singleShow(uiControl *c)
s->userHid = NO;
if (!s->containerHid) {
[s->immediate setHidden:NO];
- updateParent(s->parent);
+ if (s->parent != NULL)
+ uiParentUpdate(s->parent);
}
}
@@ -105,7 +106,8 @@ static void singleHide(uiControl *c)
s->userHid = YES;
[s->immediate setHidden:YES];
- updateParent(s->parent);
+ if (s->parent != NULL)
+ uiParentUpdate(s->parent);
}
static void singleContainerShow(uiControl *c)
@@ -115,7 +117,8 @@ static void singleContainerShow(uiControl *c)
s->containerHid = NO;
if (!s->userHid) {
[s->immediate setHidden:NO];
- updateParent(s->parent);
+ if (s->parent != NULL)
+ uiParentUpdate(s->parent);
}
}
@@ -125,7 +128,8 @@ static void singleContainerHide(uiControl *c)
s->containerHid = YES;
[s->immediate setHidden:YES];
- updateParent(s->parent);
+ if (s->parent != NULL)
+ uiParentUpdate(s->parent);
}
static void enable(singleView *s)