[evolution] Add e_table_sort_info_sorting_remove().



commit ce3e2091c2ff7a581bfa959d71050a059d48ee94
Author: Matthew Barnes <mbarnes redhat com>
Date:   Fri Jun 28 16:35:30 2013 -0400

    Add e_table_sort_info_sorting_remove().

 .../evolution-util/evolution-util-sections.txt     |    1 +
 e-util/e-table-header-item.c                       |   12 ++----------
 e-util/e-table-sort-info.c                         |   19 +++++++++++++++++++
 e-util/e-table-sort-info.h                         |    3 +++
 4 files changed, 25 insertions(+), 10 deletions(-)
---
diff --git a/doc/reference/evolution-util/evolution-util-sections.txt 
b/doc/reference/evolution-util/evolution-util-sections.txt
index d061eb0..c303f74 100644
--- a/doc/reference/evolution-util/evolution-util-sections.txt
+++ b/doc/reference/evolution-util/evolution-util-sections.txt
@@ -3878,6 +3878,7 @@ ETableSortColumn
 e_table_sort_info_grouping_get_nth
 e_table_sort_info_grouping_set_nth
 e_table_sort_info_sorting_get_count
+e_table_sort_info_sorting_remove
 e_table_sort_info_sorting_truncate
 e_table_sort_info_sorting_get_nth
 e_table_sort_info_sorting_set_nth
diff --git a/e-util/e-table-header-item.c b/e-util/e-table-header-item.c
index ddbe7c8..8dcdf06 100644
--- a/e-util/e-table-header-item.c
+++ b/e-util/e-table-header-item.c
@@ -1818,16 +1818,8 @@ ethi_change_sort_state (ETableHeaderItem *ethi,
                                         * This means the user has clicked twice
                                         * already, lets kill sorting of this column now.
                                         */
-                                       gint j;
-
-                                       for (j = i + 1; j < length; j++)
-                                               e_table_sort_info_sorting_set_nth (
-                                                       ethi->sort_info, j - 1,
-                                                       e_table_sort_info_sorting_get_nth (
-                                                               ethi->sort_info, j));
-
-                                       e_table_sort_info_sorting_truncate (
-                                               ethi->sort_info, length - 1);
+                                       e_table_sort_info_sorting_remove (
+                                               ethi->sort_info, i);
                                        length--;
                                        i--;
                                } else {
diff --git a/e-util/e-table-sort-info.c b/e-util/e-table-sort-info.c
index 3f1f928..047e31d 100644
--- a/e-util/e-table-sort-info.c
+++ b/e-util/e-table-sort-info.c
@@ -345,6 +345,25 @@ e_table_sort_info_sorting_get_count (ETableSortInfo *sort_info)
 }
 
 /**
+ * e_table_sort_info_sorting_remove:
+ * @sort_info: an #ETableSortInfo
+ * @n: the index of the element to remove
+ *
+ * Removes the sorting element at the given index.  The following sorting
+ * elements are moved down one place.
+ **/
+void
+e_table_sort_info_sorting_remove (ETableSortInfo *sort_info,
+                                  guint n)
+{
+       g_return_if_fail (E_IS_TABLE_SORT_INFO (sort_info));
+
+       g_array_remove_index (sort_info->priv->sortings, n);
+
+       g_signal_emit (sort_info, signals[SORT_INFO_CHANGED], 0);
+}
+
+/**
  * e_table_sort_info_sorting_truncate:
  * @sort_info: an #ETableSortInfo
  * @length: position where the truncation happens.
diff --git a/e-util/e-table-sort-info.h b/e-util/e-table-sort-info.h
index 1dfd91b..64ed864 100644
--- a/e-util/e-table-sort-info.h
+++ b/e-util/e-table-sort-info.h
@@ -98,6 +98,9 @@ void          e_table_sort_info_grouping_set_nth
 
 guint          e_table_sort_info_sorting_get_count
                                                (ETableSortInfo *sort_info);
+void           e_table_sort_info_sorting_remove
+                                               (ETableSortInfo *sort_info,
+                                                guint n);
 void           e_table_sort_info_sorting_truncate
                                                (ETableSortInfo *sort_info,
                                                 guint length);


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