Updated patch. This fixes the color of the selection as well. (I am using ->has_selection to keep track of whether we have focus; this variable is used in the painting code but nowhere else so I am assuming the code that updated it when getting in and out of focus got lost in the GTK2 migration?) BTW, why does e_text_event() have to call e_text_stop_editing()? That causes the primary selection to disappear when the focus is switched to a different window. -- Ettore
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/gal/ChangeLog,v
retrieving revision 1.764
diff -u -p -r1.764 ChangeLog
--- ChangeLog 1 May 2003 18:21:33 -0000 1.764
+++ ChangeLog 2 May 2003 19:09:10 -0000
@@ -1,3 +1,12 @@
+2003-05-02 Ettore Perazzoli <ettore ximian com>
+
+ * gal/e-text/e-text.c (e_text_event): Set has_selection to TRUE
+ for focus in events, and to FALSE for focus out events.
+
+ * gal/e-text/e-entry.c (canvas_focus_in_event): If the
+ gtk-entry-select-on-focus GtkSetting is set, select all the text;
+ this way we behave like GtkEntry.
+
2003-05-01 Mike Kestner <mkestner ximian com>
* gal/e-text/e-completion-callbacks.c (e_completion_callbacks_new):
Index: gal/e-text/e-entry.c
===================================================================
RCS file: /cvs/gnome/gal/gal/e-text/e-entry.c,v
retrieving revision 1.57
diff -u -p -r1.57 e-entry.c
--- gal/e-text/e-entry.c 3 Apr 2003 23:31:22 -0000 1.57
+++ gal/e-text/e-entry.c 2 May 2003 19:09:10 -0000
@@ -230,6 +230,16 @@ canvas_size_request (GtkWidget *widget,
static gint
canvas_focus_in_event (GtkWidget *widget, GdkEventFocus *focus, EEntry *entry)
{
+ gboolean select_on_focus;
+
+ g_object_get (G_OBJECT (gtk_widget_get_settings (widget)),
+ "gtk-entry-select-on-focus",
+ &select_on_focus,
+ NULL);
+
+ if (select_on_focus)
+ e_text_select_all (E_TEXT (entry->item));
+
if (entry->canvas->focused_item != GNOME_CANVAS_ITEM(entry->item))
gnome_canvas_item_grab_focus(GNOME_CANVAS_ITEM(entry->item));
Index: gal/e-text/e-text.c
===================================================================
RCS file: /cvs/gnome/gal/gal/e-text/e-text.c,v
retrieving revision 1.143
diff -u -p -r1.143 e-text.c
--- gal/e-text/e-text.c 8 Apr 2003 17:09:10 -0000 1.143
+++ gal/e-text/e-text.c 2 May 2003 19:09:10 -0000
@@ -2096,6 +2096,7 @@ e_text_event (GnomeCanvasItem *item, Gdk
GdkEventFocus *focus_event;
focus_event = (GdkEventFocus *) event;
if (focus_event->in) {
+ text->has_selection = TRUE;
if (text->im_context) {
if (!text->im_context_signals_registered) {
g_signal_connect (text->im_context, "commit",
@@ -2110,6 +2111,7 @@ e_text_event (GnomeCanvasItem *item, Gdk
start_editing (text);
text->show_cursor = FALSE; /* so we'll redraw and the cursor will be shown */
} else {
+ text->has_selection = FALSE;
if (text->im_context) {
g_signal_handlers_disconnect_matched (text->im_context,
G_SIGNAL_MATCH_DATA,
Attachment:
signature.asc
Description: This is a digitally signed message part