console focus support
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Sun, 1 Aug 2004 21:48:30 +0000 (21:48 +0000)
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Sun, 1 Aug 2004 21:48:30 +0000 (21:48 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1032 c046a42c-6fe2-441c-8c8c-71466251a162

console.c

index b688e93..171d2a9 100644 (file)
--- a/console.c
+++ b/console.c
@@ -599,6 +599,21 @@ static void console_chr_add_read_handler(CharDriverState *chr,
     s->fd_opaque = opaque;
 }
 
+static void console_send_event(CharDriverState *chr, int event)
+{
+    TextConsole *s = chr->opaque;
+    int i;
+
+    if (event == CHR_EVENT_FOCUS) {
+        for(i = 0; i < nb_consoles; i++) {
+            if (consoles[i] == s) {
+                console_select(i);
+                break;
+            }
+        }
+    }
+}
+
 /* called when an ascii key is pressed */
 void kbd_put_keysym(int keysym)
 {
@@ -689,6 +704,8 @@ CharDriverState *text_console_init(DisplayState *ds)
     chr->opaque = s;
     chr->chr_write = console_puts;
     chr->chr_add_read_handler = console_chr_add_read_handler;
+    chr->chr_send_event = console_send_event;
+
     if (!color_inited) {
         color_inited = 1;
         for(i = 0; i < 8; i++) {