68ac211
--- control-center-2.15.92/libkbdraw/keyboard-drawing.c.redraw	2006-08-27 22:42:37.000000000 -0400
68ac211
+++ control-center-2.15.92/libkbdraw/keyboard-drawing.c	2006-08-27 22:54:18.000000000 -0400
68ac211
@@ -1176,6 +1176,26 @@
68ac211
 }
68ac211
 
68ac211
 static void
68ac211
+redraw_overlapping_doodads (
68ac211
+  KeyboardDrawing * drawing,
68ac211
+  KeyboardDrawingKey * key)
68ac211
+{
68ac211
+  GList *list;
68ac211
+  gboolean do_draw = FALSE;
68ac211
+
68ac211
+  for (list = drawing->keyboard_items; list; list = list->next)
68ac211
+    {
68ac211
+      KeyboardDrawingItem * item = list->data;
68ac211
+
68ac211
+      if (do_draw && item->type == KEYBOARD_DRAWING_ITEM_TYPE_DOODAD)
68ac211
+	draw_doodad (drawing, (KeyboardDrawingDoodad *) item);
68ac211
+
68ac211
+      if (list->data == key)
68ac211
+        do_draw = TRUE;
68ac211
+    }
68ac211
+}
68ac211
+
68ac211
+static void
68ac211
 draw_keyboard_item (
68ac211
   KeyboardDrawingItem * item,
68ac211
   KeyboardDrawing * drawing)
68ac211
@@ -1340,7 +1360,7 @@
68ac211
   key->pressed = (event->type == GDK_KEY_PRESS);
68ac211
 
68ac211
   draw_key (drawing, key);
68ac211
-
68ac211
+  redraw_overlapping_doodads (drawing, key);
68ac211
   invalidate_key_region (drawing, key);
68ac211
 
68ac211
   return TRUE;
68ac211
@@ -1370,7 +1390,9 @@
68ac211
     if (drawing->keys[i].pressed)
68ac211
       {
68ac211
         drawing->keys[i].pressed = FALSE;
68ac211
+
68ac211
         draw_key (drawing, drawing->keys + i);
68ac211
+	redraw_overlapping_doodads (drawing, drawing->keys + i);
68ac211
         invalidate_key_region (drawing, drawing->keys + i);
68ac211
       }
68ac211