From f8e3f12ab02b528f2a05a4f713d7af7ea8e44b42 Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Fri, 11 Dec 2015 20:37:59 -0500 Subject: LET'S GET THIS FINAL REWRITE EVER STARTED --- prev/container_unix.go | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 prev/container_unix.go (limited to 'prev/container_unix.go') 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 +} -- cgit v1.2.3