summaryrefslogtreecommitdiff
path: root/gtk/gtkcalendar.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2005-09-30 17:53:19 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2005-09-30 17:53:19 +0000
commitc693b5d6415b338eeccabc9fbb4f6b9cf7423b4c (patch)
treef9092be7176f352662e15fc1f5a2873bb5cc6311 /gtk/gtkcalendar.c
parent0d047a359d25903418a855d1a46e0dfed411a51a (diff)
downloadgtk+-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.c20
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