Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/gtk+/ChangeLog,v
retrieving revision 1.5367.2.325
diff -u -2 -r1.5367.2.325 ChangeLog
--- ChangeLog	5 Dec 2004 02:21:06 -0000	1.5367.2.325
+++ ChangeLog	21 Dec 2004 00:02:37 -0000
@@ -1,2 +1,8 @@
+2004-12-21  Tor Lillqvist  <tml@iki.fi>
+
+	* gdk/win32/gdkkeys-win32.c (gdk_keymap_translate_keyboard_state):
+	Do take CapsLock into consideration for keys with just dead
+	accents on them. (#161814)
+
 2004-12-05  Tor Lillqvist  <tml@iki.fi>
 
Index: gdk/win32/gdkkeys-win32.c
===================================================================
RCS file: /cvs/gnome/gtk+/gdk/win32/gdkkeys-win32.c,v
retrieving revision 1.21.2.1
diff -u -2 -r1.21.2.1 gdkkeys-win32.c
--- gdk/win32/gdkkeys-win32.c	7 Aug 2004 23:31:52 -0000	1.21.2.1
+++ gdk/win32/gdkkeys-win32.c	21 Dec 2004 00:02:37 -0000
@@ -46,4 +46,6 @@
 static guint *keysym_tab = NULL;
 
+#define IS_DEAD_KEY(x) ((x) >= GDK_dead_grave && (x) <= GDK_dead_belowdot)
+
 #ifdef G_ENABLE_DEBUG
 static void
@@ -672,5 +674,7 @@
   if ((state & GDK_SHIFT_MASK) &&
       (state & GDK_LOCK_MASK) &&
-      keyvals[group*2 + 1] == gdk_keyval_to_upper (keyvals[group*2 + 0]))
+      (keyvals[group*2 + 1] == gdk_keyval_to_upper (keyvals[group*2 + 0]) ||
+       (IS_DEAD_KEY (keyvals[group*2 + 1]) &&
+	IS_DEAD_KEY (keyvals[group*2 + 0]))))
     /* Shift disables caps lock */
     shift_level = 0;		
@@ -732,4 +736,7 @@
       if (upper != tmp_keyval)
 	tmp_keyval = upper;
+      else if (IS_DEAD_KEY (keyvals[group*2 + 0]) &&
+	       IS_DEAD_KEY (keyvals[group*2 + 1]))
+	tmp_keyval = keyvals[group*2 + 1];
     }
 
