-
- old_flags = calendar->display_flags;
-
- if (GTK_WIDGET_REALIZED (widget))
- {
- if ((flags ^ calendar->display_flags) & GTK_CALENDAR_NO_MONTH_CHANGE)
- {
- resize ++;
- if (! (flags & GTK_CALENDAR_NO_MONTH_CHANGE)
- && (priv->header_win))
- {
- calendar->display_flags &= ~GTK_CALENDAR_NO_MONTH_CHANGE;
- calendar_realize_arrows (calendar);
- }
- else
- {
- for (i = 0; i < 4; i++)
- {
- if (priv->arrow_win[i])
- {
- gdk_window_set_user_data (priv->arrow_win[i],
- NULL);
- gdk_window_destroy (priv->arrow_win[i]);
- priv->arrow_win[i] = NULL;
- }
- }
- }
- }
-
- if ((flags ^ calendar->display_flags) & GTK_CALENDAR_SHOW_HEADING)
- {
- resize++;
-
- if (flags & GTK_CALENDAR_SHOW_HEADING)
- {
- calendar->display_flags |= GTK_CALENDAR_SHOW_HEADING;
- calendar_realize_header (calendar);
- }
- else
- {
- for (i = 0; i < 4; i++)
- {
- if (priv->arrow_win[i])
- {
- gdk_window_set_user_data (priv->arrow_win[i],
- NULL);
- gdk_window_destroy (priv->arrow_win[i]);
- priv->arrow_win[i] = NULL;
- }
- }
- gdk_window_set_user_data (priv->header_win, NULL);
- gdk_window_destroy (priv->header_win);
- priv->header_win = NULL;
- }
- }
-
-
- if ((flags ^ calendar->display_flags) & GTK_CALENDAR_SHOW_DAY_NAMES)
- {
- resize++;
-
- if (flags & GTK_CALENDAR_SHOW_DAY_NAMES)
- {
- calendar->display_flags |= GTK_CALENDAR_SHOW_DAY_NAMES;
- calendar_realize_day_names (calendar);
- }
- else
- {
- gdk_window_set_user_data (priv->day_name_win, NULL);
- gdk_window_destroy (priv->day_name_win);
- priv->day_name_win = NULL;
- }
- }
-
- if ((flags ^ calendar->display_flags) & GTK_CALENDAR_SHOW_WEEK_NUMBERS)
- {
- resize++;
-
- if (flags & GTK_CALENDAR_SHOW_WEEK_NUMBERS)
- {
- calendar->display_flags |= GTK_CALENDAR_SHOW_WEEK_NUMBERS;
- calendar_realize_week_numbers (calendar);
- }
- else
- {
- gdk_window_set_user_data (priv->week_win, NULL);
- gdk_window_destroy (priv->week_win);
- priv->week_win = NULL;
- }
- }
-
- if ((flags ^ calendar->display_flags) & GTK_CALENDAR_WEEK_START_MONDAY)
- g_warning ("GTK_CALENDAR_WEEK_START_MONDAY is ignored; the first day of the week is determined from the locale");
-
- calendar->display_flags = flags;
+
+ old_flags = priv->display_flags;
+
+ if (gtk_widget_get_realized (widget))
+ {
+ if ((flags ^ priv->display_flags) & GTK_CALENDAR_NO_MONTH_CHANGE)
+ {
+ resize ++;
+ if (! (flags & GTK_CALENDAR_NO_MONTH_CHANGE)
+ && (priv->display_flags & GTK_CALENDAR_SHOW_HEADING))
+ {
+ priv->display_flags &= ~GTK_CALENDAR_NO_MONTH_CHANGE;
+ calendar_realize_arrows (calendar);
+ if (gtk_widget_get_mapped (widget))
+ calendar_map_arrows (calendar);
+ }
+ else
+ {
+ calendar_unrealize_arrows (calendar);
+ }
+ }
+
+ if ((flags ^ priv->display_flags) & GTK_CALENDAR_SHOW_HEADING)
+ {
+ resize++;
+
+ if (flags & GTK_CALENDAR_SHOW_HEADING)
+ {
+ priv->display_flags |= GTK_CALENDAR_SHOW_HEADING;
+ calendar_realize_arrows (calendar);
+ if (gtk_widget_get_mapped (widget))
+ calendar_map_arrows (calendar);
+ }
+ else
+ {
+ calendar_unrealize_arrows (calendar);
+ }
+ }
+
+ if ((flags ^ priv->display_flags) & GTK_CALENDAR_SHOW_DAY_NAMES)
+ {
+ resize++;
+
+ if (flags & GTK_CALENDAR_SHOW_DAY_NAMES)
+ priv->display_flags |= GTK_CALENDAR_SHOW_DAY_NAMES;
+ }
+
+ if ((flags ^ priv->display_flags) & GTK_CALENDAR_SHOW_WEEK_NUMBERS)
+ {
+ resize++;
+
+ if (flags & GTK_CALENDAR_SHOW_WEEK_NUMBERS)
+ priv->display_flags |= GTK_CALENDAR_SHOW_WEEK_NUMBERS;
+ }
+
+ if ((flags ^ priv->display_flags) & GTK_CALENDAR_SHOW_DETAILS)
+ resize++;
+
+ priv->display_flags = flags;