]> Pileus Git - ~andy/gtk/commitdiff
Make middle-button pasting work as expected inside the entry. (#116789,
authorMatthias Clasen <maclas@gmx.de>
Sun, 11 Jul 2004 03:37:48 +0000 (03:37 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Sun, 11 Jul 2004 03:37:48 +0000 (03:37 +0000)
Sat Jul 10 23:35:13 2004  Matthias Clasen  <maclas@gmx.de>

* gtk/gtkentry.c (paste_received): Make middle-button pasting
work as expected inside the entry.  (#116789, Scott Bronson)

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkentry.c

index 705775b8883247e7583234312d3557b4f7cf13dd..5002b46a4e9fbff937c72a58020219625d81ae11 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Sat Jul 10 23:35:13 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * gtk/gtkentry.c (paste_received): Make middle-button pasting
+       work as expected inside the entry.  (#116789, Scott Bronson)
+
 Sat Jul 10 22:13:53 2004  Matthias Clasen  <maclas@gmx.de>
 
        * gtk/gtktextbuffer.c (gtk_text_buffer_select_range): Update 
index 705775b8883247e7583234312d3557b4f7cf13dd..5002b46a4e9fbff937c72a58020219625d81ae11 100644 (file)
@@ -1,3 +1,8 @@
+Sat Jul 10 23:35:13 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * gtk/gtkentry.c (paste_received): Make middle-button pasting
+       work as expected inside the entry.  (#116789, Scott Bronson)
+
 Sat Jul 10 22:13:53 2004  Matthias Clasen  <maclas@gmx.de>
 
        * gtk/gtktextbuffer.c (gtk_text_buffer_select_range): Update 
index 705775b8883247e7583234312d3557b4f7cf13dd..5002b46a4e9fbff937c72a58020219625d81ae11 100644 (file)
@@ -1,3 +1,8 @@
+Sat Jul 10 23:35:13 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * gtk/gtkentry.c (paste_received): Make middle-button pasting
+       work as expected inside the entry.  (#116789, Scott Bronson)
+
 Sat Jul 10 22:13:53 2004  Matthias Clasen  <maclas@gmx.de>
 
        * gtk/gtktextbuffer.c (gtk_text_buffer_select_range): Update 
index 705775b8883247e7583234312d3557b4f7cf13dd..5002b46a4e9fbff937c72a58020219625d81ae11 100644 (file)
@@ -1,3 +1,8 @@
+Sat Jul 10 23:35:13 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * gtk/gtkentry.c (paste_received): Make middle-button pasting
+       work as expected inside the entry.  (#116789, Scott Bronson)
+
 Sat Jul 10 22:13:53 2004  Matthias Clasen  <maclas@gmx.de>
 
        * gtk/gtktextbuffer.c (gtk_text_buffer_select_range): Update 
index 699101a626f17379b666360e8f6c14dcb9b69c09..c797d846d69061c8ef14e803b2721e717a319006 100644 (file)
@@ -73,6 +73,7 @@ typedef struct _GtkEntryPrivate GtkEntryPrivate;
 struct _GtkEntryPrivate 
 {
   gfloat xalign;
+  gint insert_pos;
 };
 
 enum {
@@ -1369,6 +1370,7 @@ gtk_entry_button_press (GtkWidget      *widget,
 {
   GtkEntry *entry = GTK_ENTRY (widget);
   GtkEditable *editable = GTK_EDITABLE (widget);
+  GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (entry);
   gint tmp_pos;
   gint sel_start, sel_end;
 
@@ -1497,7 +1499,7 @@ gtk_entry_button_press (GtkWidget      *widget,
     }
   else if (event->button == 2 && event->type == GDK_BUTTON_PRESS && entry->editable)
     {
-      gtk_editable_select_region (editable, tmp_pos, tmp_pos);
+      priv->insert_pos = tmp_pos;
       gtk_entry_paste (entry, GDK_SELECTION_PRIMARY);
 
       return TRUE;
@@ -3480,6 +3482,16 @@ paste_received (GtkClipboard *clipboard,
 {
   GtkEntry *entry = GTK_ENTRY (data);
   GtkEditable *editable = GTK_EDITABLE (entry);
+  GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (entry);
+      
+  if (entry->button == 2)
+    {
+      gint pos, start, end;
+      pos = priv->insert_pos;
+      gtk_editable_get_selection_bounds (editable, &start, &end);
+      if (!((start <= pos && pos <= end) || (end <= pos && pos <= start)))
+       gtk_editable_select_region (editable, pos, pos);
+    }
       
   if (text)
     {
@@ -3492,7 +3504,7 @@ paste_received (GtkClipboard *clipboard,
          if (GTK_WIDGET_MAPPED (completion->priv->popup_window))
            _gtk_entry_completion_popdown (completion);
        }
-      
+
       if (gtk_editable_get_selection_bounds (editable, &start, &end))
         gtk_editable_delete_text (editable, start, end);