+static void
+update_license_button_visibility (GtkAboutDialog *about)
+{
+ GtkAboutDialogPrivate *priv = about->priv;
+
+ if (priv->license_type == GTK_LICENSE_CUSTOM && priv->license != NULL)
+ gtk_widget_show (priv->license_button);
+ else
+ gtk_widget_hide (priv->license_button);
+}
+
+static void
+update_credits_button_visibility (GtkAboutDialog *about)
+{
+ GtkAboutDialogPrivate *priv = about->priv;
+ gboolean show;
+
+ show = (priv->authors != NULL ||
+ priv->documenters != NULL ||
+ priv->artists != NULL ||
+ priv->credit_sections != NULL ||
+ (priv->translator_credits != NULL &&
+ strcmp (priv->translator_credits, "translator_credits") &&
+ strcmp (priv->translator_credits, "translator-credits")));
+ if (show)
+ gtk_widget_show (priv->credits_button);
+ else
+ gtk_widget_hide (priv->credits_button);
+}
+
+static void
+switch_page (GtkAboutDialog *about,
+ gint page)
+{
+ GtkAboutDialogPrivate *priv = about->priv;
+
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->notebook), page);
+}
+
+static void
+display_main_page (GtkButton *button,
+ gpointer data)
+{
+ GtkAboutDialog *about = (GtkAboutDialog *)data;
+
+ switch_page (about, 0);
+}
+
+static void
+credits_button_clicked (GtkButton *button,
+ gpointer data)
+{
+ GtkAboutDialog *about = (GtkAboutDialog *)data;
+ GtkAboutDialogPrivate *priv = about->priv;
+ gboolean active;
+
+ active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button));
+
+ if (active)
+ {
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->license_button), FALSE);
+ display_credits_page (NULL, data);
+ }
+ else
+ {
+ display_main_page (NULL, data);
+ }
+}
+
+static void
+license_button_clicked (GtkButton *button,
+ gpointer data)
+{
+ GtkAboutDialog *about = (GtkAboutDialog *)data;
+ GtkAboutDialogPrivate *priv = about->priv;
+ gboolean active;
+
+ active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button));
+
+ if (active)
+ {
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->credits_button), FALSE);
+ display_license_page (NULL, data);
+ }
+ else
+ {
+ display_main_page (NULL, data);
+ }
+}