From e429b8d6b82f6caf9301e9917e96d7f823dd90bd Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Sat, 15 Mar 2014 14:27:18 -0400 Subject: Allowed GTK+ windows to be resized smaller than the size request of the controls within. --- gtkcalls_unix.go | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'gtkcalls_unix.go') diff --git a/gtkcalls_unix.go b/gtkcalls_unix.go index f2bce9e..39effe1 100644 --- a/gtkcalls_unix.go +++ b/gtkcalls_unix.go @@ -66,16 +66,30 @@ func gtk_window_get_size(window *gtkWidget) (int, int) { return int(width), int(height) } -func gtk_fixed_new() *gtkWidget { - return fromgtkwidget(C.gtk_fixed_new()) +// this should allow us to resize the window arbitrarily +// thanks to Company in irc.gimp.net/#gtk+ +func gtkNewWindowLayout() *gtkWidget { + layout := C.gtk_layout_new(nil, nil) + scrollarea := C.gtk_scrolled_window_new((*C.GtkAdjustment)(nil), (*C.GtkAdjustment)(nil)) + C.gtk_container_add((*C.GtkContainer)(unsafe.Pointer(scrollarea)), layout) + // never show scrollbars; we're just doing this to allow arbitrary resizes + C.gtk_scrolled_window_set_policy((*C.GtkScrolledWindow)(unsafe.Pointer(scrollarea)), + C.GTK_POLICY_NEVER, C.GTK_POLICY_NEVER) + return fromgtkwidget(scrollarea) } func gtk_container_add(container *gtkWidget, widget *gtkWidget) { C.gtk_container_add(togtkcontainer(container), togtkwidget(widget)) } -func gtk_fixed_move(container *gtkWidget, widget *gtkWidget, x int, y int) { - C.gtk_fixed_move(togtkfixed(container), togtkwidget(widget), +func gtkAddWidgetToLayout(container *gtkWidget, widget *gtkWidget) { + layout := C.gtk_bin_get_child((*C.GtkBin)(unsafe.Pointer(container))) + C.gtk_container_add((*C.GtkContainer)(unsafe.Pointer(layout)), togtkwidget(widget)) +} + +func gtkMoveWidgetInLayout(container *gtkWidget, widget *gtkWidget, x int, y int) { + layout := C.gtk_bin_get_child((*C.GtkBin)(unsafe.Pointer(container))) + C.gtk_layout_move((*C.GtkLayout)(unsafe.Pointer(layout)), togtkwidget(widget), C.gint(x), C.gint(y)) } -- cgit v1.2.3