summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNalin Dahyabhai <nalin@src.gnome.org>2002-03-17 06:15:45 +0000
committerNalin Dahyabhai <nalin@src.gnome.org>2002-03-17 06:15:45 +0000
commitddf32b9455806ea339040d4aae4d556eae05236f (patch)
tree917266d36226edda4e33c1404abca439b1d2d174
parent8b429a79a9eefcacc0f3edd07fe44d94e5242851 (diff)
downloadvte-ddf32b9455806ea339040d4aae4d556eae05236f.tar.gz
Draw the cursor as an unfilled box when the widget does not have focus.
* src/vte.c: Draw the cursor as an unfilled box when the widget does not have focus.
-rw-r--r--src/vte.c46
1 files changed, 31 insertions, 15 deletions
diff --git a/src/vte.c b/src/vte.c
index 1c085e64..599c33a8 100644
--- a/src/vte.c
+++ b/src/vte.c
@@ -4142,6 +4142,7 @@ vte_terminal_focus_in(GtkWidget *widget, GdkEventFocus *event)
{
g_return_val_if_fail(GTK_IS_WIDGET(widget), 0);
GTK_WIDGET_SET_FLAGS(widget, GTK_HAS_FOCUS);
+ vte_invalidate_cursor(VTE_TERMINAL(widget));
return TRUE;
}
@@ -4150,6 +4151,7 @@ vte_terminal_focus_out(GtkWidget *widget, GdkEventFocus *event)
{
g_return_val_if_fail(GTK_WIDGET(widget), 0);
GTK_WIDGET_UNSET_FLAGS(widget, GTK_HAS_FOCUS);
+ vte_invalidate_cursor(VTE_TERMINAL(widget));
return TRUE;
}
@@ -5376,24 +5378,38 @@ vte_terminal_paint(GtkWidget *widget, GdkRectangle *area)
drow = screen->cursor_current.row;
row = drow - delta;
cell = vte_terminal_find_charcell(terminal, drow, col);
- /* Draw the character. */
+ /* Draw the cursor. */
delta = screen->scroll_delta;
- vte_terminal_draw_char(terminal, screen, cell,
- col,
- drow,
- col * width - x_offs,
- row * height - y_offs,
- width, height,
- ascent, descent,
- display,
- gdrawable, drawable,
- gcolormap, colormap,
- gvisual, visual,
- gc,
+ if (GTK_WIDGET_HAS_FOCUS(GTK_WIDGET(terminal))) {
+ /* Draw it as a character, possibly reversed. */
+ vte_terminal_draw_char(terminal, screen, cell,
+ col,
+ drow,
+ col * width - x_offs,
+ row * height - y_offs,
+ width, height,
+ ascent, descent,
+ display,
+ gdrawable, drawable,
+ gcolormap, colormap,
+ gvisual, visual,
+ gc,
#ifdef HAVE_XFT
- ftdraw,
+ ftdraw,
#endif
- blink);
+ blink);
+ } else {
+ /* Draw it as a rectangle. */
+ guint fore;
+ fore = cell ? cell->fore : VTE_DEF_FG;
+ XSetForeground(display, gc,
+ terminal->pvt->palette[fore].pixel);
+ XDrawRectangle(display, drawable, gc,
+ col * width - x_offs,
+ row * height - y_offs,
+ width - 1,
+ height - 1);
+ }
}
/* Done with various structures. */