+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
+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
+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
+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
struct _GtkEntryPrivate
{
gfloat xalign;
+ gint insert_pos;
};
enum {
{
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;
}
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;
{
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)
{
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);