[evolution] Bug 739030 - Prevailing space in Subject column



commit 275275dacc7a81ce65905b7e28489c8f8b3acd12
Author: Milan Crha <mcrha redhat com>
Date:   Tue Nov 11 15:19:40 2014 +0100

    Bug 739030 - Prevailing space in Subject column

 e-util/e-cell-tree.c |   29 ++++++++++++++++++++++++-----
 e-util/e-cell-tree.h |    4 ++++
 e-util/e-tree.c      |   50 ++++++++++++++++++++++++++++++++++++++++++++++++++
 e-util/e-tree.h      |    4 ++++
 mail/message-list.c  |    2 ++
 5 files changed, 84 insertions(+), 5 deletions(-)
---
diff --git a/e-util/e-cell-tree.c b/e-util/e-cell-tree.c
index ce470ea..507d850 100644
--- a/e-util/e-cell-tree.c
+++ b/e-util/e-cell-tree.c
@@ -109,10 +109,12 @@ offset_of_node (ETableModel *table_model,
 {
        ETreeModel *tree_model = e_cell_tree_get_tree_model (table_model, row);
        ETreePath path = e_cell_tree_get_node (table_model, row);
+       gint visible_depth;
 
-       if (visible_depth_of_node (table_model, row) >= 0 ||
+       visible_depth = visible_depth_of_node (table_model, row);
+       if (visible_depth >= 0 ||
            e_tree_model_node_is_expandable (tree_model, path)) {
-               return (visible_depth_of_node (table_model, row) + 1) * INDENT_AMOUNT;
+               return (MAX (visible_depth, 1)) * INDENT_AMOUNT;
        } else {
                return 0;
        }
@@ -280,12 +282,12 @@ ect_draw (ECellView *ecell_view,
        ETreeTableAdapter *tree_table_adapter = e_cell_tree_get_tree_table_adapter 
(ecell_view->e_table_model, row);
        ETreePath node;
        GdkRectangle rect;
-       gint offset, subcell_offset;
+       gint offset, subcell_offset = 0;
 
        cairo_save (cr);
 
        /* only draw the tree effects if we're the active sort */
-       if (/* XXX */ TRUE) {
+       if (E_CELL_TREE (tree_view->cell_view.ecell)->grouped_view) {
                tree_view->prelit = FALSE;
 
                node = e_cell_tree_get_node (ecell_view->e_table_model, row);
@@ -668,7 +670,7 @@ ect_print (ECellView *ecell_view,
 
        cairo_save (cr);
 
-       if (/* XXX only if we're the active sort */ TRUE) {
+       if (E_CELL_TREE (tree_view->cell_view.ecell)->grouped_view) {
                ETreeModel *tree_model = e_cell_tree_get_tree_model (ecell_view->e_table_model, row);
                ETreeTableAdapter *tree_table_adapter = e_cell_tree_get_tree_table_adapter 
(ecell_view->e_table_model, row);
                ETreePath node = e_cell_tree_get_node (ecell_view->e_table_model, row);
@@ -831,6 +833,7 @@ e_cell_tree_construct (ECellTree *ect,
                g_object_ref_sink (subcell);
 
        ect->draw_lines = draw_lines;
+       ect->grouped_view = TRUE;
 }
 
 /**
@@ -858,3 +861,19 @@ e_cell_tree_new (gboolean draw_lines,
        return (ECell *) ect;
 }
 
+gboolean
+e_cell_tree_get_grouped_view (ECellTree *cell_tree)
+{
+       g_return_val_if_fail (E_IS_CELL_TREE (cell_tree), FALSE);
+
+       return cell_tree->grouped_view;
+}
+
+void
+e_cell_tree_set_grouped_view (ECellTree *cell_tree,
+                             gboolean grouped_view)
+{
+       g_return_if_fail (E_IS_CELL_TREE (cell_tree));
+
+       cell_tree->grouped_view = grouped_view;
+}
diff --git a/e-util/e-cell-tree.h b/e-util/e-cell-tree.h
index cd0c13d..14490a2 100644
--- a/e-util/e-cell-tree.h
+++ b/e-util/e-cell-tree.h
@@ -66,6 +66,7 @@ struct _ECellTree {
        ECell parent;
 
        gboolean draw_lines;
+       gboolean grouped_view;
 
        ECell *subcell;
 };
@@ -82,6 +83,9 @@ void          e_cell_tree_construct           (ECellTree *ect,
                                                 ECell *subcell);
 ECellView *    e_cell_tree_view_get_subcell_view
                                                (ECellView *ect);
+gboolean       e_cell_tree_get_grouped_view    (ECellTree *cell_tree);
+void           e_cell_tree_set_grouped_view    (ECellTree *cell_tree,
+                                                gboolean grouped_view);
 
 G_END_DECLS
 
diff --git a/e-util/e-tree.c b/e-util/e-tree.c
index ce50221..9d10773 100644
--- a/e-util/e-tree.c
+++ b/e-util/e-tree.c
@@ -36,6 +36,7 @@
 #include "e-canvas-background.h"
 #include "e-canvas-utils.h"
 #include "e-canvas.h"
+#include "e-cell-tree.h"
 #include "e-table-column-specification.h"
 #include "e-table-header-item.h"
 #include "e-table-header.h"
@@ -205,6 +206,8 @@ struct _ETreePrivate {
        guint state_change_freeze;
 
        gboolean is_dragging;
+
+       gboolean grouped_view;
 };
 
 static guint signals[LAST_SIGNAL];
@@ -659,6 +662,7 @@ e_tree_init (ETree *tree)
        tree->priv->state_change_freeze = 0;
 
        tree->priv->is_dragging = FALSE;
+       tree->priv->grouped_view = TRUE;
 }
 
 /* Grab_focus handler for the ETree */
@@ -1528,6 +1532,28 @@ et_table_rows_deleted (ETableModel *table_model,
 }
 
 static void
+e_tree_update_full_header_grouped_view (ETree *tree)
+{
+       gint ii, sz;
+
+       g_return_if_fail (E_IS_TREE (tree));
+
+       if (!tree->priv->full_header)
+               return;
+
+       sz = e_table_header_count (tree->priv->full_header);
+       for (ii = 0; ii < sz; ii++) {
+               ETableCol *col;
+
+               col = e_table_header_get_column (tree->priv->full_header, ii);
+               if (!col || !E_IS_CELL_TREE (col->ecell))
+                       continue;
+
+               e_cell_tree_set_grouped_view (E_CELL_TREE (col->ecell), tree->priv->grouped_view);
+       }
+}
+
+static void
 et_connect_to_etta (ETree *tree)
 {
        tree->priv->table_model_change_id = g_signal_connect (
@@ -1571,6 +1597,8 @@ et_real_construct (ETree *tree,
        tree->priv->cursor_mode = specification->cursor_mode;
        tree->priv->full_header = e_table_spec_to_full_header (specification, ete);
 
+       e_tree_update_full_header_grouped_view (tree);
+
        connect_header (tree, state);
 
        tree->priv->horizontal_scrolling = specification->horizontal_scrolling;
@@ -3279,3 +3307,25 @@ e_tree_is_editing (ETree *tree)
 
        return tree->priv->item && e_table_item_is_editing (E_TABLE_ITEM (tree->priv->item));
 }
+
+void
+e_tree_set_grouped_view (ETree *tree,
+                        gboolean grouped_view)
+{
+       g_return_if_fail (E_IS_TREE (tree));
+
+       if ((tree->priv->grouped_view ? 1 : 0) == (grouped_view ? 1 : 0))
+               return;
+
+       tree->priv->grouped_view = grouped_view;
+
+       e_tree_update_full_header_grouped_view (tree);
+}
+
+gboolean
+e_tree_get_grouped_view (ETree *tree)
+{
+       g_return_val_if_fail (E_IS_TREE (tree), FALSE);
+
+       return tree->priv->grouped_view;
+}
diff --git a/e-util/e-tree.h b/e-util/e-tree.h
index a3fa7ae..a10ea95 100644
--- a/e-util/e-tree.h
+++ b/e-util/e-tree.h
@@ -253,6 +253,10 @@ void               e_tree_thaw_state_change        (ETree *tree);
 
 gboolean       e_tree_is_editing               (ETree *tree);
 
+gboolean       e_tree_get_grouped_view         (ETree *tree);
+void           e_tree_set_grouped_view         (ETree *tree,
+                                                gboolean grouped_view);
+
 G_END_DECLS
 
 #endif /* E_TREE_H */
diff --git a/mail/message-list.c b/mail/message-list.c
index a47e6ff..4455fad 100644
--- a/mail/message-list.c
+++ b/mail/message-list.c
@@ -3421,6 +3421,7 @@ message_list_init (MessageList *message_list)
 
        message_list->priv->mail_settings = g_settings_new ("org.gnome.evolution.mail");
        message_list->priv->re_prefixes = NULL;
+       message_list->priv->group_by_threads = TRUE;
 }
 
 static void
@@ -4536,6 +4537,7 @@ message_list_set_group_by_threads (MessageList *message_list,
                return;
 
        message_list->priv->group_by_threads = group_by_threads;
+       e_tree_set_grouped_view (E_TREE (message_list), group_by_threads);
 
        g_object_notify (G_OBJECT (message_list), "group-by-threads");
 


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