]> Pileus Git - ~andy/gtk/commitdiff
Fix middle button pasting in the TextView (#81880, reported by Evert
authorMatthias Clasen <maclas@gmx.de>
Sat, 13 Mar 2004 01:54:04 +0000 (01:54 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Sat, 13 Mar 2004 01:54:04 +0000 (01:54 +0000)
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.

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtktextbuffer.c
gtk/gtktextview.c

index 4a40630ad10e0ee150c7355044f3f35db51cceba..b69d05e491a47d4f7b5b6c97062bf44ab6836f23 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+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.
+
 Sat Mar 13 01:38:55 2004  Matthias Clasen  <maclas@gmx.de>
 
        * gtk/gtkcombobox.c (gtk_combo_box_remove): Add a remove 
index 4a40630ad10e0ee150c7355044f3f35db51cceba..b69d05e491a47d4f7b5b6c97062bf44ab6836f23 100644 (file)
@@ -1,3 +1,15 @@
+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.
+
 Sat Mar 13 01:38:55 2004  Matthias Clasen  <maclas@gmx.de>
 
        * gtk/gtkcombobox.c (gtk_combo_box_remove): Add a remove 
index 4a40630ad10e0ee150c7355044f3f35db51cceba..b69d05e491a47d4f7b5b6c97062bf44ab6836f23 100644 (file)
@@ -1,3 +1,15 @@
+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.
+
 Sat Mar 13 01:38:55 2004  Matthias Clasen  <maclas@gmx.de>
 
        * gtk/gtkcombobox.c (gtk_combo_box_remove): Add a remove 
index 4a40630ad10e0ee150c7355044f3f35db51cceba..b69d05e491a47d4f7b5b6c97062bf44ab6836f23 100644 (file)
@@ -1,3 +1,15 @@
+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.
+
 Sat Mar 13 01:38:55 2004  Matthias Clasen  <maclas@gmx.de>
 
        * gtk/gtkcombobox.c (gtk_combo_box_remove): Add a remove 
index 4a40630ad10e0ee150c7355044f3f35db51cceba..b69d05e491a47d4f7b5b6c97062bf44ab6836f23 100644 (file)
@@ -1,3 +1,15 @@
+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.
+
 Sat Mar 13 01:38:55 2004  Matthias Clasen  <maclas@gmx.de>
 
        * gtk/gtkcombobox.c (gtk_combo_box_remove): Add a remove 
index b327d50f2f2ba2c8c24e88406a32610aff2e3716..0a9f9474510d23b95664160983d7609edcfd8e96 100644 (file)
@@ -2936,6 +2936,8 @@ pre_paste_prep (ClipboardRequest *request_data,
       if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
         *insert_point = start;
     }
+
+  gtk_text_buffer_move_mark_by_name (buffer, "insert", insert_point);
 }
 
 static void
index df8d8778001cc4a80f2c71d8e436db82d1489f3b..a501ecd855169c28c2f711ce4e93508bcd3ad505 100644 (file)
@@ -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)