diff options
author | Matthias Clasen <mclasen@redhat.com> | 2018-01-06 17:53:20 -0500 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2018-01-16 14:14:10 -0500 |
commit | 5cb1c606bbfc05b828b78d0c7657855b957c2d8c (patch) | |
tree | 6c1896875f61f8f4612fb1b5d09f490a3a1aa4e0 /gtk/gtkspinbutton.c | |
parent | 4f3065a5e84d7417ab22cd07816a2521e8b10453 (diff) | |
download | gtk+-5cb1c606bbfc05b828b78d0c7657855b957c2d8c.tar.gz |
spin button: Stop using ::focus-out-event
Just use the generic ::event signal.
Diffstat (limited to 'gtk/gtkspinbutton.c')
-rw-r--r-- | gtk/gtkspinbutton.c | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/gtk/gtkspinbutton.c b/gtk/gtkspinbutton.c index 7776c27053..af5784bfd3 100644 --- a/gtk/gtkspinbutton.c +++ b/gtk/gtkspinbutton.c @@ -258,8 +258,8 @@ static void gtk_spin_button_size_allocate (GtkWidget *widget, const GtkAllocation *allocation, int baseline, GtkAllocation *out_clip); -static gint gtk_spin_button_focus_out (GtkWidget *widget, - GdkEventFocus *event); +static gboolean gtk_spin_button_event (GtkWidget *widget, + GdkEvent *event); static void gtk_spin_button_grab_notify (GtkWidget *widget, gboolean was_grabbed); static void gtk_spin_button_state_flags_changed (GtkWidget *widget, @@ -321,7 +321,7 @@ gtk_spin_button_class_init (GtkSpinButtonClass *class) widget_class->measure = gtk_spin_button_measure; widget_class->size_allocate = gtk_spin_button_size_allocate; widget_class->key_release_event = gtk_spin_button_key_release; - widget_class->focus_out_event = gtk_spin_button_focus_out; + widget_class->event = gtk_spin_button_event; widget_class->grab_notify = gtk_spin_button_grab_notify; widget_class->state_flags_changed = gtk_spin_button_state_flags_changed; @@ -1086,16 +1086,27 @@ gtk_spin_button_size_allocate (GtkWidget *widget, gtk_widget_size_allocate (priv->box, allocation, baseline, out_clip); } -static gint -gtk_spin_button_focus_out (GtkWidget *widget, - GdkEventFocus *event) +static gboolean +gtk_spin_button_event (GtkWidget *widget, + GdkEvent *event) { GtkSpinButton *spin_button = GTK_SPIN_BUTTON (widget); - if (gtk_editable_get_editable (GTK_EDITABLE (spin_button->priv->entry))) - gtk_spin_button_update (spin_button); + if (gdk_event_get_event_type (event) == GDK_FOCUS_CHANGE) + { + gboolean focus_in; + + gdk_event_get_focus_in (event, &focus_in); + if (!focus_in) + { + if (gtk_editable_get_editable (GTK_EDITABLE (spin_button->priv->entry))) + gtk_spin_button_update (spin_button); + } + + return GDK_EVENT_PROPAGATE; + } - return GTK_WIDGET_CLASS (gtk_spin_button_parent_class)->focus_out_event (widget, event); + return GDK_EVENT_PROPAGATE; } static void |