]> asedeno.scripts.mit.edu Git - PuTTY.git/commitdiff
Add conditioned-out diagnostics in columns_compute_width.
authorSimon Tatham <anakin@pobox.com>
Thu, 27 Aug 2015 17:32:41 +0000 (18:32 +0100)
committerSimon Tatham <anakin@pobox.com>
Thu, 27 Aug 2015 17:34:56 +0000 (18:34 +0100)
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"

unix/gtkcols.c

index 8b906215f758ee2d20d6b3ac2585b2f6cb9c014c..93ab91dfb22645bdd95c532d56886c9d82dfb9bf 100644 (file)
@@ -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;
 }