# HG changeset patch # User Sadrul Habib Chowdhury # Date 1175237274 0 # Node ID 05d347516fcd08fd9bc2a11a0f40a99b74222d16 # Parent 790d1d003825db3893ef3e12151e0937eaf520d0 Fine tune column hiding. diff -r 790d1d003825 -r 05d347516fcd finch/libgnt/gnttree.c --- a/finch/libgnt/gnttree.c Fri Mar 30 05:32:40 2007 +0000 +++ b/finch/libgnt/gnttree.c Fri Mar 30 06:47:54 2007 +0000 @@ -223,6 +223,10 @@ GList *iter; int i; gboolean notfirst = FALSE; + int lastvisible = tree->ncol; + + while (lastvisible && tree->columns[lastvisible].invisible) + lastvisible--; for (i = 0, iter = row->columns; i < tree->ncol && iter; i++, iter = iter->next) { @@ -231,10 +235,16 @@ int len = gnt_util_onscreen_width(col->text, NULL); int fl = 0; gboolean cut = FALSE; + int width; if (tree->columns[i].invisible) continue; + if (i == lastvisible) + width = GNT_WIDGET(tree)->priv.width - gnt_util_onscreen_width(string->str, NULL); + else + width = tree->columns[i].width; + if (i == 0) { if (row->choice) @@ -269,8 +279,8 @@ notfirst = TRUE; - if (len > tree->columns[i].width) { - len = tree->columns[i].width - 1; + if (len > width) { + len = width - 1; cut = TRUE; } text = gnt_util_onscreen_width_to_pointer(col->text, len - fl, NULL); @@ -284,7 +294,7 @@ } if (len < tree->columns[i].width && iter->next) - g_string_append_printf(string, "%*s", tree->columns[i].width - len, ""); + g_string_append_printf(string, "%*s", width - len, ""); } return g_string_free(string, FALSE); }