From: Simon Tatham Date: Thu, 27 Aug 2015 17:32:41 +0000 (+0100) Subject: Add conditioned-out diagnostics in columns_compute_width. X-Git-Tag: 0.68~413 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=76612e772d7712a22b8030363019b24e33be9c3d;p=PuTTY.git Add conditioned-out diagnostics in columns_compute_width. These are a slightly cleaned-up version of the diagnostics I was using to debug the layout problems in the GTK3 config box the other day. In particular, if the box comes out far too wide - as I've just found out that it also does when I compile the current state of the code against OS X GTK3 - these diagnostics should provide enough information to figure out which control is the limiting factor. To enable: make CPPFLAGS="-DCOLUMNS_WIDTH_DIAGNOSTICS" --- diff --git a/unix/gtkcols.c b/unix/gtkcols.c index 8b906215..93ab91df 100644 --- a/unix/gtkcols.c +++ b/unix/gtkcols.c @@ -588,6 +588,10 @@ static gint columns_compute_width(Columns *cols, widget_dim_fn_t get_width) const gint *percentages; static const gint onecol[] = { 100 }; +#ifdef COLUMNS_WIDTH_DIAGNOSTICS + printf("compute_width(%p): start\n", cols); +#endif + retwidth = 0; ncols = 1; @@ -611,6 +615,23 @@ static gint columns_compute_width(Columns *cols, widget_dim_fn_t get_width) childwidth = get_width(child); colspan = child->colspan ? child->colspan : ncols-child->colstart; +#ifdef COLUMNS_WIDTH_DIAGNOSTICS + printf("compute_width(%p): ", cols); + if (GTK_IS_LABEL(child->widget)) + printf("label %p '%s' wrap=%s: ", child->widget, + gtk_label_get_text(GTK_LABEL(child->widget)), + (gtk_label_get_line_wrap(GTK_LABEL(child->widget)) + ? "TRUE" : "FALSE")); + else + printf("widget %p: ", child->widget); + { + gint min, nat; + gtk_widget_get_preferred_width(child->widget, &min, &nat); + printf("minwidth=%d natwidth=%d ", min, nat); + } + printf("thiswidth=%d span=%d\n", childwidth, colspan); +#endif + /* * To compute width: we know that childwidth + cols->spacing * needs to equal a certain percentage of the full width of @@ -635,6 +656,10 @@ static gint columns_compute_width(Columns *cols, widget_dim_fn_t get_width) * before dividing by percent. */ fullwid = (thiswid * 100 + percent - 1) / percent; +#ifdef COLUMNS_WIDTH_DIAGNOSTICS + printf("compute_width(%p): after %p, thiswid=%d fullwid=%d\n", + cols, child->widget, thiswid, fullwid); +#endif /* * The above calculation assumes every widget gets @@ -649,6 +674,10 @@ static gint columns_compute_width(Columns *cols, widget_dim_fn_t get_width) retwidth += 2*gtk_container_get_border_width(GTK_CONTAINER(cols)); +#ifdef COLUMNS_WIDTH_DIAGNOSTICS + printf("compute_width(%p): done, returning %d\n", cols, retwidth); +#endif + return retwidth; }