diff options
author | Matthias Clasen <mclasen@redhat.com> | 2005-09-30 17:53:19 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2005-09-30 17:53:19 +0000 |
commit | c693b5d6415b338eeccabc9fbb4f6b9cf7423b4c (patch) | |
tree | f9092be7176f352662e15fc1f5a2873bb5cc6311 /gtk/gtkcalendar.c | |
parent | 0d047a359d25903418a855d1a46e0dfed411a51a (diff) | |
download | gtk+-c693b5d6415b338eeccabc9fbb4f6b9cf7423b4c.tar.gz |
Another attempt to correct the calculations for the first week day. We may
2005-09-30 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkcalendar.c (gtk_calendar_init): Another attempt
to correct the calculations for the first week day. We may
just have to remove this code if too many locales turn out
to have broken data.
Diffstat (limited to 'gtk/gtkcalendar.c')
-rw-r--r-- | gtk/gtkcalendar.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/gtk/gtkcalendar.c b/gtk/gtkcalendar.c index f74a35b8d2..af7e43b0ad 100644 --- a/gtk/gtkcalendar.c +++ b/gtk/gtkcalendar.c @@ -565,7 +565,9 @@ gtk_calendar_init (GtkCalendar *calendar) time_t tmp_time; GtkCalendarPrivate *priv; gchar *year_before; - gchar *week_start, week_startsub = 1; + gchar *langinfo; + gint week_1stday = 0; + gint first_weekday = 1; guint week_origin; priv = calendar->priv = G_TYPE_INSTANCE_GET_PRIVATE (calendar, @@ -652,16 +654,18 @@ gtk_calendar_init (GtkCalendar *calendar) g_warning ("Whoever translated calendar:MY did so wrongly.\n"); #ifdef HAVE__NL_TIME_FIRST_WEEKDAY - week_start = nl_langinfo (_NL_TIME_FIRST_WEEKDAY); - week_origin = GPOINTER_TO_INT (nl_langinfo (_NL_TIME_WEEK_1STDAY)); - if (week_origin == 19971130) - week_startsub = 0; - else if (week_origin == 19971201) - week_startsub = 1; + langinfo = nl_langinfo (_NL_TIME_FIRST_WEEKDAY); + first_weekday = langinfo[0]; + langinfo = nl_langinfo (_NL_TIME_WEEK_1STDAY); + week_origin = GPOINTER_TO_INT (langinfo); + if (week_origin == 19971130) /* Sunday */ + week_1stday = 0; + else if (week_origin == 19971201) /* Monday */ + week_1stday = 1; else g_warning ("Unknown value of _NL_TIME_WEEK_1STDAY.\n"); - priv->week_start = (*((unsigned char *) week_start) - week_startsub) % 7; + priv->week_start = (week_1stday + first_weekday - 1) % 7; #else /* Translate to calendar:week_start:0 if you want Sunday to be the * first day of the week to calendar:week_start:1 if you want Monday |