--- tilda.glade.orig 2013-12-13 19:58:24.000000000 +0400
+++ tilda.glade 2014-01-29 17:21:22.000000000 +0400
@@ -460,6 +460,22 @@
5
True
+
+
+ 2
+ 0
+ 1
+ 1
+
+
+
+
+
+ 4
+ 5
+ 4
+ 4
+
+
+
+
+
+
+ 1
+ 2
+ 4
+ 5
+ 4
+ 4
+
--- src/configsys.c.orig 2013-12-13 19:58:24.000000000 +0400
+++ src/configsys.c 2014-01-29 17:25:03.000000000 +0400
@@ -104,6 +104,9 @@
CFG_INT("text_red", 0xffff, CFGF_NONE),
CFG_INT("text_green", 0xffff, CFGF_NONE),
CFG_INT("text_blue", 0xffff, CFGF_NONE),
+ CFG_INT("cursor_red", 0xffff, CFGF_NONE),
+ CFG_INT("cursor_green", 0xffff, CFGF_NONE),
+ CFG_INT("cursor_blue", 0xffff, CFGF_NONE),
/* booleans */
CFG_BOOL("scroll_background", TRUE, CFGF_NONE),
@@ -117,6 +120,7 @@
CFG_BOOL("notaskbar", TRUE, CFGF_NONE),
CFG_BOOL("bold", TRUE, CFGF_NONE),
CFG_BOOL("blinks", TRUE, CFGF_NONE),
+ CFG_BOOL("underline", FALSE, CFGF_NONE),
CFG_BOOL("scroll_on_key", TRUE, CFGF_NONE),
CFG_BOOL("bell", FALSE, CFGF_NONE),
CFG_BOOL("run_command", FALSE, CFGF_NONE),
--- src/tilda_terminal.c.orig 2013-12-13 19:58:24.000000000 +0400
+++ src/tilda_terminal.c 2014-01-29 17:24:06.000000000 +0400
@@ -517,7 +517,7 @@
DEBUG_ASSERT (tt != NULL);
gdouble transparency_level = 0.0;
- GdkColor fg, bg /*, tint, highlight, cursor, black */;
+ GdkColor fg, cc, bg /* , , tint, highlight, black */;
gchar* word_chars;
gint i;
@@ -530,6 +530,10 @@
fg.green = config_getint ("text_green");
fg.blue = config_getint ("text_blue");
+ cc.red = config_getint ("cursor_red");
+ cc.green = config_getint ("cursor_green");
+ cc.blue = config_getint ("cursor_blue");
+
for(i = 0;i < TERMINAL_PALETTE_SIZE; i++)
{
current_palette[i].pixel = 0;
@@ -547,6 +551,9 @@
/** Cursor **/
vte_terminal_set_cursor_blink_mode (VTE_TERMINAL(tt->vte_term),
(config_getbool ("blinks"))?VTE_CURSOR_BLINK_ON:VTE_CURSOR_BLINK_OFF);
+ vte_terminal_set_color_cursor (VTE_TERMINAL(tt->vte_term), &cc);
+ vte_terminal_set_cursor_shape (VTE_TERMINAL(tt->vte_term),
+ (config_getbool ("underline"))?VTE_CURSOR_SHAPE_UNDERLINE:VTE_CURSOR_SHAPE_BLOCK);
/** Scrolling **/
vte_terminal_set_scroll_background (VTE_TERMINAL(tt->vte_term), config_getbool ("scroll_background"));
--- src/wizard.c.orig 2013-12-13 19:58:24.000000000 +0400
+++ src/wizard.c 2014-01-29 20:02:53.000000000 +0400
@@ -754,6 +754,21 @@
}
}
+static void check_cursor_underline_toggled_cb (GtkWidget *w)
+{
+ const gboolean status = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(w));
+ gint i;
+ tilda_term *tt;
+
+ config_setbool ("underline", status);
+
+ for (i=0; iterms); i++) {
+ tt = g_list_nth_data (tw->terms, i);
+ vte_terminal_set_cursor_shape (VTE_TERMINAL(tt->vte_term),
+ (status)?VTE_CURSOR_SHAPE_UNDERLINE:VTE_CURSOR_SHAPE_BLOCK);
+ }
+}
+
static void check_enable_antialiasing_toggled_cb (GtkWidget *w)
{
const gboolean status = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(w));
@@ -1306,9 +1321,11 @@
const gint scheme = gtk_combo_box_get_active (GTK_COMBO_BOX(w));
const GtkWidget *colorbutton_text =
GTK_WIDGET (gtk_builder_get_object (xml, "colorbutton_text"));
+ const GtkWidget *colorbutton_cursor =
+ GTK_WIDGET (gtk_builder_get_object (xml, "colorbutton_cursor"));
const GtkWidget *colorbutton_back =
GTK_WIDGET (gtk_builder_get_object (xml, "colorbutton_back"));
- GdkColor gdk_text, gdk_back;
+ GdkColor gdk_text, gdk_cursor, gdk_back;
tilda_term *tt;
gint i;
gboolean nochange = FALSE;
@@ -1341,16 +1358,21 @@
config_setint ("back_red", gdk_back.red);
config_setint ("back_green", gdk_back.green);
config_setint ("back_blue", gdk_back.blue);
+ config_setint ("cursor_red", gdk_cursor.red);
+ config_setint ("cursor_green", gdk_cursor.green);
+ config_setint ("cursor_blue", gdk_cursor.blue);
config_setint ("text_red", gdk_text.red);
config_setint ("text_green", gdk_text.green);
config_setint ("text_blue", gdk_text.blue);
gtk_color_button_set_color (GTK_COLOR_BUTTON(colorbutton_text), &gdk_text);
+ gtk_color_button_set_color (GTK_COLOR_BUTTON(colorbutton_cursor), &gdk_cursor);
gtk_color_button_set_color (GTK_COLOR_BUTTON(colorbutton_back), &gdk_back);
for (i=0; iterms); i++) {
tt = g_list_nth_data (tw->terms, i);
vte_terminal_set_color_foreground (VTE_TERMINAL(tt->vte_term), &gdk_text);
+ vte_terminal_set_color_cursor (VTE_TERMINAL(tt->vte_term), &gdk_cursor);
vte_terminal_set_color_background (VTE_TERMINAL(tt->vte_term), &gdk_back);
}
}
@@ -1381,6 +1403,31 @@
}
}
+static void colorbutton_cursor_color_set_cb (GtkWidget *w)
+{
+ const GtkWidget *combo_colorschemes =
+ GTK_WIDGET (gtk_builder_get_object (xml, "combo_colorschemes"));
+
+ gint i;
+ tilda_term *tt;
+ GdkColor gdk_cursor_color;
+
+ /* The user just changed colors manually, so set the scheme to "Custom" */
+ gtk_combo_box_set_active (GTK_COMBO_BOX(combo_colorschemes), 0);
+ config_setint ("scheme", 0);
+
+ /* Now get the color that was set, save it, then set it */
+ gtk_color_button_get_color (GTK_COLOR_BUTTON(w), &gdk_cursor_color);
+ config_setint ("cursor_red", gdk_cursor_color.red);
+ config_setint ("cursor_green", gdk_cursor_color.green);
+ config_setint ("cursor_blue", gdk_cursor_color.blue);
+
+ for (i=0; iterms); i++) {
+ tt = g_list_nth_data (tw->terms, i);
+ vte_terminal_set_color_cursor (VTE_TERMINAL(tt->vte_term), &gdk_cursor_color);
+ }
+}
+
static void colorbutton_back_color_set_cb (GtkWidget *w)
{
const GtkWidget *combo_colorschemes =
@@ -1411,7 +1458,7 @@
{
gint i, j;
tilda_term *tt;
- GdkColor fg, bg;
+ GdkColor fg, cc, bg;
GtkWidget *color_button;
i = gtk_combo_box_get_active (GTK_COMBO_BOX(w));
@@ -1421,6 +1468,9 @@
GTK_WIDGET (gtk_builder_get_object (xml, "colorbutton_text"));
gtk_color_button_get_color (GTK_COLOR_BUTTON(color_button), &fg);
color_button =
+ GTK_WIDGET (gtk_builder_get_object (xml, "colorbutton_cursor"));
+ gtk_color_button_get_color (GTK_COLOR_BUTTON(color_button), &cc);
+ color_button =
GTK_WIDGET (gtk_builder_get_object (xml, "colorbutton_back"));
gtk_color_button_get_color (GTK_COLOR_BUTTON(color_button), &bg);
@@ -1431,6 +1481,7 @@
tt = g_list_nth_data (tw->terms, j);
vte_terminal_set_colors (VTE_TERMINAL(tt->vte_term), &fg, &bg, current_palette, TERMINAL_PALETTE_SIZE);
+ vte_terminal_set_color_cursor (VTE_TERMINAL(tt->vte_term), &cc);
}
for (j=0; j