[evolution] Bug #204900 - The sort indication arrows cover up the icons in tab header



commit 7263df12faea202f05f7843a393814ec6083f714
Author: Milan Crha <mcrha redhat com>
Date:   Mon Oct 26 19:23:41 2009 +0100

    Bug #204900 - The sort indication arrows cover up the icons in tab header

 widgets/table/e-table-header-utils.c |   45 ++++++++++++++++++++++-----------
 1 files changed, 30 insertions(+), 15 deletions(-)
---
diff --git a/widgets/table/e-table-header-utils.c b/widgets/table/e-table-header-utils.c
index c87ae40..2f682bb 100644
--- a/widgets/table/e-table-header-utils.c
+++ b/widgets/table/e-table-header-utils.c
@@ -329,6 +329,7 @@ e_table_header_draw_button (GdkDrawable *drawable, ETableCol *ecol,
 	gint xthick, ythick;
 	gint inner_x, inner_y;
 	gint inner_width, inner_height;
+	gint arrow_width = 0, arrow_height = 0;
 	GdkGC *gc;
 	PangoLayout *layout;
 	static gpointer g_label = NULL;
@@ -376,31 +377,20 @@ e_table_header_draw_button (GdkDrawable *drawable, ETableCol *ecol,
 	inner_x = x + xthick + HEADER_PADDING;
 	inner_y = y + ythick + HEADER_PADDING;
 
-	/* Arrow */
+	/* Arrow space */
 
 	switch (arrow) {
 	case E_TABLE_COL_ARROW_NONE:
 		break;
 
 	case E_TABLE_COL_ARROW_UP:
-	case E_TABLE_COL_ARROW_DOWN: {
-		gint arrow_width, arrow_height;
-
+	case E_TABLE_COL_ARROW_DOWN:
 		arrow_width = MIN (MIN_ARROW_SIZE, inner_width);
 		arrow_height = MIN (MIN_ARROW_SIZE, inner_height);
 
-		gtk_paint_arrow (style, drawable, state,
-				 GTK_SHADOW_NONE, NULL, widget, "header",
-				 (arrow == E_TABLE_COL_ARROW_UP) ? GTK_ARROW_UP : GTK_ARROW_DOWN,
-				 TRUE,
-				 inner_x + inner_width - arrow_width,
-				 inner_y + (inner_height - arrow_height) / 2,
-				 arrow_width, arrow_height);
-
-		inner_width -= arrow_width + HEADER_PADDING;
+		if (!ecol->is_pixbuf)
+			inner_width -= arrow_width + HEADER_PADDING;
 		break;
-	}
-
 	default:
 		g_return_if_reached();
 	}
@@ -465,5 +455,30 @@ e_table_header_draw_button (GdkDrawable *drawable, ETableCol *ecol,
 					    layout, ecol->text, inner_width, FALSE);
 	}
 
+	switch (arrow) {
+	case E_TABLE_COL_ARROW_NONE:
+		break;
+
+	case E_TABLE_COL_ARROW_UP:
+	case E_TABLE_COL_ARROW_DOWN: {
+		if (!ecol->is_pixbuf)
+			inner_width += arrow_width + HEADER_PADDING;
+
+		gtk_paint_arrow (style, drawable, state,
+				 GTK_SHADOW_NONE, NULL, widget, "header",
+				 (arrow == E_TABLE_COL_ARROW_UP) ? GTK_ARROW_UP : GTK_ARROW_DOWN,
+				 !ecol->is_pixbuf,
+				 inner_x + inner_width - arrow_width,
+				 inner_y + (inner_height - arrow_height) / 2,
+				 arrow_width, arrow_height);
+
+		inner_width -= arrow_width + HEADER_PADDING;
+		break;
+	}
+
+	default:
+		g_return_if_reached ();
+	}
+
 	g_object_unref (layout);
 }



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