aboutsummaryrefslogtreecommitdiffstats
path: root/qemu-gtk.c
diff options
context:
space:
mode:
Diffstat (limited to 'qemu-gtk.c')
-rw-r--r--qemu-gtk.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/qemu-gtk.c b/qemu-gtk.c
index a092c3c..ae2a1ae 100644
--- a/qemu-gtk.c
+++ b/qemu-gtk.c
@@ -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);