diff --git a/libgimpwidgets/gimpbrowser.c b/libgimpwidgets/gimpbrowser.c index ac8fc9152d..08bcc7b488 100644 --- a/libgimpwidgets/gimpbrowser.c +++ b/libgimpwidgets/gimpbrowser.c @@ -50,8 +50,10 @@ enum }; -typedef struct _GimpBrowserPrivate +struct _GimpBrowser { + GtkPaned parent_instance; + GtkWidget *left_vbox; GtkWidget *search_entry; @@ -64,7 +66,7 @@ typedef struct _GimpBrowserPrivate GtkWidget *right_vbox; GtkWidget *right_widget; -} GimpBrowserPrivate; +}; static void gimp_browser_dispose (GObject *object); @@ -80,7 +82,7 @@ static void gimp_browser_entry_icon_press (GtkEntry *entry, static gboolean gimp_browser_search_timeout (gpointer data); -G_DEFINE_TYPE_WITH_PRIVATE (GimpBrowser, gimp_browser, GTK_TYPE_PANED) +G_DEFINE_TYPE (GimpBrowser, gimp_browser, GTK_TYPE_PANED) #define parent_class gimp_browser_parent_class @@ -96,7 +98,7 @@ gimp_browser_class_init (GimpBrowserClass *klass) g_signal_new ("search", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GimpBrowserClass, search), + 0, NULL, NULL, _gimp_widgets_marshal_VOID__STRING_INT, G_TYPE_NONE, 2, @@ -104,71 +106,66 @@ gimp_browser_class_init (GimpBrowserClass *klass) G_TYPE_INT); object_class->dispose = gimp_browser_dispose; - - klass->search = NULL; } static void gimp_browser_init (GimpBrowser *browser) { - GimpBrowserPrivate *priv; - GtkWidget *hbox; - GtkWidget *label; - GtkWidget *scrolled_window; - GtkWidget *viewport; - - priv = gimp_browser_get_instance_private (browser); + GtkWidget *hbox; + GtkWidget *label; + GtkWidget *scrolled_window; + GtkWidget *viewport; gtk_orientable_set_orientation (GTK_ORIENTABLE (browser), GTK_ORIENTATION_HORIZONTAL); - priv->search_type = -1; + browser->search_type = -1; - priv->left_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); - gtk_paned_pack1 (GTK_PANED (browser), priv->left_vbox, TRUE, FALSE); - gtk_widget_show (priv->left_vbox); + browser->left_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); + gtk_paned_pack1 (GTK_PANED (browser), browser->left_vbox, TRUE, FALSE); + gtk_widget_show (browser->left_vbox); /* search entry */ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); - gtk_box_pack_start (GTK_BOX (priv->left_vbox), hbox, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (browser->left_vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); label = gtk_label_new_with_mnemonic (_("_Search:")); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); gtk_widget_show (label); - priv->search_entry = gtk_entry_new (); - gtk_box_pack_start (GTK_BOX (hbox), priv->search_entry, TRUE, TRUE, 0); - gtk_widget_show (priv->search_entry); + browser->search_entry = gtk_entry_new (); + gtk_box_pack_start (GTK_BOX (hbox), browser->search_entry, TRUE, TRUE, 0); + gtk_widget_show (browser->search_entry); - gtk_label_set_mnemonic_widget (GTK_LABEL (label), priv->search_entry); + gtk_label_set_mnemonic_widget (GTK_LABEL (label), browser->search_entry); - g_signal_connect (priv->search_entry, "changed", + g_signal_connect (browser->search_entry, "changed", G_CALLBACK (gimp_browser_entry_changed), browser); - gtk_entry_set_icon_from_icon_name (GTK_ENTRY (priv->search_entry), + gtk_entry_set_icon_from_icon_name (GTK_ENTRY (browser->search_entry), GTK_ENTRY_ICON_SECONDARY, "edit-clear"); - gtk_entry_set_icon_activatable (GTK_ENTRY (priv->search_entry), + gtk_entry_set_icon_activatable (GTK_ENTRY (browser->search_entry), GTK_ENTRY_ICON_SECONDARY, TRUE); - gtk_entry_set_icon_sensitive (GTK_ENTRY (priv->search_entry), + gtk_entry_set_icon_sensitive (GTK_ENTRY (browser->search_entry), GTK_ENTRY_ICON_SECONDARY, FALSE); - g_signal_connect (priv->search_entry, "icon-press", + g_signal_connect (browser->search_entry, "icon-press", G_CALLBACK (gimp_browser_entry_icon_press), browser); /* count label */ - priv->count_label = gtk_label_new (_("No matches")); - gtk_label_set_xalign (GTK_LABEL (priv->count_label), 0.0); - gimp_label_set_attributes (GTK_LABEL (priv->count_label), + browser->count_label = gtk_label_new (_("No matches")); + gtk_label_set_xalign (GTK_LABEL (browser->count_label), 0.0); + gimp_label_set_attributes (GTK_LABEL (browser->count_label), PANGO_ATTR_STYLE, PANGO_STYLE_ITALIC, -1); - gtk_box_pack_end (GTK_BOX (priv->left_vbox), priv->count_label, + gtk_box_pack_end (GTK_BOX (browser->left_vbox), browser->count_label, FALSE, FALSE, 0); - gtk_widget_show (priv->count_label); + gtk_widget_show (browser->count_label); /* scrolled window */ @@ -183,24 +180,23 @@ gimp_browser_init (GimpBrowser *browser) gtk_container_add (GTK_CONTAINER (scrolled_window), viewport); gtk_widget_show (viewport); - priv->right_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); - gtk_container_set_border_width (GTK_CONTAINER (priv->right_vbox), 12); - gtk_container_add (GTK_CONTAINER (viewport), priv->right_vbox); - gtk_widget_show (priv->right_vbox); + browser->right_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); + gtk_container_set_border_width (GTK_CONTAINER (browser->right_vbox), 12); + gtk_container_add (GTK_CONTAINER (viewport), browser->right_vbox); + gtk_widget_show (browser->right_vbox); - gtk_widget_grab_focus (priv->search_entry); + gtk_widget_grab_focus (browser->search_entry); } static void gimp_browser_dispose (GObject *object) { - GimpBrowser *browser = GIMP_BROWSER (object); - GimpBrowserPrivate *priv = gimp_browser_get_instance_private (browser); + GimpBrowser *browser = GIMP_BROWSER (object); - if (priv->search_timeout_id) + if (browser->search_timeout_id) { - g_source_remove (priv->search_timeout_id); - priv->search_timeout_id = 0; + g_source_remove (browser->search_timeout_id); + browser->search_timeout_id = 0; } G_OBJECT_CLASS (parent_class)->dispose (object); @@ -242,14 +238,10 @@ gimp_browser_add_search_types (GimpBrowser *browser, gint first_type_id, ...) { - GimpBrowserPrivate *priv; - g_return_if_fail (GIMP_IS_BROWSER (browser)); g_return_if_fail (first_type_label != NULL); - priv = gimp_browser_get_instance_private (browser); - - if (! priv->search_type_combo) + if (! browser->search_type_combo) { GtkWidget *combo; va_list args; @@ -262,17 +254,17 @@ gimp_browser_add_search_types (GimpBrowser *browser, gtk_widget_set_focus_on_click (combo, FALSE); - priv->search_type_combo = combo; - priv->search_type = first_type_id; + browser->search_type_combo = combo; + browser->search_type = first_type_id; - gtk_box_pack_end (GTK_BOX (gtk_widget_get_parent (priv->search_entry)), + gtk_box_pack_end (GTK_BOX (gtk_widget_get_parent (browser->search_entry)), combo, FALSE, FALSE, 0); gtk_widget_show (combo); gimp_int_combo_box_connect (GIMP_INT_COMBO_BOX (combo), - priv->search_type, + browser->search_type, G_CALLBACK (gimp_int_combo_box_get_active), - &priv->search_type, NULL); + &browser->search_type, NULL); g_signal_connect (combo, "changed", G_CALLBACK (gimp_browser_combo_changed), @@ -280,7 +272,7 @@ gimp_browser_add_search_types (GimpBrowser *browser, } else { - gimp_int_combo_box_append (GIMP_INT_COMBO_BOX (priv->search_type_combo), + gimp_int_combo_box_append (GIMP_INT_COMBO_BOX (browser->search_type_combo), first_type_label, first_type_id, NULL); } @@ -297,13 +289,9 @@ gimp_browser_add_search_types (GimpBrowser *browser, GtkWidget * gimp_browser_get_left_vbox (GimpBrowser *browser) { - GimpBrowserPrivate *priv; - g_return_val_if_fail (GIMP_IS_BROWSER (browser), NULL); - priv = gimp_browser_get_instance_private (browser); - - return priv->left_vbox; + return browser->left_vbox; } /** @@ -317,13 +305,9 @@ gimp_browser_get_left_vbox (GimpBrowser *browser) GtkWidget * gimp_browser_get_right_vbox (GimpBrowser *browser) { - GimpBrowserPrivate *priv; - g_return_val_if_fail (GIMP_IS_BROWSER (browser), NULL); - priv = gimp_browser_get_instance_private (browser); - - return priv->right_vbox; + return browser->right_vbox; } /** @@ -339,14 +323,10 @@ void gimp_browser_set_search_summary (GimpBrowser *browser, const gchar *summary) { - GimpBrowserPrivate *priv; - g_return_if_fail (GIMP_IS_BROWSER (browser)); g_return_if_fail (summary != NULL); - priv = gimp_browser_get_instance_private (browser); - - gtk_label_set_text (GTK_LABEL (priv->count_label), summary); + gtk_label_set_text (GTK_LABEL (browser->count_label), summary); } /** @@ -362,25 +342,21 @@ void gimp_browser_set_widget (GimpBrowser *browser, GtkWidget *widget) { - GimpBrowserPrivate *priv; - g_return_if_fail (GIMP_IS_BROWSER (browser)); g_return_if_fail (widget == NULL || GTK_IS_WIDGET (widget)); - priv = gimp_browser_get_instance_private (browser); - - if (widget == priv->right_widget) + if (widget == browser->right_widget) return; - if (priv->right_widget) - gtk_container_remove (GTK_CONTAINER (priv->right_vbox), - priv->right_widget); + if (browser->right_widget) + gtk_container_remove (GTK_CONTAINER (browser->right_vbox), + browser->right_widget); - priv->right_widget = widget; + browser->right_widget = widget; if (widget) { - gtk_box_pack_start (GTK_BOX (priv->right_vbox), widget, + gtk_box_pack_start (GTK_BOX (browser->right_vbox), widget, FALSE, FALSE, 0); gtk_widget_show (widget); } @@ -401,16 +377,12 @@ void gimp_browser_show_message (GimpBrowser *browser, const gchar *message) { - GimpBrowserPrivate *priv; - g_return_if_fail (GIMP_IS_BROWSER (browser)); g_return_if_fail (message != NULL); - priv = gimp_browser_get_instance_private (browser); - - if (GTK_IS_LABEL (priv->right_widget)) + if (GTK_IS_LABEL (browser->right_widget)) { - gtk_label_set_text (GTK_LABEL (priv->right_widget), message); + gtk_label_set_text (GTK_LABEL (browser->right_widget), message); } else { @@ -432,12 +404,10 @@ gimp_browser_show_message (GimpBrowser *browser, static void gimp_browser_queue_search (GimpBrowser *browser) { - GimpBrowserPrivate *priv = gimp_browser_get_instance_private (browser); + if (browser->search_timeout_id) + g_source_remove (browser->search_timeout_id); - if (priv->search_timeout_id) - g_source_remove (priv->search_timeout_id); - - priv->search_timeout_id = + browser->search_timeout_id = g_timeout_add (100, gimp_browser_search_timeout, browser); } @@ -476,19 +446,18 @@ gimp_browser_entry_icon_press (GtkEntry *entry, static gboolean gimp_browser_search_timeout (gpointer data) { - GimpBrowser *browser = GIMP_BROWSER (data); - GimpBrowserPrivate *priv = gimp_browser_get_instance_private (browser); - const gchar *search_string; + GimpBrowser *browser = GIMP_BROWSER (data); + const gchar *search_string; - search_string = gtk_entry_get_text (GTK_ENTRY (priv->search_entry)); + search_string = gtk_entry_get_text (GTK_ENTRY (browser->search_entry)); if (! search_string) search_string = ""; g_signal_emit (data, browser_signals[SEARCH], 0, - search_string, priv->search_type); + search_string, browser->search_type); - priv->search_timeout_id = 0; + browser->search_timeout_id = 0; return FALSE; } diff --git a/libgimpwidgets/gimpbrowser.h b/libgimpwidgets/gimpbrowser.h index 4e63b62851..dc6fe0b2a2 100644 --- a/libgimpwidgets/gimpbrowser.h +++ b/libgimpwidgets/gimpbrowser.h @@ -32,26 +32,7 @@ G_BEGIN_DECLS #define GIMP_TYPE_BROWSER (gimp_browser_get_type ()) -G_DECLARE_DERIVABLE_TYPE (GimpBrowser, gimp_browser, GIMP, BROWSER, GtkPaned) - -struct _GimpBrowserClass -{ - GtkPanedClass parent_class; - - void (* search) (GimpBrowser *browser, - const gchar *search_string, - gint search_type); - - /* Padding for future expansion */ - void (* _gimp_reserved1) (void); - void (* _gimp_reserved2) (void); - void (* _gimp_reserved3) (void); - void (* _gimp_reserved4) (void); - void (* _gimp_reserved5) (void); - void (* _gimp_reserved6) (void); - void (* _gimp_reserved7) (void); - void (* _gimp_reserved8) (void); -}; +G_DECLARE_FINAL_TYPE (GimpBrowser, gimp_browser, GIMP, BROWSER, GtkPaned) GtkWidget * gimp_browser_new (void);