]> spindle.queued.net Git - midori/commitdiff
Handle drag on default text like focus in
authorChristian Dywan <christian@twotoasts.de>
Tue, 11 Jan 2011 19:53:56 +0000 (20:53 +0100)
committerChristian Dywan <christian@twotoasts.de>
Tue, 11 Jan 2011 20:08:27 +0000 (21:08 +0100)
Also only connect the signals once.

midori/sokoke.c

index 055ebddbba55474a64335449f83a2b010ec39bdb..4e4aa09208f6659675b7b6d86ade48ae6f843a1d 100644 (file)
@@ -1102,6 +1102,17 @@ sokoke_on_entry_focus_out_event (GtkEntry*      entry,
     return FALSE;
 }
 
+static void
+sokoke_on_entry_drag_data_received (GtkEntry*       entry,
+                                    GdkDragContext* drag_context,
+                                    gint            x,
+                                    gint            y,
+                                    guint           timestamp,
+                                    gpointer        user_data)
+{
+    sokoke_on_entry_focus_in_event (entry, NULL, NULL);
+}
+
 void
 sokoke_entry_set_default_text (GtkEntry*    entry,
                                const gchar* default_text)
@@ -1116,6 +1127,12 @@ sokoke_entry_set_default_text (GtkEntry*    entry,
         sokoke_widget_set_pango_font_style (GTK_WIDGET (entry),
                                             PANGO_STYLE_ITALIC);
         gtk_entry_set_text (entry, default_text);
+        g_signal_connect (entry, "drag-data-received",
+            G_CALLBACK (sokoke_on_entry_drag_data_received), NULL);
+        g_signal_connect (entry, "focus-in-event",
+            G_CALLBACK (sokoke_on_entry_focus_in_event), NULL);
+        g_signal_connect (entry, "focus-out-event",
+           G_CALLBACK (sokoke_on_entry_focus_out_event), NULL);
     }
     else if (!gtk_widget_has_focus (GTK_WIDGET (entry)))
     {
@@ -1130,10 +1147,6 @@ sokoke_entry_set_default_text (GtkEntry*    entry,
     }
     g_object_set_data (G_OBJECT (entry), "sokoke_default_text",
                        (gpointer)default_text);
-    g_signal_connect (entry, "focus-in-event",
-        G_CALLBACK (sokoke_on_entry_focus_in_event), NULL);
-    g_signal_connect (entry, "focus-out-event",
-        G_CALLBACK (sokoke_on_entry_focus_out_event), NULL);
 }
 
 gchar*