diff options
Diffstat (limited to 'qemu-gtk.c')
-rw-r--r-- | qemu-gtk.c | 37 |
1 files changed, 37 insertions, 0 deletions
@@ -95,10 +95,26 @@ static void vtes_set_colors(struct qemu_window *win) } } +static void vtes_set_blink(struct qemu_window *win) +{ + struct qemu_conn *term; + VteTerminalCursorBlinkMode bl = + win->tty_blink ? VTE_CURSOR_BLINK_ON : VTE_CURSOR_BLINK_OFF; + + if (win->monitor.vte) + vte_terminal_set_cursor_blink_mode(VTE_TERMINAL(win->monitor.vte), bl); + if (win->gdb_vte) + vte_terminal_set_cursor_blink_mode(VTE_TERMINAL(win->gdb_vte), bl); + for (term = win->terms; term != NULL; term = term->next) + vte_terminal_set_cursor_blink_mode(VTE_TERMINAL(term->vte), bl); +} + static void vte_configure(struct qemu_window *win, GtkWidget *vte) { GdkColor fg = {0,0,0,0}; GdkColor bg = {0,0,0,0}; + VteTerminalCursorBlinkMode bl = + win->tty_blink ? VTE_CURSOR_BLINK_ON : VTE_CURSOR_BLINK_OFF; vte_terminal_set_scrollback_lines(VTE_TERMINAL(vte), 4096); vte_terminal_set_backspace_binding(VTE_TERMINAL(vte), @@ -109,6 +125,7 @@ static void vte_configure(struct qemu_window *win, GtkWidget *vte) vte_terminal_set_color_foreground(VTE_TERMINAL(vte), &fg); vte_terminal_set_color_background(VTE_TERMINAL(vte), &bg); vte_terminal_set_font_from_string(VTE_TERMINAL(vte), win->tty_font); + vte_terminal_set_cursor_blink_mode(VTE_TERMINAL(vte), bl); } static void tabs_configure(struct qemu_window *win) @@ -193,6 +210,16 @@ static void menu_cb_scale_display(GtkToggleAction *action, gpointer userdata) config_dirty++; } +static void menu_cb_blink_cursor(GtkToggleAction *action, gpointer userdata) +{ + struct qemu_window *win = userdata; + + win->tty_blink = gtk_toggle_action_get_active(action); + vtes_set_blink(win); + g_key_file_set_boolean(config, "tty", "blink", win->tty_blink); + config_dirty++; +} + static void menu_cb_grab_mouse(GtkToggleAction *action, gpointer userdata) { struct qemu_window *win = userdata; @@ -742,6 +769,10 @@ static const GtkToggleActionEntry tentries[] = { .name = "GrabKbd", .label = "Enable _keyboard grab", .callback = G_CALLBACK(menu_cb_grab_kbd), + },{ + .name = "TerminalBlink", + .label = "Blinking cursor", + .callback = G_CALLBACK(menu_cb_blink_cursor), } }; @@ -758,6 +789,7 @@ static char ui_xml[] = " <menuitem action='TerminalFont'/>" " <menuitem action='TerminalForeground'/>" " <menuitem action='TerminalBackground'/>" +" <menuitem action='TerminalBlink'/>" " </menu>" " <menu action='InputMenu'>" " <menuitem action='GrabMouse'/>" @@ -875,6 +907,8 @@ static struct qemu_window *qemu_create_window(void) win->tty_fg = g_key_file_get_string(config, "tty", "foreground", &err); err = NULL; win->tty_bg = g_key_file_get_string(config, "tty", "background", &err); + err = NULL; + win->tty_blink = g_key_file_get_boolean(config, "tty", "blink", &err); /* config defaults */ if (!win->tty_font) @@ -888,6 +922,9 @@ static struct qemu_window *qemu_create_window(void) item = gtk_ui_manager_get_widget(win->ui, "/MainMenu/ViewMenu/ScaleDisplay"); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), win->vnc_scale); + item = gtk_ui_manager_get_widget(win->ui, "/MainMenu/ViewMenu/TerminalBlink"); + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), win->tty_blink); + item = gtk_ui_manager_get_widget(win->ui, "/MainMenu/InputMenu/GrabMouse"); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), win->vnc_grab_mouse); |