From: Matthias Clasen Date: Sat, 28 Mar 2020 14:28:22 +0000 (-0400) Subject: searchentry: Drop the Private struct X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1^2~18^2~19^2~18^2~4 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=28eb1fce04e27cb8bc6f0db4ed74155dfb99a51a;p=gtk4.git searchentry: Drop the Private struct --- diff --git a/gtk/gtksearchentry.c b/gtk/gtksearchentry.c index 5d92aeebba..93073e70b7 100644 --- a/gtk/gtksearchentry.c +++ b/gtk/gtksearchentry.c @@ -101,6 +101,16 @@ typedef struct _GtkSearchEntryClass GtkSearchEntryClass; struct _GtkSearchEntry { GtkWidget parent; + + GtkWidget *capture_widget; + GtkEventController *capture_widget_controller; + + GtkWidget *entry; + GtkWidget *icon; + + guint delayed_changed_id; + gboolean content_changed; + gboolean search_stopped; }; struct _GtkSearchEntryClass @@ -114,22 +124,9 @@ struct _GtkSearchEntryClass void (* stop_search) (GtkSearchEntry *entry); }; -typedef struct { - GtkWidget *capture_widget; - GtkEventController *capture_widget_controller; - - GtkWidget *entry; - GtkWidget *icon; - - guint delayed_changed_id; - gboolean content_changed; - gboolean search_stopped; -} GtkSearchEntryPrivate; - static void gtk_search_entry_editable_init (GtkEditableInterface *iface); G_DEFINE_TYPE_WITH_CODE (GtkSearchEntry, gtk_search_entry, GTK_TYPE_WIDGET, - G_ADD_PRIVATE (GtkSearchEntry) G_IMPLEMENT_INTERFACE (GTK_TYPE_EDITABLE, gtk_search_entry_editable_init)) @@ -139,24 +136,21 @@ G_DEFINE_TYPE_WITH_CODE (GtkSearchEntry, gtk_search_entry, GTK_TYPE_WIDGET, static void text_changed (GtkSearchEntry *entry) { - GtkSearchEntryPrivate *priv = gtk_search_entry_get_instance_private (entry); - - priv->content_changed = TRUE; + entry->content_changed = TRUE; } static void gtk_search_entry_finalize (GObject *object) { GtkSearchEntry *entry = GTK_SEARCH_ENTRY (object); - GtkSearchEntryPrivate *priv = gtk_search_entry_get_instance_private (entry); gtk_editable_finish_delegate (GTK_EDITABLE (entry)); - g_clear_pointer (&priv->entry, gtk_widget_unparent); - g_clear_pointer (&priv->icon, gtk_widget_unparent); + g_clear_pointer (&entry->entry, gtk_widget_unparent); + g_clear_pointer (&entry->icon, gtk_widget_unparent); - if (priv->delayed_changed_id > 0) - g_source_remove (priv->delayed_changed_id); + if (entry->delayed_changed_id > 0) + g_source_remove (entry->delayed_changed_id); gtk_search_entry_set_key_capture_widget (GTK_SEARCH_ENTRY (object), NULL); @@ -166,9 +160,7 @@ gtk_search_entry_finalize (GObject *object) static void gtk_search_entry_stop_search (GtkSearchEntry *entry) { - GtkSearchEntryPrivate *priv = gtk_search_entry_get_instance_private (entry); - - priv->search_stopped = TRUE; + entry->search_stopped = TRUE; } static void @@ -178,7 +170,6 @@ gtk_search_entry_set_property (GObject *object, GParamSpec *pspec) { GtkSearchEntry *entry = GTK_SEARCH_ENTRY (object); - GtkSearchEntryPrivate *priv = gtk_search_entry_get_instance_private (entry); if (gtk_editable_delegate_set_property (object, prop_id, value, pspec)) return; @@ -186,13 +177,13 @@ gtk_search_entry_set_property (GObject *object, switch (prop_id) { case PROP_PLACEHOLDER_TEXT: - gtk_text_set_placeholder_text (GTK_TEXT (priv->entry), g_value_get_string (value)); + gtk_text_set_placeholder_text (GTK_TEXT (entry->entry), g_value_get_string (value)); break; case PROP_ACTIVATES_DEFAULT: - if (gtk_text_get_activates_default (GTK_TEXT (priv->entry)) != g_value_get_boolean (value)) + if (gtk_text_get_activates_default (GTK_TEXT (entry->entry)) != g_value_get_boolean (value)) { - gtk_text_set_activates_default (GTK_TEXT (priv->entry), g_value_get_boolean (value)); + gtk_text_set_activates_default (GTK_TEXT (entry->entry), g_value_get_boolean (value)); g_object_notify_by_pspec (object, pspec); } break; @@ -209,7 +200,6 @@ gtk_search_entry_get_property (GObject *object, GParamSpec *pspec) { GtkSearchEntry *entry = GTK_SEARCH_ENTRY (object); - GtkSearchEntryPrivate *priv = gtk_search_entry_get_instance_private (entry); if (gtk_editable_delegate_get_property (object, prop_id, value, pspec)) return; @@ -217,11 +207,11 @@ gtk_search_entry_get_property (GObject *object, switch (prop_id) { case PROP_PLACEHOLDER_TEXT: - g_value_set_string (value, gtk_text_get_placeholder_text (GTK_TEXT (priv->entry))); + g_value_set_string (value, gtk_text_get_placeholder_text (GTK_TEXT (entry->entry))); break; case PROP_ACTIVATES_DEFAULT: - g_value_set_boolean (value, gtk_text_get_activates_default (GTK_TEXT (priv->entry))); + g_value_set_boolean (value, gtk_text_get_activates_default (GTK_TEXT (entry->entry))); break; default: @@ -244,9 +234,8 @@ static gboolean gtk_search_entry_grab_focus (GtkWidget *widget) { GtkSearchEntry *entry = GTK_SEARCH_ENTRY (widget); - GtkSearchEntryPrivate *priv = gtk_search_entry_get_instance_private (entry); - return gtk_text_grab_focus_without_selecting (GTK_TEXT (priv->entry)); + return gtk_text_grab_focus_without_selecting (GTK_TEXT (entry->entry)); } static gboolean @@ -254,9 +243,8 @@ gtk_search_entry_mnemonic_activate (GtkWidget *widget, gboolean group_cycling) { GtkSearchEntry *entry = GTK_SEARCH_ENTRY (widget); - GtkSearchEntryPrivate *priv = gtk_search_entry_get_instance_private (entry); - gtk_widget_grab_focus (priv->entry); + gtk_widget_grab_focus (entry->entry); return TRUE; } @@ -420,10 +408,7 @@ gtk_search_entry_class_init (GtkSearchEntryClass *klass) static GtkEditable * gtk_search_entry_get_delegate (GtkEditable *editable) { - GtkSearchEntry *entry = GTK_SEARCH_ENTRY (editable); - GtkSearchEntryPrivate *priv = gtk_search_entry_get_instance_private (entry); - - return GTK_EDITABLE (priv->entry); + return GTK_EDITABLE (GTK_SEARCH_ENTRY (editable)->entry); } static void @@ -439,19 +424,16 @@ gtk_search_entry_icon_release (GtkGestureClick *press, double y, GtkSearchEntry *entry) { - GtkSearchEntryPrivate *priv = gtk_search_entry_get_instance_private (entry); - - gtk_editable_set_text (GTK_EDITABLE (priv->entry), ""); + gtk_editable_set_text (GTK_EDITABLE (entry->entry), ""); } static gboolean gtk_search_entry_changed_timeout_cb (gpointer user_data) { GtkSearchEntry *entry = user_data; - GtkSearchEntryPrivate *priv = gtk_search_entry_get_instance_private (entry); g_signal_emit (entry, signals[SEARCH_CHANGED], 0); - priv->delayed_changed_id = 0; + entry->delayed_changed_id = 0; return G_SOURCE_REMOVE; } @@ -459,40 +441,37 @@ gtk_search_entry_changed_timeout_cb (gpointer user_data) static void reset_timeout (GtkSearchEntry *entry) { - GtkSearchEntryPrivate *priv = gtk_search_entry_get_instance_private (entry); - - if (priv->delayed_changed_id > 0) - g_source_remove (priv->delayed_changed_id); - priv->delayed_changed_id = g_timeout_add (DELAYED_TIMEOUT_ID, + if (entry->delayed_changed_id > 0) + g_source_remove (entry->delayed_changed_id); + entry->delayed_changed_id = g_timeout_add (DELAYED_TIMEOUT_ID, gtk_search_entry_changed_timeout_cb, entry); - g_source_set_name_by_id (priv->delayed_changed_id, "[gtk] gtk_search_entry_changed_timeout_cb"); + g_source_set_name_by_id (entry->delayed_changed_id, "[gtk] gtk_search_entry_changed_timeout_cb"); } static void -gtk_search_entry_changed (GtkEditable *editable, +gtk_search_entry_changed (GtkEditable *editable, GtkSearchEntry *entry) { - GtkSearchEntryPrivate *priv = gtk_search_entry_get_instance_private (entry); const char *str; /* Update the icons first */ - str = gtk_editable_get_text (GTK_EDITABLE (priv->entry)); + str = gtk_editable_get_text (GTK_EDITABLE (entry->entry)); if (str == NULL || *str == '\0') { - gtk_widget_set_child_visible (priv->icon, FALSE); + gtk_widget_set_child_visible (entry->icon, FALSE); - if (priv->delayed_changed_id > 0) + if (entry->delayed_changed_id > 0) { - g_source_remove (priv->delayed_changed_id); - priv->delayed_changed_id = 0; + g_source_remove (entry->delayed_changed_id); + entry->delayed_changed_id = 0; } g_signal_emit (entry, signals[SEARCH_CHANGED], 0); } else { - gtk_widget_set_child_visible (priv->icon, TRUE); + gtk_widget_set_child_visible (entry->icon, TRUE); /* Queue up the timeout */ reset_timeout (entry); @@ -520,27 +499,26 @@ activate_cb (GtkText *text, static void gtk_search_entry_init (GtkSearchEntry *entry) { - GtkSearchEntryPrivate *priv = gtk_search_entry_get_instance_private (entry); GtkGesture *press; - priv->entry = gtk_text_new (); - gtk_widget_set_parent (priv->entry, GTK_WIDGET (entry)); - gtk_widget_set_hexpand (priv->entry, TRUE); + entry->entry = gtk_text_new (); + gtk_widget_set_parent (entry->entry, GTK_WIDGET (entry)); + gtk_widget_set_hexpand (entry->entry, TRUE); gtk_editable_init_delegate (GTK_EDITABLE (entry)); - g_signal_connect_swapped (priv->entry, "changed", G_CALLBACK (text_changed), entry); - g_signal_connect_after (priv->entry, "changed", G_CALLBACK (gtk_search_entry_changed), entry); - g_signal_connect_swapped (priv->entry, "preedit-changed", G_CALLBACK (text_changed), entry); - g_signal_connect (priv->entry, "notify", G_CALLBACK (notify_cb), entry); - g_signal_connect (priv->entry, "activate", G_CALLBACK (activate_cb), entry); + g_signal_connect_swapped (entry->entry, "changed", G_CALLBACK (text_changed), entry); + g_signal_connect_after (entry->entry, "changed", G_CALLBACK (gtk_search_entry_changed), entry); + g_signal_connect_swapped (entry->entry, "preedit-changed", G_CALLBACK (text_changed), entry); + g_signal_connect (entry->entry, "notify", G_CALLBACK (notify_cb), entry); + g_signal_connect (entry->entry, "activate", G_CALLBACK (activate_cb), entry); - priv->icon = gtk_image_new_from_icon_name ("edit-clear-all-symbolic"); - gtk_widget_set_tooltip_text (priv->icon, _("Clear entry")); - gtk_widget_set_parent (priv->icon, GTK_WIDGET (entry)); - gtk_widget_set_child_visible (priv->icon, FALSE); + entry->icon = gtk_image_new_from_icon_name ("edit-clear-all-symbolic"); + gtk_widget_set_tooltip_text (entry->icon, _("Clear entry")); + gtk_widget_set_parent (entry->icon, GTK_WIDGET (entry)); + gtk_widget_set_child_visible (entry->icon, FALSE); press = gtk_gesture_click_new (); g_signal_connect (press, "released", G_CALLBACK (gtk_search_entry_icon_release), entry); - gtk_widget_add_controller (priv->icon, GTK_EVENT_CONTROLLER (press)); + gtk_widget_add_controller (entry->icon, GTK_EVENT_CONTROLLER (press)); gtk_widget_add_css_class (GTK_WIDGET (entry), I_("search")); } @@ -586,9 +564,9 @@ capture_widget_key_handled (GtkEventControllerKey *controller, guint keyval, guint keycode, GdkModifierType state, - GtkWidget *entry) + GtkWidget *widget) { - GtkSearchEntryPrivate *priv = gtk_search_entry_get_instance_private (GTK_SEARCH_ENTRY (entry)); + GtkSearchEntry *entry = GTK_SEARCH_ENTRY (widget); gboolean handled, was_empty; if (gtk_search_entry_is_keynav (keyval, state) || @@ -596,13 +574,13 @@ capture_widget_key_handled (GtkEventControllerKey *controller, keyval == GDK_KEY_Menu) return FALSE; - priv->content_changed = FALSE; - priv->search_stopped = FALSE; - was_empty = (gtk_text_get_text_length (GTK_TEXT (priv->entry)) == 0); + entry->content_changed = FALSE; + entry->search_stopped = FALSE; + was_empty = (gtk_text_get_text_length (GTK_TEXT (entry->entry)) == 0); - handled = gtk_event_controller_key_forward (controller, priv->entry); + handled = gtk_event_controller_key_forward (controller, entry->entry); - if (handled && priv->content_changed && !priv->search_stopped) + if (handled && entry->content_changed && !entry->search_stopped) { if (was_empty) g_signal_emit (entry, signals[SEARCH_STARTED], 0); @@ -631,34 +609,32 @@ void gtk_search_entry_set_key_capture_widget (GtkSearchEntry *entry, GtkWidget *widget) { - GtkSearchEntryPrivate *priv = gtk_search_entry_get_instance_private (entry); - g_return_if_fail (GTK_IS_SEARCH_ENTRY (entry)); g_return_if_fail (!widget || GTK_IS_WIDGET (widget)); - if (priv->capture_widget) + if (entry->capture_widget) { - gtk_widget_remove_controller (priv->capture_widget, - priv->capture_widget_controller); - g_object_remove_weak_pointer (G_OBJECT (priv->capture_widget), - (gpointer *) &priv->capture_widget); + gtk_widget_remove_controller (entry->capture_widget, + entry->capture_widget_controller); + g_object_remove_weak_pointer (G_OBJECT (entry->capture_widget), + (gpointer *) &entry->capture_widget); } - priv->capture_widget = widget; + entry->capture_widget = widget; if (widget) { - g_object_add_weak_pointer (G_OBJECT (priv->capture_widget), - (gpointer *) &priv->capture_widget); + g_object_add_weak_pointer (G_OBJECT (entry->capture_widget), + (gpointer *) &entry->capture_widget); - priv->capture_widget_controller = gtk_event_controller_key_new (); - gtk_event_controller_set_propagation_phase (priv->capture_widget_controller, + entry->capture_widget_controller = gtk_event_controller_key_new (); + gtk_event_controller_set_propagation_phase (entry->capture_widget_controller, GTK_PHASE_CAPTURE); - g_signal_connect (priv->capture_widget_controller, "key-pressed", + g_signal_connect (entry->capture_widget_controller, "key-pressed", G_CALLBACK (capture_widget_key_handled), entry); - g_signal_connect (priv->capture_widget_controller, "key-released", + g_signal_connect (entry->capture_widget_controller, "key-released", G_CALLBACK (capture_widget_key_handled), entry); - gtk_widget_add_controller (widget, priv->capture_widget_controller); + gtk_widget_add_controller (widget, entry->capture_widget_controller); } } @@ -673,25 +649,19 @@ gtk_search_entry_set_key_capture_widget (GtkSearchEntry *entry, GtkWidget * gtk_search_entry_get_key_capture_widget (GtkSearchEntry *entry) { - GtkSearchEntryPrivate *priv = gtk_search_entry_get_instance_private (entry); - g_return_val_if_fail (GTK_IS_SEARCH_ENTRY (entry), NULL); - return priv->capture_widget; + return entry->capture_widget; } GtkEventController * gtk_search_entry_get_key_controller (GtkSearchEntry *entry) { - GtkSearchEntryPrivate *priv = gtk_search_entry_get_instance_private (entry); - - return gtk_text_get_key_controller (GTK_TEXT (priv->entry)); + return gtk_text_get_key_controller (GTK_TEXT (entry->entry)); } GtkText * gtk_search_entry_get_text_widget (GtkSearchEntry *entry) { - GtkSearchEntryPrivate *priv = gtk_search_entry_get_instance_private (entry); - - return GTK_TEXT (priv->entry); + return GTK_TEXT (entry->entry); }