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