From 14c7267b107e2a58a89be69a46f855742acf16ec Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Fri, 6 Jun 2014 23:31:50 -0400 Subject: [PATCH] Made the preferred size of an Area its size on GTK+ as well. --- prefsize_unix.go | 5 +++++ sysdata_unix.go | 5 +++++ todo.md | 1 - 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/prefsize_unix.go b/prefsize_unix.go index dcdd40c..7ec2e86 100644 --- a/prefsize_unix.go +++ b/prefsize_unix.go @@ -14,8 +14,13 @@ import ( // The difference? Minimum size takes into account things like truncation with ellipses: the minimum size of a label can allot just the ellipses! // So we use the natural size instead. // There is a warning about height-for-width controls, but in my tests this isn't an issue. +// For Areas, we manually save the Area size and use that, just to be safe. func (s *sysData) preferredSize() (width int, height int) { + if s.ctype == c_area { + return s.areawidth, s.areaheight + } + _, _, width, height = gtk_widget_get_preferred_size(s.widget) return width, height } diff --git a/sysdata_unix.go b/sysdata_unix.go index 654b326..21ed72c 100644 --- a/sysdata_unix.go +++ b/sysdata_unix.go @@ -18,6 +18,9 @@ type sysData struct { container *C.GtkWidget // for moving pulse chan bool // for sysData.progressPulse() clickCounter clickCounter // for Areas + // we probably don't need to save these, but we'll do so for sysData.preferredSize() just in case + areawidth int + areaheight int } type classData struct { @@ -358,6 +361,8 @@ func (s *sysData) setAreaSize(width int, height int) { uitask <- func() { c := gtkAreaGetControl(s.widget) gtk_widget_set_size_request(c, width, height) + s.areawidth = width // for sysData.preferredSize() + s.areaheight = height ret <- struct{}{} } <-ret diff --git a/todo.md b/todo.md index 3e18105..acf73fb 100644 --- a/todo.md +++ b/todo.md @@ -28,7 +28,6 @@ UNIX: - resizing seems to be completely and totally broken in the Wayland backend - TODO find out if this is a problem on the GTK+/Wayland side (no initial window-configure event?) - [12:55] pietro10: I meant to mention: 1073): Gtk-WARNING **: Theme parsing error: gtk.css:72:20: Not using units is deprecated. Assuming 'px'. twice. -- make sure the preferred size of Area is its size ALL PLATFORMS: - make sure MouseEvent's documentation has dragging described correctly (both Windows and GTK+ do)