summaryrefslogtreecommitdiff
path: root/redo/container_darwin.go
diff options
context:
space:
mode:
Diffstat (limited to 'redo/container_darwin.go')
-rw-r--r--redo/container_darwin.go46
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
+ }
+}