diff options
author | Nalin Dahyabhai <nalin@src.gnome.org> | 2002-03-17 06:15:45 +0000 |
---|---|---|
committer | Nalin Dahyabhai <nalin@src.gnome.org> | 2002-03-17 06:15:45 +0000 |
commit | ddf32b9455806ea339040d4aae4d556eae05236f (patch) | |
tree | 917266d36226edda4e33c1404abca439b1d2d174 | |
parent | 8b429a79a9eefcacc0f3edd07fe44d94e5242851 (diff) | |
download | vte-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.c | 46 |
1 files changed, 31 insertions, 15 deletions
@@ -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. */ |