[gnome-music] view: Fix inconsistent allocations of cell renderers



commit 3924cacbf725cb70e226a41d4de98c05ddf4bbb8
Author: Carlos Garnacho <carlosg gnome org>
Date:   Wed Mar 4 23:58:47 2015 +0100

    view: Fix inconsistent allocations of cell renderers
    
    GtkTreeView doesn't handle as nicely size allocation between cells in
    a column than between columns themselves. Distributing these in several
    columns makes it easier to ensure the size stays consistent across tree
    validation, which results in no jumping rows afterwards.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=745648

 gnomemusic/view.py |   38 ++++++++++++++++++++++++++++----------
 1 files changed, 28 insertions(+), 10 deletions(-)
---
diff --git a/gnomemusic/view.py b/gnomemusic/view.py
index cdb3475..b9e5bca 100644
--- a/gnomemusic/view.py
+++ b/gnomemusic/view.py
@@ -463,9 +463,14 @@ class Songs(ViewContainer):
             height=48,
             ellipsize=Pango.EllipsizeMode.END
         )
-        list_widget.add_renderer(title_renderer,
-                                 self._on_list_widget_title_render, None)
-        cols[0].add_attribute(title_renderer, 'text', 2)
+
+        col = Gtk.TreeViewColumn()
+        col.set_expand(True)
+        col.pack_start(title_renderer, True)
+        col.set_cell_data_func(title_renderer,
+                               self._on_list_widget_title_render, None)
+        col.add_attribute(title_renderer, 'text', 2)
+        list_widget.insert_column(col, 1)
 
         self.star_handler._add_star_renderers(list_widget, cols)
 
@@ -474,25 +479,38 @@ class Songs(ViewContainer):
             xalign=1.0
         )
         duration_renderer.add_class('dim-label')
-        list_widget.add_renderer(duration_renderer,
-                                 self._on_list_widget_duration_render, None)
+
+        col = Gtk.TreeViewColumn()
+        col.pack_start(duration_renderer, False)
+        col.set_cell_data_func(duration_renderer,
+                               self._on_list_widget_duration_render, None)
+        list_widget.append_column(col)
 
         artist_renderer = Gd.StyledTextRenderer(
             xpad=32,
+            width=100,
             ellipsize=Pango.EllipsizeMode.END
         )
         artist_renderer.add_class('dim-label')
-        list_widget.add_renderer(artist_renderer,
-                                 self._on_list_widget_artist_render, None)
-        cols[0].add_attribute(artist_renderer, 'text', 3)
+
+        col = Gtk.TreeViewColumn()
+        col.set_expand(True)
+        col.pack_start(artist_renderer, True)
+        col.set_cell_data_func(artist_renderer,
+                               self._on_list_widget_artist_render, None)
+        col.add_attribute(artist_renderer, 'text', 3)
+        list_widget.append_column(col)
 
         type_renderer = Gd.StyledTextRenderer(
             xpad=32,
+            width=100,
             ellipsize=Pango.EllipsizeMode.END
         )
         type_renderer.add_class('dim-label')
-        list_widget.add_renderer(type_renderer,
-                                 self._on_list_widget_type_render, None)
+
+        col.pack_end(type_renderer, True)
+        col.set_cell_data_func(type_renderer,
+                               self._on_list_widget_type_render, None)
 
     def _on_list_widget_title_render(self, col, cell, model, _iter, data):
         pass


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]