From dd1b9d8336badb9dca10c40133cff580c88c7185 Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Thu, 14 Jul 2011 16:38:22 +0100 Subject: [PATCH] background: Add "swap" button for gradients https://bugzilla.gnome.org/show_bug.cgi?id=34498 --- panels/background/background.ui | 25 +++++++++++++-- panels/background/cc-background-panel.c | 41 +++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 2 deletions(-) diff --git a/panels/background/background.ui b/panels/background/background.ui index 43afc41f8..e695c5212 100644 --- a/panels/background/background.ui +++ b/panels/background/background.ui @@ -241,11 +241,18 @@ - + True True True - #000000000000 + False + + + True + False + object-flip-horizontal-symbolic + + False @@ -269,6 +276,20 @@ False False end + 3 + + + + + True + True + True + False + #000000000000 + + + False + False 2 diff --git a/panels/background/cc-background-panel.c b/panels/background/cc-background-panel.c index 2ba9c5667..f7f71edc5 100644 --- a/panels/background/cc-background-panel.c +++ b/panels/background/cc-background-panel.c @@ -250,6 +250,12 @@ source_update_edit_box (CcBackgroundPanelPrivate *priv, else gtk_widget_show (WID ("style-pcolor")); + if (gtk_widget_get_visible (WID ("style-pcolor")) && + gtk_widget_get_visible (WID ("style-scolor"))) + gtk_widget_show (WID ("swap-color-button")); + else + gtk_widget_hide (WID ("swap-color-button")); + if (flags & CC_BACKGROUND_ITEM_HAS_PLACEMENT || cc_background_item_get_uri (priv->current_background) == NULL) gtk_widget_hide (WID ("style-combobox")); @@ -813,6 +819,39 @@ color_changed_cb (GtkColorButton *button, update_preview (priv, NULL); } +static void +swap_colors_clicked (GtkButton *button, + CcBackgroundPanel *panel) +{ + CcBackgroundPanelPrivate *priv = panel->priv; + GdkColor pcolor, scolor; + char *new_pcolor, *new_scolor; + + gtk_color_button_get_color (GTK_COLOR_BUTTON (WID ("style-pcolor")), &pcolor); + gtk_color_button_get_color (GTK_COLOR_BUTTON (WID ("style-scolor")), &scolor); + + gtk_color_button_set_color (GTK_COLOR_BUTTON (WID ("style-scolor")), &pcolor); + gtk_color_button_set_color (GTK_COLOR_BUTTON (WID ("style-pcolor")), &scolor); + + new_pcolor = gdk_color_to_string (&scolor); + new_scolor = gdk_color_to_string (&pcolor); + + g_object_set (priv->current_background, + "primary-color", new_pcolor, + "secondary-color", new_scolor, + NULL); + + g_settings_set_string (priv->settings, WP_PCOLOR_KEY, new_pcolor); + g_settings_set_string (priv->settings, WP_SCOLOR_KEY, new_scolor); + + g_free (new_pcolor); + g_free (new_scolor); + + g_settings_apply (priv->settings); + + update_preview (priv, NULL); +} + static void row_inserted (GtkTreeModel *tree_model, GtkTreePath *path, @@ -1216,6 +1255,8 @@ cc_background_panel_init (CcBackgroundPanel *self) G_CALLBACK (color_changed_cb), self); g_signal_connect (WID ("style-scolor"), "color-set", G_CALLBACK (color_changed_cb), self); + g_signal_connect (WID ("swap-color-button"), "clicked", + G_CALLBACK (swap_colors_clicked), self); priv->copy_cancellable = g_cancellable_new ();