diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/fe-gtk/xtext.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/fe-gtk/xtext.c b/src/fe-gtk/xtext.c index e0ea0c37..121f35a3 100644 --- a/src/fe-gtk/xtext.c +++ b/src/fe-gtk/xtext.c @@ -1878,9 +1878,6 @@ gtk_xtext_unselect (GtkXText *xtext) { xtext_buffer *buf = xtext->buffer; - if (buf->last_ent_start == NULL) - return; - xtext->skip_border_fills = TRUE; xtext->skip_stamp = TRUE; @@ -1901,7 +1898,6 @@ gtk_xtext_unselect (GtkXText *xtext) xtext->skip_border_fills = FALSE; xtext->skip_stamp = FALSE; - xtext->mark_stamp = FALSE; xtext->buffer->last_ent_start = NULL; xtext->buffer->last_ent_end = NULL; @@ -1963,8 +1959,11 @@ gtk_xtext_button_release (GtkWidget * widget, GdkEventButton * event) } if (xtext->select_start_x == event->x && - xtext->select_start_y == event->y) + xtext->select_start_y == event->y && + xtext->buffer->last_ent_start) { + gtk_xtext_unselect (xtext); + xtext->mark_stamp = FALSE; return FALSE; } @@ -2015,7 +2014,7 @@ gtk_xtext_button_press (GtkWidget * widget, GdkEventButton * event) { if (len == 0) return FALSE; - gtk_xtext_unselect(xtext); + gtk_xtext_selection_clear (xtext->buffer); ent->mark_start = offset; ent->mark_end = offset + len; gtk_xtext_selection_render (xtext, ent, ent); @@ -2030,7 +2029,7 @@ gtk_xtext_button_press (GtkWidget * widget, GdkEventButton * event) gtk_xtext_check_mark_stamp (xtext, mask); if (gtk_xtext_get_word (xtext, x, y, &ent, 0, 0, 0)) { - gtk_xtext_unselect (xtext); + gtk_xtext_selection_clear (xtext->buffer); ent->mark_start = 0; ent->mark_end = ent->str_len; gtk_xtext_selection_render (xtext, ent, ent); @@ -2053,7 +2052,6 @@ gtk_xtext_button_press (GtkWidget * widget, GdkEventButton * event) } } - gtk_xtext_unselect (xtext); xtext->button_down = TRUE; xtext->select_start_x = x; xtext->select_start_y = y; @@ -2067,7 +2065,10 @@ gtk_xtext_button_press (GtkWidget * widget, GdkEventButton * event) static gboolean gtk_xtext_selection_kill (GtkXText *xtext, GdkEventSelection *event) { - gtk_xtext_unselect (xtext); +#ifndef WIN32 + if (xtext->buffer->last_ent_start) + gtk_xtext_unselect (xtext); +#endif return TRUE; } |