[gnome-calendar] month-view: fix hiding event widgets when removing



commit 0f1a8c93f2033458421375e35568967ff536fb6f
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Sun Nov 19 12:18:32 2017 -0200

    month-view: fix hiding event widgets when removing

 src/views/gcal-month-view.c |   28 +++++++++++++++++++++++++---
 1 files changed, 25 insertions(+), 3 deletions(-)
---
diff --git a/src/views/gcal-month-view.c b/src/views/gcal-month-view.c
index f13de95..a70f714 100644
--- a/src/views/gcal-month-view.c
+++ b/src/views/gcal-month-view.c
@@ -188,6 +188,13 @@ event_activated (GcalMonthView   *self,
 }
 
 static void
+event_widget_visibility_changed_cb (GcalMonthView *self)
+{
+  self->pending_event_allocation = TRUE;
+  gtk_widget_queue_resize (GTK_WIDGET (self));
+}
+
+static void
 setup_child_widget (GcalMonthView *self,
                     GtkWidget     *widget)
 {
@@ -195,8 +202,7 @@ setup_child_widget (GcalMonthView *self,
     gtk_widget_set_parent (widget, GTK_WIDGET (self));
 
   g_signal_connect_swapped (widget, "activate", G_CALLBACK (event_activated), self);
-  g_signal_connect_swapped (widget, "hide", G_CALLBACK (gtk_widget_queue_resize), self);
-  g_signal_connect_swapped (widget, "show", G_CALLBACK (gtk_widget_queue_resize), self);
+  g_signal_connect_swapped (widget, "notify::visible", G_CALLBACK (event_widget_visibility_changed_cb), 
self);
 }
 
 static gboolean
@@ -541,6 +547,9 @@ count_events_per_day (GcalMonthView *self,
       gint last_cell;
       gint i;
 
+      if (!gtk_widget_get_visible (l->data))
+        continue;
+
       event = gcal_event_widget_get_event (l->data);
 
       calculate_event_cells (self, event, &first_cell, &last_cell);
@@ -558,7 +567,12 @@ count_events_per_day (GcalMonthView *self,
       cell = GPOINTER_TO_INT (key) + self->days_delay - 1;
 
       for (l = children; l; l = l->next)
-        events_per_day[cell]++;
+        {
+          if (!gtk_widget_get_visible (l->data))
+            continue;
+
+          events_per_day[cell]++;
+        }
     }
 }
 
@@ -599,6 +613,10 @@ allocate_multiday_events (GcalMonthView *self,
       gint block_idx;
 
       child_widget = (GtkWidget*) l->data;
+
+      if (!gtk_widget_get_visible (child_widget))
+        continue;
+
       event = gcal_event_widget_get_event (l->data);
       child_context = gtk_widget_get_style_context (l->data);
 
@@ -772,6 +790,10 @@ allocate_single_day_events (GcalMonthView *self,
           gint minimum_height;
 
           child_widget = aux->data;
+
+          if (!gtk_widget_get_visible (child_widget))
+            continue;
+
           child_context = gtk_widget_get_style_context (child_widget);
 
           gtk_style_context_get_margin (child_context, gtk_style_context_get_state (child_context), &margin);


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