aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--e-util/ChangeLog6
-rw-r--r--e-util/e-canvas.c4
-rw-r--r--widgets/misc/e-canvas.c4
3 files changed, 14 insertions, 0 deletions
diff --git a/e-util/ChangeLog b/e-util/ChangeLog
index f70ca5ec1c..e01604b3b7 100644
--- a/e-util/ChangeLog
+++ b/e-util/ChangeLog
@@ -1,3 +1,9 @@
+2000-05-02 Damon Chaplin <damon@helixcode.com>
+
+ * e-canvas.c (e_canvas_focus_in):
+ (e_canvas_focus_out): set and reset the GTK_HAS_FOCUS flag. We now get
+ focus_out events correctly.
+
2000-05-02 NotZed <NotZed@HelixCode.com>
* e-sexp.c (e_sexp_finalise): Free the parse tree if we have one.
diff --git a/e-util/e-canvas.c b/e-util/e-canvas.c
index ad0819e3dd..8ca7d0f9b1 100644
--- a/e-util/e-canvas.c
+++ b/e-util/e-canvas.c
@@ -313,6 +313,8 @@ e_canvas_focus_in (GtkWidget *widget, GdkEventFocus *event)
canvas = GNOME_CANVAS (widget);
+ GTK_WIDGET_SET_FLAGS (widget, GTK_HAS_FOCUS);
+
if (canvas->focused_item)
return emit_event (canvas, (GdkEvent *) event);
else
@@ -327,6 +329,8 @@ e_canvas_focus_out (GtkWidget *widget, GdkEventFocus *event)
canvas = GNOME_CANVAS (widget);
+ GTK_WIDGET_UNSET_FLAGS (widget, GTK_HAS_FOCUS);
+
if (canvas->focused_item)
return emit_event (canvas, (GdkEvent *) event);
else
diff --git a/widgets/misc/e-canvas.c b/widgets/misc/e-canvas.c
index ad0819e3dd..8ca7d0f9b1 100644
--- a/widgets/misc/e-canvas.c
+++ b/widgets/misc/e-canvas.c
@@ -313,6 +313,8 @@ e_canvas_focus_in (GtkWidget *widget, GdkEventFocus *event)
canvas = GNOME_CANVAS (widget);
+ GTK_WIDGET_SET_FLAGS (widget, GTK_HAS_FOCUS);
+
if (canvas->focused_item)
return emit_event (canvas, (GdkEvent *) event);
else
@@ -327,6 +329,8 @@ e_canvas_focus_out (GtkWidget *widget, GdkEventFocus *event)
canvas = GNOME_CANVAS (widget);
+ GTK_WIDGET_UNSET_FLAGS (widget, GTK_HAS_FOCUS);
+
if (canvas->focused_item)
return emit_event (canvas, (GdkEvent *) event);
else