46 lines
1.3 KiB
Diff
46 lines
1.3 KiB
Diff
--- libgnomekbd-2.17.2/libgnomekbd/gkbd-keyboard-drawing.c.redraw 2007-01-24 15:29:25.000000000 -0500
|
|
+++ libgnomekbd-2.17.2/libgnomekbd/gkbd-keyboard-drawing.c 2007-01-24 15:30:03.000000000 -0500
|
|
@@ -1121,6 +1121,25 @@
|
|
}
|
|
|
|
static void
|
|
+redraw_overlapping_doodads (GkbdKeyboardDrawing * drawing,
|
|
+ GkbdKeyboardDrawingKey * key)
|
|
+{
|
|
+ GList *list;
|
|
+ gboolean do_draw = FALSE;
|
|
+
|
|
+ for (list = drawing->keyboard_items; list; list = list->next)
|
|
+ {
|
|
+ GkbdKeyboardDrawingItem * item = list->data;
|
|
+
|
|
+ if (do_draw && item->type == GKBD_KEYBOARD_DRAWING_ITEM_TYPE_DOODAD)
|
|
+ draw_doodad (drawing, (GkbdKeyboardDrawingDoodad *) item);
|
|
+
|
|
+ if (list->data == key)
|
|
+ do_draw = TRUE;
|
|
+ }
|
|
+}
|
|
+
|
|
+static void
|
|
draw_keyboard_item (GkbdKeyboardDrawingItem * item,
|
|
GkbdKeyboardDrawing * drawing)
|
|
{
|
|
@@ -1279,7 +1298,7 @@
|
|
key->pressed = (event->type == GDK_KEY_PRESS);
|
|
|
|
draw_key (drawing, key);
|
|
-
|
|
+ redraw_overlapping_doodads (drawing, key);
|
|
invalidate_key_region (drawing, key);
|
|
|
|
return TRUE;
|
|
@@ -1309,6 +1328,7 @@
|
|
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);
|
|
}
|
|
|