Make middle-button pasting work as expected inside the entry. (#116789,

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)
This commit is contained in:
Matthias Clasen 2004-07-11 03:37:48 +00:00 committed by Matthias Clasen
parent 37b90cc7d1
commit b1a704b6b8
5 changed files with 34 additions and 2 deletions

View 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> Sat Jul 10 22:13:53 2004 Matthias Clasen <maclas@gmx.de>
* gtk/gtktextbuffer.c (gtk_text_buffer_select_range): Update * gtk/gtktextbuffer.c (gtk_text_buffer_select_range): Update

View 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> Sat Jul 10 22:13:53 2004 Matthias Clasen <maclas@gmx.de>
* gtk/gtktextbuffer.c (gtk_text_buffer_select_range): Update * gtk/gtktextbuffer.c (gtk_text_buffer_select_range): Update

View 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> Sat Jul 10 22:13:53 2004 Matthias Clasen <maclas@gmx.de>
* gtk/gtktextbuffer.c (gtk_text_buffer_select_range): Update * gtk/gtktextbuffer.c (gtk_text_buffer_select_range): Update

View 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> Sat Jul 10 22:13:53 2004 Matthias Clasen <maclas@gmx.de>
* gtk/gtktextbuffer.c (gtk_text_buffer_select_range): Update * gtk/gtktextbuffer.c (gtk_text_buffer_select_range): Update

View File

@ -73,6 +73,7 @@ typedef struct _GtkEntryPrivate GtkEntryPrivate;
struct _GtkEntryPrivate struct _GtkEntryPrivate
{ {
gfloat xalign; gfloat xalign;
gint insert_pos;
}; };
enum { enum {
@ -1369,6 +1370,7 @@ gtk_entry_button_press (GtkWidget *widget,
{ {
GtkEntry *entry = GTK_ENTRY (widget); GtkEntry *entry = GTK_ENTRY (widget);
GtkEditable *editable = GTK_EDITABLE (widget); GtkEditable *editable = GTK_EDITABLE (widget);
GtkEntryPrivate *priv = GTK_ENTRY_GET_PRIVATE (entry);
gint tmp_pos; gint tmp_pos;
gint sel_start, sel_end; 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) 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); gtk_entry_paste (entry, GDK_SELECTION_PRIMARY);
return TRUE; return TRUE;
@ -3480,6 +3482,16 @@ paste_received (GtkClipboard *clipboard,
{ {
GtkEntry *entry = GTK_ENTRY (data); GtkEntry *entry = GTK_ENTRY (data);
GtkEditable *editable = GTK_EDITABLE (entry); 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 (text)
{ {
@ -3492,7 +3504,7 @@ paste_received (GtkClipboard *clipboard,
if (GTK_WIDGET_MAPPED (completion->priv->popup_window)) if (GTK_WIDGET_MAPPED (completion->priv->popup_window))
_gtk_entry_completion_popdown (completion); _gtk_entry_completion_popdown (completion);
} }
if (gtk_editable_get_selection_bounds (editable, &start, &end)) if (gtk_editable_get_selection_bounds (editable, &start, &end))
gtk_editable_delete_text (editable, start, end); gtk_editable_delete_text (editable, start, end);