renderer_comptact_flag = gtk_cell_renderer_pixbuf_new ();
renderer_compact_date = gtk_cell_renderer_text_new ();
+ g_object_set(G_OBJECT(renderer_header),
+ "ellipsize", PANGO_ELLIPSIZE_END,
+ NULL);
g_object_set(G_OBJECT(renderer_compact_date),
"xalign", 1.0,
NULL);
break;
case MODEST_HEADER_VIEW_COLUMN_RECEIVED_DATE:
- column = get_new_column (_("Received"), renderer_compact_date, TRUE,
+ column = get_new_column (_("Received"), renderer_header, TRUE,
TNY_GTK_HEADER_LIST_MODEL_DATE_RECEIVED_TIME_T_COLUMN,
TRUE,
(GtkTreeCellDataFunc)_modest_header_view_date_cell_data,
GINT_TO_POINTER(TRUE));
break;
- case MODEST_HEADER_VIEW_COLUMN_SENT_DATE:
- column = get_new_column (_("Sent"), renderer_compact_date, TRUE,
+ case MODEST_HEADER_VIEW_COLUMN_SENT_DATE:
+ column = get_new_column (_("Sent"), renderer_header, TRUE,
TNY_GTK_HEADER_LIST_MODEL_DATE_SENT_TIME_T_COLUMN,
TRUE,
(GtkTreeCellDataFunc)_modest_header_view_date_cell_data,
GINT_TO_POINTER(FALSE));
break;
+ case MODEST_HEADER_VIEW_COLUMN_COMPACT_RECEIVED_DATE:
+ column = get_new_column (_("Received"), renderer_compact_date, FALSE,
+ TNY_GTK_HEADER_LIST_MODEL_DATE_RECEIVED_TIME_T_COLUMN,
+ TRUE,
+ (GtkTreeCellDataFunc)_modest_header_view_compact_date_cell_data,
+ GINT_TO_POINTER(TRUE));
+ gtk_tree_view_column_set_fixed_width (column, 130);
+ break;
+
+ case MODEST_HEADER_VIEW_COLUMN_COMPACT_SENT_DATE:
+ column = get_new_column (_("Sent"), renderer_compact_date, FALSE,
+ TNY_GTK_HEADER_LIST_MODEL_DATE_SENT_TIME_T_COLUMN,
+ TRUE,
+ (GtkTreeCellDataFunc)_modest_header_view_compact_date_cell_data,
+ GINT_TO_POINTER(FALSE));
+ gtk_tree_view_column_set_fixed_width (column, 130);
+ break;
case MODEST_HEADER_VIEW_COLUMN_SIZE:
column = get_new_column (_("Size"), renderer_header, TRUE,
TNY_GTK_HEADER_LIST_MODEL_MESSAGE_SIZE_COLUMN,
{
GtkTreeSelection *selection;
GtkTreeModel *model;
- GList *selected;
+ GList *selected = NULL;
+ GtkTreePath *selected_path = NULL;
model = gtk_tree_view_get_model (GTK_TREE_VIEW (self));
if (!model)
GtkTreeIter iter;
GtkTreePath *path;
- gtk_tree_model_get_iter_first (model, &iter);
+ /* Return if the model is empty */
+ if (!gtk_tree_model_get_iter_first (model, &iter))
+ return FALSE;
+
path = gtk_tree_model_get_path (model, &iter);
gtk_tree_selection_select_path (selection, path);
gtk_tree_path_free (path);
/* Need to get the all the rows because is selection multiple */
selected = gtk_tree_selection_get_selected_rows (selection, &model);
-
- /* Scroll to first path */
- gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (self),
- (GtkTreePath *) selected->data,
- NULL,
- TRUE,
- 0.5,
- 0.0);
+ selected_path = (GtkTreePath *) selected->data;
+
+ /* Check if we need to scroll */
+ #if GTK_CHECK_VERSION(2, 8, 0) /* TODO: gtk_tree_view_get_visible_range() is only available in GTK+ 2.8 */
+ GtkTreePath *start_path = NULL;
+ GtkTreePath *end_path = NULL;
+ if (gtk_tree_view_get_visible_range (GTK_TREE_VIEW (self),
+ &start_path,
+ &end_path)) {
+
+ if ((gtk_tree_path_compare (start_path, selected_path) != -1) ||
+ (gtk_tree_path_compare (end_path, selected_path) != 1)) {
+
+ /* Scroll to first path */
+ gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (self),
+ selected_path,
+ NULL,
+ TRUE,
+ 0.5,
+ 0.0);
+ }
+ }
+ #endif /* GTK_CHECK_VERSION */
/* Frees */
g_list_foreach (selected, (GFunc) gtk_tree_path_free, NULL);