[gnome-contacts] Do row spacing via padding, not CSS



commit b53cd6208bdca75d721320311e4cf4c3f00faedd
Author: Alexander Larsson <alexl redhat com>
Date:   Wed Jan 18 12:09:03 2012 +0100

    Do row spacing via padding, not CSS

 data/gnome-contacts.css               |    4 ---
 src/contacts-cell-renderer-shape.vala |   35 +++++++++++++++++++-------------
 src/contacts-view.vala                |    7 +++++-
 3 files changed, 27 insertions(+), 19 deletions(-)
---
diff --git a/data/gnome-contacts.css b/data/gnome-contacts.css
index 4544ab2..240a7b5 100644
--- a/data/gnome-contacts.css
+++ b/data/gnome-contacts.css
@@ -27,10 +27,6 @@ ContactsListPane GtkEntry.image {
     color: #888a85;
 }
 
-ContactsViewWidget {
-    -GtkTreeView-vertical-separator: 8;
-}
-
 .contact-button:active {
     border-color: #000000;
     border-image: none;
diff --git a/src/contacts-cell-renderer-shape.vala b/src/contacts-cell-renderer-shape.vala
index 4fdb123..42cc7d2 100644
--- a/src/contacts-cell-renderer-shape.vala
+++ b/src/contacts-cell-renderer-shape.vala
@@ -208,26 +208,29 @@ public class Contacts.CellRendererShape : Gtk.CellRenderer {
   private void do_get_size (Widget        widget,
 			    Gdk.Rectangle? cell_area,
 			    Pango.Layout? layout,
-			    out int       x_offset) {
+			    out int       x_offset,
+			    out int       y_offset) {
     Pango.Rectangle rect;
-    int xpad;
+    int xpad, ypad;
 
-    get_padding (out xpad, null);
+    get_padding (out xpad, out ypad);
 
     layout.get_pixel_extents (null, out rect);
 
     if (cell_area != null) {
-      rect.width  = int.min (rect.width, cell_area.width - xpad);
+      rect.width  = int.min (rect.width, cell_area.width - 2 * xpad);
 
       if (widget.get_direction () == TextDirection.RTL)
 	x_offset = cell_area.width - (rect.width + xpad);
       else
-	x_offset = 0;
+	x_offset = xpad;
 
       x_offset = int.max (x_offset, 0);
     } else {
       x_offset = 0;
     }
+
+    y_offset = ypad;
   }
 
   public override void render (Cairo.Context   cr,
@@ -239,6 +242,8 @@ public class Contacts.CellRendererShape : Gtk.CellRenderer {
     Pango.Layout name_layout, presence_layout;
     int name_x_offset = 0;
     int presence_x_offset = 0;
+    int name_y_offset = 0;
+    int presence_y_offset = 0;
     int xpad;
     Pango.Rectangle name_rect;
     Pango.Rectangle presence_rect;
@@ -249,14 +254,14 @@ public class Contacts.CellRendererShape : Gtk.CellRenderer {
     get_padding (out xpad, null);
 
     name_layout = get_name_layout (widget, cell_area, flags);
-    do_get_size (widget, cell_area, name_layout, out name_x_offset);
+    do_get_size (widget, cell_area, name_layout, out name_x_offset, out name_y_offset);
     name_layout.get_pixel_extents (null, out name_rect);
     name_x_offset = name_x_offset - name_rect.x;
 
     presence_layout = null;
     if (name_layout.get_lines_readonly ().length () == 1) {
       presence_layout = get_presence_layout (widget, cell_area, flags);
-      do_get_size (widget, cell_area, presence_layout, out presence_x_offset);
+      do_get_size (widget, cell_area, presence_layout, out presence_x_offset, out presence_y_offset);
       presence_layout.get_pixel_extents (null, out presence_rect);
       presence_x_offset = presence_x_offset - presence_rect.x;
     }
@@ -267,14 +272,14 @@ public class Contacts.CellRendererShape : Gtk.CellRenderer {
     cr.clip ();
 
     Gtk.render_layout (context, cr,
-		       cell_area.x + name_x_offset + xpad,
-		       cell_area.y + 0,
+		       cell_area.x + name_x_offset,
+		       cell_area.y + name_y_offset,
 		       name_layout);
 
     if (presence_layout != null)
       Gtk.render_layout (context, cr,
-			 cell_area.x + presence_x_offset + xpad,
-			 cell_area.y + 48 - 11 - presence_layout.get_baseline () / Pango.SCALE,
+			 cell_area.x + presence_x_offset,
+			 cell_area.y + presence_y_offset + 48 - 11 - presence_layout.get_baseline () / Pango.SCALE,
 			 presence_layout);
 
     cr.restore ();
@@ -294,8 +299,11 @@ public class Contacts.CellRendererShape : Gtk.CellRenderer {
 						       int          width,
 						       out int      minimum_height,
 						       out int      natural_height) {
-    minimum_height = 48;
-    natural_height = 48;
+    int ypad;
+
+    get_padding (null, out ypad);
+    minimum_height = 48 + ypad;
+    natural_height = 48 + ypad;
   }
 
   public override void get_preferred_height (Widget       widget,
@@ -319,4 +327,3 @@ public class Contacts.CellRendererShape : Gtk.CellRenderer {
     }
   }
 }
-
diff --git a/src/contacts-view.vala b/src/contacts-view.vala
index cd2631a..f884d74 100644
--- a/src/contacts-view.vala
+++ b/src/contacts-view.vala
@@ -393,6 +393,8 @@ public class Contacts.ViewWidget : TreeView {
     set_model (view.model);
     set_headers_visible (false);
 
+    var row_padding = 4;
+
     var selection = get_selection ();
     selection.set_mode (SelectionMode.BROWSE);
     selection.set_select_function ( (selection, model, path, path_currently_selected) => {
@@ -405,9 +407,11 @@ public class Contacts.ViewWidget : TreeView {
     selection.changed.connect (contacts_selection_changed);
 
     var column = new TreeViewColumn ();
+    column.set_spacing (4);
 
     var text = new CellRendererText ();
     text.set_alignment (0, 0);
+    text.set_padding (0, row_padding);
     column.pack_start (text, false);
     text.set ("weight", Pango.Weight.BOLD, "scale", 1.28, "width", 24);
     column.set_cell_data_func (text, (column, cell, model, iter) => {
@@ -427,6 +431,7 @@ public class Contacts.ViewWidget : TreeView {
       });
 
     var icon = new CellRendererPixbuf ();
+    icon.set_padding (0, row_padding);
     icon.xalign = 0.0f;
     icon.yalign = 0.0f;
     icon.width = 48 + 2;
@@ -449,7 +454,7 @@ public class Contacts.ViewWidget : TreeView {
       });
 
     shape = new CellRendererShape ();
-    shape.set_padding (4, 0);
+    shape.set_padding (0, row_padding);
 
     Pango.cairo_context_set_shape_renderer (get_pango_context (), shape.render_shape);
 



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