[evolution] I#463 - Deselect category when it's deleted in the Category editor
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] I#463 - Deselect category when it's deleted in the Category editor
- Date: Thu, 6 Jun 2019 17:08:48 +0000 (UTC)
commit af78ca98d04f44c803f082ff977b0eaf7cae20f2
Author: Milan Crha <mcrha redhat com>
Date: Thu Jun 6 19:10:43 2019 +0200
I#463 - Deselect category when it's deleted in the Category editor
Closes https://gitlab.gnome.org/GNOME/evolution/issues/463
src/e-util/e-categories-editor.c | 33 +++++++++++++++++----------------
src/e-util/e-categories-selector.c | 7 +++++++
2 files changed, 24 insertions(+), 16 deletions(-)
---
diff --git a/src/e-util/e-categories-editor.c b/src/e-util/e-categories-editor.c
index 8391824f08..8251697109 100644
--- a/src/e-util/e-categories-editor.c
+++ b/src/e-util/e-categories-editor.c
@@ -90,16 +90,13 @@ categories_editor_selection_changed_cb (ECategoriesEditor *editor,
}
static void
-category_checked_cb (ECategoriesSelector *selector,
- const gchar *category,
- const gboolean checked,
- ECategoriesEditor *editor)
+categories_editor_update_entry (ECategoriesEditor *editor)
{
GtkEntry *entry;
gchar *categories;
entry = GTK_ENTRY (editor->priv->categories_entry);
- categories = e_categories_selector_get_checked (selector);
+ categories = e_categories_selector_get_checked (editor->priv->categories_list);
gtk_entry_set_text (entry, categories);
@@ -155,6 +152,14 @@ edit_button_clicked_cb (GtkButton *button,
g_free (category);
}
+static void
+delete_button_clicked_cb (GtkButton *button,
+ ECategoriesEditor *editor)
+{
+ e_categories_selector_delete_selection (editor->priv->categories_list);
+ categories_editor_update_entry (editor);
+}
+
static void
categories_editor_set_property (GObject *object,
guint property_id,
@@ -281,9 +286,9 @@ e_categories_editor_init (ECategoriesEditor *editor)
gtk_tree_view_set_headers_visible (
GTK_TREE_VIEW (categories_list), FALSE);
gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (categories_list), TRUE);
- g_signal_connect (
+ g_signal_connect_swapped (
G_OBJECT (categories_list), "category-checked",
- G_CALLBACK (category_checked_cb), editor);
+ G_CALLBACK (categories_editor_update_entry), editor);
hbuttonbox1 = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
g_object_set (
@@ -337,10 +342,10 @@ e_categories_editor_init (ECategoriesEditor *editor)
G_CALLBACK (edit_button_clicked_cb), editor);
editor->priv->delete_button = button_delete;
- g_signal_connect_swapped (
+ g_signal_connect (
editor->priv->delete_button, "clicked",
- G_CALLBACK (e_categories_selector_delete_selection),
- editor->priv->categories_list);
+ G_CALLBACK (delete_button_clicked_cb),
+ editor);
g_signal_connect (
editor->priv->categories_entry, "changed",
@@ -401,14 +406,10 @@ void
e_categories_editor_set_categories (ECategoriesEditor *editor,
const gchar *categories)
{
- ECategoriesSelector *categories_list;
-
g_return_if_fail (E_IS_CATEGORIES_EDITOR (editor));
- categories_list = editor->priv->categories_list;
-
- e_categories_selector_set_checked (categories_list, categories);
- category_checked_cb (categories_list, NULL, FALSE, editor);
+ e_categories_selector_set_checked (editor->priv->categories_list, categories);
+ categories_editor_update_entry (editor);
}
/**
diff --git a/src/e-util/e-categories-selector.c b/src/e-util/e-categories-selector.c
index cb55e8daa8..2d21014e7b 100644
--- a/src/e-util/e-categories-selector.c
+++ b/src/e-util/e-categories-selector.c
@@ -521,6 +521,13 @@ e_categories_selector_delete_selection (ECategoriesSelector *selector)
COLUMN_CATEGORY, &category, -1);
gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
e_categories_remove (category);
+
+ if (g_hash_table_remove (selector->priv->selected_categories, category)) {
+ g_signal_emit (
+ selector, signals[CATEGORY_CHECKED], 0,
+ category, FALSE);
+ }
+
g_free (category);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]