--- 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);
}