[gtk+/wip/matthiasc/kill-event-signals: 108/126] spin cell renderer: Stop using ::focus-out-event



commit 8c92cc04652baae26fdd1fc7d937fc336202d859
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Jan 6 15:09:26 2018 -0500

    spin cell renderer: Stop using ::focus-out-event
    
    The has-focus property works fine here.

 gtk/gtkcellrendererspin.c |   19 ++++++++++---------
 1 files changed, 10 insertions(+), 9 deletions(-)
---
diff --git a/gtk/gtkcellrendererspin.c b/gtk/gtkcellrendererspin.c
index 6f67a8b..feb7a78 100644
--- a/gtk/gtkcellrendererspin.c
+++ b/gtk/gtkcellrendererspin.c
@@ -246,21 +246,24 @@ gtk_cell_renderer_spin_set_property (GObject      *object,
     }
 }
 
-static gboolean
-gtk_cell_renderer_spin_focus_out_event (GtkWidget *widget,
-                                       GdkEvent  *event,
-                                       gpointer   data)
+static void
+gtk_cell_renderer_spin_focus_changed (GtkWidget  *widget,
+                                      GParamSpec *pspec,
+                                      gpointer    data)
 {
   const gchar *path;
   const gchar *new_text;
   gboolean canceled;
 
+  if (gtk_widget_has_focus (widget))
+    return;
+
   g_object_get (widget,
                 "editing-canceled", &canceled,
                 NULL);
 
   g_signal_handlers_disconnect_by_func (widget,
-                                       gtk_cell_renderer_spin_focus_out_event,
+                                       gtk_cell_renderer_spin_focus_changed,
                                        data);
 
   gtk_cell_renderer_stop_editing (GTK_CELL_RENDERER (data), canceled);
@@ -272,8 +275,6 @@ gtk_cell_renderer_spin_focus_out_event (GtkWidget *widget,
       new_text = gtk_entry_get_text (GTK_ENTRY (widget));
       g_signal_emit_by_name (data, "edited", path, new_text);
     }
-  
-  return FALSE;
 }
 
 static gboolean
@@ -343,8 +344,8 @@ gtk_cell_renderer_spin_start_editing (GtkCellRenderer      *cell,
   g_object_set_data_full (G_OBJECT (spin), GTK_CELL_RENDERER_SPIN_PATH,
                          g_strdup (path), g_free);
 
-  g_signal_connect (G_OBJECT (spin), "focus-out-event",
-                   G_CALLBACK (gtk_cell_renderer_spin_focus_out_event),
+  g_signal_connect (G_OBJECT (spin), "notify::has-focus",
+                   G_CALLBACK (gtk_cell_renderer_spin_focus_changed),
                    cell);
   g_signal_connect (G_OBJECT (spin), "key-press-event",
                    G_CALLBACK (gtk_cell_renderer_spin_key_press_event),


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]