[gnome-calendar] window: change check button state when a source is enabled
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calendar] window: change check button state when a source is enabled
- Date: Fri, 20 May 2016 14:43:43 +0000 (UTC)
commit 7553d5191f2c46a212946e7ba0ad89c387f9b472
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Fri May 20 11:36:36 2016 -0300
window: change check button state when a source is enabled
Instead of destroying and readding the rows, simply set the
checkbutton's active state when the source is enabled or
disabled.
https://bugzilla.gnome.org/show_bug.cgi?id=766259
src/gcal-window.c | 40 +++++++++++++++++++++++++++++++++-------
1 files changed, 33 insertions(+), 7 deletions(-)
---
diff --git a/src/gcal-window.c b/src/gcal-window.c
index eceabcb..12333c6 100644
--- a/src/gcal-window.c
+++ b/src/gcal-window.c
@@ -211,10 +211,6 @@ static void source_row_activated (GtkListBox *l
GtkListBoxRow *row,
gpointer user_data);
-static void source_changed (GcalWindow *window,
- ESource *source);
-
-
static void on_calendar_toggled (GObject *object,
GParamSpec *pspec,
gpointer user_data);
@@ -799,7 +795,6 @@ add_source (GcalManager *manager,
window = GCAL_WINDOW (user_data);
row = make_row_from_source (GCAL_WINDOW (user_data), source);
- g_object_set_data (G_OBJECT (row), "source", source);
gtk_container_add (GTK_CONTAINER (window->calendar_listbox), row);
}
@@ -857,6 +852,9 @@ make_row_from_source (GcalWindow *window,
gtk_container_add (GTK_CONTAINER (box), checkbox);
gtk_container_add (GTK_CONTAINER (row), box);
+ g_object_set_data (G_OBJECT (row), "check", checkbox);
+ g_object_set_data (G_OBJECT (row), "source", source);
+
gtk_widget_show_all (row);
g_object_unref (pixbuf);
@@ -924,8 +922,36 @@ source_row_activated (GtkListBox *listbox,
}
static void
+source_enabled (GcalWindow *self,
+ ESource *source,
+ gboolean enabled)
+{
+ GList *children, *aux;
+
+ children = gtk_container_get_children (GTK_CONTAINER (self->calendar_listbox));
+
+ for (aux = children; aux != NULL; aux = aux->next)
+ {
+ ESource *child_source = g_object_get_data (G_OBJECT (aux->data), "source");
+
+ if (child_source != NULL && child_source == source)
+ {
+ GtkToggleButton *button = g_object_get_data (G_OBJECT (aux->data), "check");
+
+ g_signal_handlers_block_by_func (button, on_calendar_toggled, self);
+ gtk_toggle_button_set_active (button, enabled);
+ g_signal_handlers_unblock_by_func (button, on_calendar_toggled, self);
+
+ break;
+ }
+ }
+
+ g_list_free (children);
+}
+
+static void
source_changed (GcalWindow *window,
- ESource *source)
+ ESource *source)
{
GList *children, *aux;
@@ -1475,7 +1501,7 @@ gcal_window_set_property (GObject *object,
{
g_signal_connect (self->manager, "source-added", G_CALLBACK (add_source), object);
g_signal_connect (self->manager, "source-removed", G_CALLBACK (remove_source), object);
- g_signal_connect_swapped (self->manager, "source-enabled", G_CALLBACK (source_changed), object);
+ g_signal_connect_swapped (self->manager, "source-enabled", G_CALLBACK (source_enabled), object);
g_signal_connect_swapped (self->manager, "source-changed", G_CALLBACK (source_changed), object);
gcal_edit_dialog_set_manager (GCAL_EDIT_DIALOG (self->edit_dialog), self->manager);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]