diff options
author | Matthias Clasen <maclas@gmx.de> | 2004-03-13 01:54:04 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2004-03-13 01:54:04 +0000 |
commit | fff3885193b8240f4d54324d577276b00b5ca659 (patch) | |
tree | 2372f97cfd68e09ce96329e15bc83bde659e4348 /gtk/gtktextview.c | |
parent | 3186b9e76b393dc0a83ab6beb7271ddd0870045d (diff) | |
download | gtk+-fff3885193b8240f4d54324d577276b00b5ca659.tar.gz |
Fix middle button pasting in the TextView (#81880, reported by Evert
Sat Mar 13 02:55:51 2004 Matthias Clasen <maclas@gmx.de>
Fix middle button pasting in the TextView (#81880, reported
by Evert Verhellen, patch by Paolo Borelli):
* gtk/gtktextview.c (gtk_text_view_button_press_event): Retrieve
the insert mark and move the cursor to it making sure of also
scroll the window if needed.
* gtk/gtktextbuffer.c (pre_paste_prep): Move the insert mark
to the insertion point.
Diffstat (limited to 'gtk/gtktextview.c')
-rw-r--r-- | gtk/gtktextview.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c index df8d877800..a501ecd855 100644 --- a/gtk/gtktextview.c +++ b/gtk/gtktextview.c @@ -3931,6 +3931,7 @@ gtk_text_view_button_press_event (GtkWidget *widget, GdkEventButton *event) else if (event->button == 2) { GtkTextIter iter; + GtkTextMark *mark; gtk_text_layout_get_iter_at_pixel (text_view->layout, &iter, @@ -3938,9 +3939,21 @@ gtk_text_view_button_press_event (GtkWidget *widget, GdkEventButton *event) event->y + text_view->yoffset); gtk_text_buffer_paste_clipboard (get_buffer (text_view), - gtk_widget_get_clipboard (widget, GDK_SELECTION_PRIMARY), - &iter, - text_view->editable); + gtk_widget_get_clipboard (widget, GDK_SELECTION_PRIMARY), + &iter, + text_view->editable); + + mark = gtk_text_buffer_get_mark (get_buffer (text_view), "insert"); + gtk_text_buffer_get_iter_at_mark (get_buffer (text_view), + &iter, + mark); + + gtk_text_buffer_place_cursor (get_buffer (text_view), &iter); + + DV(g_print (G_STRLOC": scrolling onscreen\n")); + gtk_text_view_scroll_mark_onscreen (text_view, + gtk_text_buffer_get_mark (get_buffer (text_view), + "insert")); return TRUE; } else if (event->button == 3) |