diff options
Diffstat (limited to 'redo/container_darwin.go')
| -rw-r--r-- | redo/container_darwin.go | 46 |
1 files changed, 41 insertions, 5 deletions
diff --git a/redo/container_darwin.go b/redo/container_darwin.go index 1f8a477..96aca31 100644 --- a/redo/container_darwin.go +++ b/redo/container_darwin.go @@ -10,15 +10,23 @@ import ( import "C" type container struct { + containerbase // TODO rename to id - view C.id - *sizer + view C.id +} + +type sizing struct { + sizingbase + + // for size calculations + // nothing for mac + + // for the actual resizing + neighborAlign C.struct_xalignment } func newContainer(child Control) *container { - c := &container{ - sizer: new(sizer), - } + c := new(container) c.view = C.newContainerView(unsafe.Pointer(c)) c.child = child c.child.setParent(&controlParent{c.view}) @@ -31,3 +39,31 @@ func containerResized(data unsafe.Pointer, width C.intptr_t, height C.intptr_t) // the origin of a view's content area is always (0, 0) c.resize(0, 0, int(width), int(height)) } + +// THIS IS A GUESS. TODO. +// The only indication that this is remotely correct is the Auto Layout Guide implying that 12 pixels is the "Aqua space". +const ( + macXMargin = 12 + macYMargin = 12 + macXPadding = 12 + macYPadding = 12 +) + +func (c *container) beginResize() (d *sizing) { + d = new(sizing) + if spaced { + d.xmargin = macXMargin + d.ymargin = macYMargin + d.xpadding = macXPadding + d.ypadding = macYPadding + } + return d +} + +func (c *container) translateAllocationCoords(allocations []*allocation, winwidth, winheight int) { + for _, a := range allocations { + // winheight - y because (0,0) is the bottom-left corner of the window and not the top-left corner + // (winheight - y) - height because (x, y) is the bottom-left corner of the control and not the top-left + a.y = (winheight - a.y) - a.height + } +} |
