commit 39a796df8d5e1f232aa2a6d5497e147f8170e504
Author: Javier Kohen <[email protected]>
Date:   Sat Apr 18 15:02:06 2009 +0200

    Expand column width manually.

 src/display_tracks.c |   32 ++++++++++++++++++++++++++++++++
 1 files changed, 32 insertions(+), 0 deletions(-)
---
diff --git a/src/display_tracks.c b/src/display_tracks.c
index 54f3f5d..555b31a 100644
--- a/src/display_tracks.c
+++ b/src/display_tracks.c
@@ -32,6 +32,7 @@
 
 #include <gdk/gdkkeysyms.h>
 #include <gtk/gtk.h>
+#include <pango/pango.h>
 #include <limits.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -1104,6 +1105,35 @@ tm_cell_edited (GtkCellRendererText *renderer,
   g_list_free(row_list);
 }
 
+static void update_text_column_layout (GtkTreeViewColumn *tree_column,
+                                      GtkCellRenderer *renderer,
+                                      const gchar* text)
+{
+       GtkWidget* tree_widget;
+       PangoLayout* layout;
+       guint xpad;
+       int col_width;
+       int new_width;
+
+       tree_widget = gtk_tree_view_column_get_tree_view (tree_column);
+       if (!tree_widget) return;
+
+       layout = gtk_widget_create_pango_layout (tree_widget, text);
+
+       /* Expand the width, if necessary. This is done manually
+          because the column is set to fixed width for performance
+          reasons. */
+       col_width = gtk_tree_view_column_get_fixed_width (tree_column);
+       g_object_get (G_OBJECT (renderer), "xpad", &xpad, NULL);
+       pango_layout_get_pixel_size (layout, &new_width, NULL);
+       new_width += xpad;
+       if (col_width < new_width)
+       {
+               gtk_tree_view_column_set_fixed_width (tree_column, new_width);
+       }
+
+       g_object_unref (G_OBJECT (layout));
+}
 
 /* The track data is stored in a separate list (static GList *tracks)
    and only pointers to the corresponding Track structure are placed
@@ -1137,6 +1167,8 @@ static void tm_cell_data_text_func (GtkTreeViewColumn 
*tree_column,
 
        g_object_set (G_OBJECT (renderer), "text", text, NULL);
 
+       update_text_column_layout (tree_column, renderer, text);
+
        g_free (text);
 }
 

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
gtkpod-cvs2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2

Reply via email to