diff options
| author | Pietro Gagliardi <[email protected]> | 2015-12-11 20:37:59 -0500 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2015-12-11 20:37:59 -0500 |
| commit | f8e3f12ab02b528f2a05a4f713d7af7ea8e44b42 (patch) | |
| tree | 82dedf4d37f0f6d31e88ebb2ca1ce6499dead261 /prev/container_unix.go | |
| parent | e34c561ed5bedeb180437ec165882b98d70d38c1 (diff) | |
LET'S GET THIS FINAL REWRITE EVER STARTED
Diffstat (limited to 'prev/container_unix.go')
| -rw-r--r-- | prev/container_unix.go | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/prev/container_unix.go b/prev/container_unix.go new file mode 100644 index 0000000..c9ed89c --- /dev/null +++ b/prev/container_unix.go @@ -0,0 +1,70 @@ +// +build !windows,!darwin + +// 23 february 2014 + +package ui + +import ( + "unsafe" +) + +// #include "gtk_unix.h" +import "C" + +// TODO avoid direct access to contents? +type container struct { + widget *C.GtkWidget + container *C.GtkContainer + resize func(x int, y int, width int, height int, d *sizing) + margined bool +} + +type sizing struct { + sizingbase + + // for size calculations + // gtk+ needs nothing + + // for the actual resizing + // gtk+ needs nothing +} + +func newContainer() *container { + c := new(container) + c.widget = C.newContainer(unsafe.Pointer(c)) + c.container = (*C.GtkContainer)(unsafe.Pointer(c.widget)) + return c +} + +func (c *container) parent() *controlParent { + return &controlParent{c.container} +} + +//export containerResize +func containerResize(data unsafe.Pointer, aorig *C.GtkAllocation) { + c := (*container)(data) + d := beginResize() + // copy aorig + a := *aorig + if c.margined { + a.x += C.int(gtkXMargin) + a.y += C.int(gtkYMargin) + a.width -= C.int(gtkXMargin) * 2 + a.height -= C.int(gtkYMargin) * 2 + } + c.resize(int(a.x), int(a.y), int(a.width), int(a.height), d) +} + +const ( + gtkXMargin = 12 + gtkYMargin = 12 + gtkXPadding = 12 + gtkYPadding = 6 +) + +func beginResize() (d *sizing) { + d = new(sizing) + d.xpadding = gtkXPadding + d.ypadding = gtkYPadding + return d +} |
