diff options
Diffstat (limited to 'widgets/misc/e-calendar-item.c')
-rw-r--r-- | widgets/misc/e-calendar-item.c | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/widgets/misc/e-calendar-item.c b/widgets/misc/e-calendar-item.c index a13cbb259d..32b2c62d33 100644 --- a/widgets/misc/e-calendar-item.c +++ b/widgets/misc/e-calendar-item.c @@ -792,11 +792,18 @@ e_calendar_item_update (GnomeCanvasItem *item, width -= xthickness * 2; height -= ythickness * 2; - rows = height / calitem->min_month_height; + if (calitem->min_month_height == 0) + rows = 1; + else + rows = height / calitem->min_month_height; rows = MAX (rows, calitem->min_rows); if (calitem->max_rows > 0) rows = MIN (rows, calitem->max_rows); - cols = width / calitem->min_month_width; + + if (calitem->min_month_width == 0) + cols = 1; + else + cols = width / calitem->min_month_width; cols = MAX (cols, calitem->min_cols); if (calitem->max_cols > 0) cols = MIN (cols, calitem->max_cols); @@ -1504,17 +1511,21 @@ e_calendar_item_recalc_sizes (ECalendarItem *calitem) canvas_item = GNOME_CANVAS_ITEM (calitem); style = GTK_WIDGET (canvas_item->canvas)->style; + if (!style) + return; + font = calitem->font; if (!font) font = style->font; wkfont = calitem->week_number_font; if (!wkfont) wkfont = font; - char_height = font->ascent + font->descent; g_return_if_fail (font != NULL); g_return_if_fail (wkfont != NULL); + char_height = font->ascent + font->descent; + /* If both fonts are the same, just return. */ if (font != calitem->old_font || wkfont != calitem->old_week_number_font) { @@ -2261,8 +2272,11 @@ e_calendar_item_add_days_to_selection (ECalendarItem *calitem, } -/* Returns the range of dates actually shown. Months are 0 to 11. */ -void +/* Gets the range of dates actually shown. Months are 0 to 11. + This also includes the last days of the previous month and the first days + of the following month, which are normally shown in gray. + It returns FALSE if no dates are currently shown. */ +gboolean e_calendar_item_get_date_range (ECalendarItem *calitem, gint *start_year, gint *start_month, @@ -2273,6 +2287,9 @@ e_calendar_item_get_date_range (ECalendarItem *calitem, { gint first_day_offset, days_in_month, days_in_prev_month; + if (calitem->rows == 0 || calitem->cols == 0) + return FALSE; + /* Calculate the first day shown. This will be one of the greyed-out days before the first full month begins. */ e_calendar_item_get_month_info (calitem, 0, 0, &first_day_offset, @@ -2296,6 +2313,8 @@ e_calendar_item_get_date_range (ECalendarItem *calitem, *end_month %= 12; *end_day = E_CALENDAR_ROWS_PER_MONTH * E_CALENDAR_COLS_PER_MONTH - first_day_offset - days_in_month; + + return TRUE; } |