summaryrefslogtreecommitdiff
path: root/eel/eel-background.c
diff options
context:
space:
mode:
Diffstat (limited to 'eel/eel-background.c')
-rw-r--r--eel/eel-background.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/eel/eel-background.c b/eel/eel-background.c
index 80f0e90c..fba4f70d 100644
--- a/eel/eel-background.c
+++ b/eel/eel-background.c
@@ -1103,7 +1103,7 @@ eel_background_receive_dropped_color (EelBackground *background,
const GtkSelectionData *selection_data)
{
guint16 *channels;
- char *color_spec;
+ char *color_spec, *gradient_spec;
char *new_gradient_spec;
int left_border, right_border, top_border, bottom_border;
GtkAllocation allocation;
@@ -1134,21 +1134,32 @@ eel_background_receive_dropped_color (EelBackground *background,
right_border = allocation.width - 32;
top_border = 32;
bottom_border = allocation.height - 32;
+
+ /* If a custom background color isn't set, get the GtkStyle's bg color. */
+ if (!background->details->color)
+ {
+ gradient_spec = gdk_color_to_string (&gtk_widget_get_style (widget)->bg[GTK_STATE_NORMAL]);
+ }
+ else
+ {
+ gradient_spec = background->details->color;
+ }
+
if (drop_location_x < left_border && drop_location_x <= right_border)
{
- new_gradient_spec = eel_gradient_set_left_color_spec (background->details->color, color_spec);
+ new_gradient_spec = eel_gradient_set_left_color_spec (gradient_spec, color_spec);
}
else if (drop_location_x >= left_border && drop_location_x > right_border)
{
- new_gradient_spec = eel_gradient_set_right_color_spec (background->details->color, color_spec);
+ new_gradient_spec = eel_gradient_set_right_color_spec (gradient_spec, color_spec);
}
else if (drop_location_y < top_border && drop_location_y <= bottom_border)
{
- new_gradient_spec = eel_gradient_set_top_color_spec (background->details->color, color_spec);
+ new_gradient_spec = eel_gradient_set_top_color_spec (gradient_spec, color_spec);
}
else if (drop_location_y >= top_border && drop_location_y > bottom_border)
{
- new_gradient_spec = eel_gradient_set_bottom_color_spec (background->details->color, color_spec);
+ new_gradient_spec = eel_gradient_set_bottom_color_spec (gradient_spec, color_spec);
}
else
{
@@ -1156,6 +1167,7 @@ eel_background_receive_dropped_color (EelBackground *background,
}
g_free (color_spec);
+ g_free (gradient_spec);
eel_background_set_image_uri_and_color (background, action, NULL, new_gradient_spec);