summaryrefslogtreecommitdiff
path: root/gtk/gtktextview.c
diff options
context:
space:
mode:
authorMatthias Clasen <maclas@gmx.de>2004-03-13 01:54:04 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2004-03-13 01:54:04 +0000
commitfff3885193b8240f4d54324d577276b00b5ca659 (patch)
tree2372f97cfd68e09ce96329e15bc83bde659e4348 /gtk/gtktextview.c
parent3186b9e76b393dc0a83ab6beb7271ddd0870045d (diff)
downloadgtk+-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.c19
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)