ECalendarItem: Settings loaded only when being shown

The late settings (through an extension) load could cause busy loop
when changing the date to today with the side panel hidden (from
the previous run of the Evolution).
This commit is contained in:
Milan Crha
2020-09-30 13:55:28 +02:00
parent c525c255a9
commit 01f9746b0c
+36 -14
View File
@@ -45,6 +45,7 @@ static const gint e_calendar_item_days_in_month[12] = {
e_calendar_item_days_in_month[month] + (((month) == 1 \
&& ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0))) ? 1 : 0)
static void e_calendar_item_constructed (GObject *object);
static void e_calendar_item_dispose (GObject *object);
static void e_calendar_item_get_property (GObject *object,
guint property_id,
@@ -265,6 +266,7 @@ e_calendar_item_class_init (ECalendarItemClass *class)
GnomeCanvasItemClass *item_class;
object_class = G_OBJECT_CLASS (class);
object_class->constructed = e_calendar_item_constructed;
object_class->dispose = e_calendar_item_dispose;
object_class->get_property = e_calendar_item_get_property;
object_class->set_property = e_calendar_item_set_property;
@@ -646,6 +648,16 @@ e_calendar_item_init (ECalendarItem *calitem)
calitem->signal_emission_idle_id = 0;
}
static void
e_calendar_item_constructed (GObject *object)
{
ECalendarItem *calitem = E_CALENDAR_ITEM (object);
G_OBJECT_CLASS (e_calendar_item_parent_class)->constructed (object);
e_extensible_load_extensions (E_EXTENSIBLE (calitem));
}
static void
e_calendar_item_dispose (GObject *object)
{
@@ -805,28 +817,32 @@ e_calendar_item_set_property (GObject *object,
dvalue = g_value_get_double (value);
if (calitem->x1 != dvalue) {
calitem->x1 = dvalue;
gnome_canvas_item_request_update (item);
if (item->canvas)
gnome_canvas_item_request_update (item);
}
return;
case PROP_Y1:
dvalue = g_value_get_double (value);
if (calitem->y1 != dvalue) {
calitem->y1 = dvalue;
gnome_canvas_item_request_update (item);
if (item->canvas)
gnome_canvas_item_request_update (item);
}
return;
case PROP_X2:
dvalue = g_value_get_double (value);
if (calitem->x2 != dvalue) {
calitem->x2 = dvalue;
gnome_canvas_item_request_update (item);
if (item->canvas)
gnome_canvas_item_request_update (item);
}
return;
case PROP_Y2:
dvalue = g_value_get_double (value);
if (calitem->y2 != dvalue) {
calitem->y2 = dvalue;
gnome_canvas_item_request_update (item);
if (item->canvas)
gnome_canvas_item_request_update (item);
}
return;
case PROP_FONT_DESC:
@@ -834,21 +850,24 @@ e_calendar_item_set_property (GObject *object,
if (calitem->font_desc)
pango_font_description_free (calitem->font_desc);
calitem->font_desc = pango_font_description_copy (font_desc);
gnome_canvas_item_request_update (item);
if (item->canvas)
gnome_canvas_item_request_update (item);
return;
case PROP_WEEK_NUMBER_FONT_DESC:
font_desc = g_value_get_boxed (value);
if (calitem->week_number_font_desc)
pango_font_description_free (calitem->week_number_font_desc);
calitem->week_number_font_desc = pango_font_description_copy (font_desc);
gnome_canvas_item_request_update (item);
if (item->canvas)
gnome_canvas_item_request_update (item);
return;
case PROP_MINIMUM_ROWS:
ivalue = g_value_get_int (value);
ivalue = MAX (1, ivalue);
if (calitem->min_rows != ivalue) {
calitem->min_rows = ivalue;
gnome_canvas_item_request_update (item);
if (item->canvas)
gnome_canvas_item_request_update (item);
}
return;
case PROP_MINIMUM_COLUMNS:
@@ -856,35 +875,40 @@ e_calendar_item_set_property (GObject *object,
ivalue = MAX (1, ivalue);
if (calitem->min_cols != ivalue) {
calitem->min_cols = ivalue;
gnome_canvas_item_request_update (item);
if (item->canvas)
gnome_canvas_item_request_update (item);
}
return;
case PROP_MAXIMUM_ROWS:
ivalue = g_value_get_int (value);
if (calitem->max_rows != ivalue) {
calitem->max_rows = ivalue;
gnome_canvas_item_request_update (item);
if (item->canvas)
gnome_canvas_item_request_update (item);
}
return;
case PROP_MAXIMUM_COLUMNS:
ivalue = g_value_get_int (value);
if (calitem->max_cols != ivalue) {
calitem->max_cols = ivalue;
gnome_canvas_item_request_update (item);
if (item->canvas)
gnome_canvas_item_request_update (item);
}
return;
case PROP_WEEK_START_DAY:
ivalue = g_value_get_enum (value);
if (calitem->week_start_day != ivalue) {
calitem->week_start_day = ivalue;
gnome_canvas_item_request_update (item);
if (item->canvas)
gnome_canvas_item_request_update (item);
}
return;
case PROP_SHOW_WEEK_NUMBERS:
bvalue = g_value_get_boolean (value);
if (calitem->show_week_numbers != bvalue) {
calitem->show_week_numbers = bvalue;
gnome_canvas_item_request_update (item);
if (item->canvas)
gnome_canvas_item_request_update (item);
}
return;
case PROP_KEEP_WDAYS_ON_WEEKNUM_CLICK:
@@ -926,8 +950,6 @@ e_calendar_item_realize (GnomeCanvasItem *item)
calitem = E_CALENDAR_ITEM (item);
e_calendar_item_style_updated (GTK_WIDGET (item->canvas), calitem);
e_extensible_load_extensions (E_EXTENSIBLE (calitem));
}
static void