Add gradient background support
This commit is contained in:
@@ -23,6 +23,7 @@ int no_items_systray_enabled;
|
||||
int no_items_battery_enabled;
|
||||
|
||||
static int num_bg;
|
||||
static int read_bg_color2;
|
||||
static int read_bg_color_hover;
|
||||
static int read_border_color_hover;
|
||||
static int read_bg_color_press;
|
||||
@@ -121,6 +122,9 @@ void config_write_backgrounds(FILE *fp)
|
||||
gboolean sideRight;
|
||||
GdkColor *fillColor;
|
||||
int fillOpacity;
|
||||
GdkColor *fillColor2;
|
||||
int fillOpacity2;
|
||||
gboolean gradient;
|
||||
GdkColor *borderColor;
|
||||
int borderOpacity;
|
||||
GdkColor *fillColorOver;
|
||||
@@ -136,6 +140,9 @@ void config_write_backgrounds(FILE *fp)
|
||||
gtk_tree_model_get(GTK_TREE_MODEL(backgrounds), &iter,
|
||||
bgColFillColor, &fillColor,
|
||||
bgColFillOpacity, &fillOpacity,
|
||||
bgColFillColor2, &fillColor2,
|
||||
bgColFillOpacity2, &fillOpacity2,
|
||||
bgColGradient, &gradient,
|
||||
bgColBorderColor, &borderColor,
|
||||
bgColBorderOpacity, &borderOpacity,
|
||||
bgColFillColorOver, &fillColorOver,
|
||||
@@ -170,7 +177,12 @@ void config_write_backgrounds(FILE *fp)
|
||||
strcat(sides, "R");
|
||||
fprintf(fp, "border_sides = %s\n", sides);
|
||||
|
||||
// This is a workaround. For some reason, there was a problem while storing fillOpacity2
|
||||
//fillOpacity2 = MIN(100, 0.5 + gtk_color_button_get_alpha(GTK_COLOR_BUTTON(background_fill_color2)) * 100.0 / 0xffff);
|
||||
|
||||
config_write_color(fp, "background_color", *fillColor, fillOpacity);
|
||||
config_write_color(fp, "background_color2", *fillColor2, fillOpacity2);
|
||||
fprintf(fp, "gradient = %d\n", gradient);
|
||||
config_write_color(fp, "border_color", *borderColor, borderOpacity);
|
||||
config_write_color(fp, "background_color_hover", *fillColorOver, fillOpacityOver);
|
||||
config_write_color(fp, "border_color_hover", *borderColorOver, borderOpacityOver);
|
||||
@@ -850,6 +862,14 @@ gboolean config_is_manual(const char *path)
|
||||
void finalize_bg()
|
||||
{
|
||||
if (num_bg > 0) {
|
||||
if (!read_bg_color2) {
|
||||
GdkColor fillColor;
|
||||
gtk_color_button_get_color(GTK_COLOR_BUTTON(background_fill_color),&fillColor);
|
||||
gtk_color_button_set_color(GTK_COLOR_BUTTON(background_fill_color2), &fillColor);
|
||||
int fillOpacity = gtk_color_button_get_alpha(GTK_COLOR_BUTTON(background_fill_color2));
|
||||
gtk_color_button_set_alpha(GTK_COLOR_BUTTON(background_fill_color2), fillOpacity);
|
||||
background_force_update();
|
||||
}
|
||||
if (!read_bg_color_hover) {
|
||||
GdkColor fillColor;
|
||||
gtk_color_button_get_color(GTK_COLOR_BUTTON(background_fill_color), &fillColor);
|
||||
@@ -895,6 +915,7 @@ void add_entry(char *key, char *value)
|
||||
finalize_bg();
|
||||
background_create_new();
|
||||
num_bg++;
|
||||
read_bg_color2 = 0;
|
||||
read_bg_color_hover = 0;
|
||||
read_border_color_hover = 0;
|
||||
read_bg_color_press = 0;
|
||||
@@ -915,6 +936,19 @@ void add_entry(char *key, char *value)
|
||||
gtk_color_button_set_alpha(GTK_COLOR_BUTTON(background_fill_color), (alpha*65535)/100);
|
||||
background_force_update();
|
||||
}
|
||||
else if (strcmp(key, "background_color2") == 0) {
|
||||
extract_values(value, &value1, &value2, &value3);
|
||||
GdkColor col;
|
||||
hex2gdk(value1, &col);
|
||||
gtk_color_button_set_color(GTK_COLOR_BUTTON(background_fill_color2), &col);
|
||||
int alpha = value2 ? atoi(value2) : 50;
|
||||
gtk_color_button_set_alpha(GTK_COLOR_BUTTON(background_fill_color2), (alpha*65535)/100);
|
||||
background_force_update();
|
||||
read_bg_color2 = 1;
|
||||
}
|
||||
else if (strcmp(key, "gradient") == 0 ) {
|
||||
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(background_gradient), atoi(value));
|
||||
}
|
||||
else if (strcmp(key, "border_color") == 0) {
|
||||
extract_values(value, &value1, &value2, &value3);
|
||||
GdkColor col;
|
||||
|
||||
Reference in New Issue
Block a user