Blame keyboard-drawing-redraw.patch
|
|
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 |
|