all repos — tint2 @ 62e0ee6a3ab695a4c07dc3551bf9604331943527

fork of the tint2 desktop panel for my custom setup - only minimized windows across all desktops for the taskbar

Separator: add background option
o9000 mrovi9000@gmail.com
commit

62e0ee6a3ab695a4c07dc3551bf9604331943527

parent

6304715df3de72420510c4cd40cbc9fa3b530689

M src/config.csrc/config.c

@@ -539,6 +539,11 @@

/* Separator */ else if (strcmp(key, "separator") == 0) { panel_config.separator_list = g_list_append(panel_config.separator_list, create_separator()); + } else if (strcmp(key, "separator_background_id") == 0) { + Separator *separator = get_or_create_last_separator(); + int id = atoi(value); + id = (id < backgrounds->len && id >= 0) ? id : 0; + separator->area.bg = &g_array_index(backgrounds, Background, id); } else if (strcmp(key, "separator_color") == 0) { Separator *separator = get_or_create_last_separator(); extract_values(value, &value1, &value2, &value3);
M src/separator/separator.csrc/separator/separator.c

@@ -17,7 +17,7 @@ #include "separator.h"

Separator *create_separator() { - Separator *separator = calloc(1, sizeof(Separator)); + Separator *separator = (Separator *)calloc(1, sizeof(Separator)); return separator; }

@@ -61,13 +61,12 @@ // Make sure this is only done once if there are multiple items

if (panel->separator_list) return; - // panel->separator_list is now a copy of the pointer panel_config.separator_list // We make it a deep copy panel->separator_list = g_list_copy_deep(panel_config.separator_list, NULL, NULL); for (GList *l = panel->separator_list; l; l = l->next) { - Separator *separator = l->data; + Separator *separator = (Separator *)l->data; if (!separator->area.bg) separator->area.bg = &g_array_index(backgrounds, Background, 0); separator->area.parent = p;

@@ -96,7 +95,7 @@ }

gboolean resize_separator(void *obj) { - Separator *separator = obj; + Separator *separator = (Separator *)obj; // Panel *panel = separator->area.panel; if (!separator->area.on_screen) return FALSE;

@@ -147,15 +146,15 @@ }

void draw_separator(void *obj, cairo_t *c) { - Separator *separator = obj; + Separator *separator = (Separator *)obj; - if (separator->style == 0 ) + if (separator->style == 0) return; - double start_point = 0 + ( separator->thickness * 2 ); - double end_point = separator->area.height - ( separator->thickness * 2 ); + double start_point = 0 + (separator->thickness * 2); + double end_point = separator->area.height - (separator->thickness * 2); if (!panel_horizontal) - end_point = separator->area.width - ( separator->thickness * 2 ); + end_point = separator->area.width - (separator->thickness * 2); double count = end_point - start_point; double thickness = separator->thickness; double len = separator->len;

@@ -164,10 +163,18 @@ double x_fix = 0;

if (separator->style == 2) { if (!panel_horizontal) - start_point=start_point + 2; - cairo_set_source_rgba(c, separator->color.rgb[0], separator->color.rgb[1], separator->color.rgb[2], separator->color.alpha); + start_point = start_point + 2; + cairo_set_source_rgba(c, + separator->color.rgb[0], + separator->color.rgb[1], + separator->color.rgb[2], + separator->color.alpha); cairo_set_line_width(c, 1); - cairo_rectangle(c, start_point - 2, start_point - (panel_horizontal ? 0 : 4), end_point - thickness - 3, end_point - thickness - ( panel_horizontal ? 3 : 3)); + cairo_rectangle(c, + start_point - 2, + start_point - (panel_horizontal ? 0 : 4), + end_point - thickness - 3, + end_point - thickness - (panel_horizontal ? 3 : 3)); cairo_stroke_preserve(c); cairo_fill(c); return;

@@ -176,7 +183,7 @@

if (count < thickness) return; - while (((int) count) % 2) { + while (((int)count) % 2) { if (alt) { start_point++; alt = 0;

@@ -198,9 +205,13 @@ start_point = start_point + 2;

end_point--; } - double separator_pattern[] = { len, len }; - double separator_style6_pattern[] = { 1.0 }; - cairo_set_source_rgba(c, separator->color.rgb[0], separator->color.rgb[1], separator->color.rgb[2], separator->color.alpha); + double separator_pattern[] = {len, len}; + double separator_style6_pattern[] = {1.0}; + cairo_set_source_rgba(c, + separator->color.rgb[0], + separator->color.rgb[1], + separator->color.rgb[2], + separator->color.alpha); cairo_set_line_width(c, thickness); if (separator->style == 6) cairo_set_dash(c, separator_style6_pattern, 1, 0);
M src/tint2conf/properties.csrc/tint2conf/properties.c

@@ -4452,7 +4452,7 @@ gtk_table_set_row_spacings(GTK_TABLE(table), ROW_SPACING);

gtk_table_set_col_spacings(GTK_TABLE(table), COL_SPACING); row = 0, col = 2; - label = gtk_label_new(_("<b>Format</b>")); + label = gtk_label_new(_("<b>Appearance</b>")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0); gtk_label_set_use_markup(GTK_LABEL(label), TRUE); gtk_widget_show(label);

@@ -4465,6 +4465,18 @@ gtk_table_set_row_spacings(GTK_TABLE(table), ROW_SPACING);

gtk_table_set_col_spacings(GTK_TABLE(table), COL_SPACING); row = 0, col = 2; + label = gtk_label_new(_("Background")); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0); + gtk_widget_show(label); + gtk_table_attach(GTK_TABLE(table), label, col, col+1, row, row+1, GTK_FILL, 0, 0, 0); + col++; + + separator->separator_background = create_background_combo(_("Separator")); + gtk_widget_show(separator->separator_background); + gtk_table_attach(GTK_TABLE(table), separator->separator_background, col, col+1, row, row+1, GTK_FILL, 0, 0, 0); + col++; + + row++, col = 2; label = gtk_label_new(_("Foreground color")); gtk_misc_set_alignment(GTK_MISC(label), 0, 0); gtk_widget_show(label);

@@ -4476,7 +4488,6 @@ gtk_color_button_set_use_alpha(GTK_COLOR_BUTTON(separator->separator_color), TRUE);

gtk_widget_show(separator->separator_color); gtk_table_attach(GTK_TABLE(table), separator->separator_color, col, col+1, row, row+1, GTK_FILL, 0, 0, 0); col++; - gtk_tooltips_set_tip(tooltips, separator->separator_color, _("Specifies separator's color."), NULL); row++, col = 2; label = gtk_label_new(_("Separator style"));

@@ -4489,7 +4500,6 @@ separator->separator_style = gtk_spin_button_new_with_range(0, 6, 1);

gtk_widget_show(separator->separator_style); gtk_table_attach(GTK_TABLE(table), separator->separator_style, col, col+1, row, row+1, GTK_FILL, 0, 0, 0); col++; - gtk_tooltips_set_tip(tooltips, separator->separator_style, _("Specifies separator's appearance. 0 is empty/invisible separator."), NULL); change_paragraph(parent); }
M src/tint2conf/properties_rw.csrc/tint2conf/properties_rw.c

@@ -115,10 +115,10 @@ }

int r; int b; - gboolean sideTop; - gboolean sideBottom; - gboolean sideLeft; - gboolean sideRight; + gboolean sideTop; + gboolean sideBottom; + gboolean sideLeft; + gboolean sideRight; GdkColor *fillColor; int fillOpacity; GdkColor *borderColor;

@@ -149,26 +149,26 @@ bgColBorderOpacityPress, &borderOpacityPress,

bgColBorderWidth, &b, bgColCornerRadius, &r, bgColText, &text, - bgColBorderSidesTop, &sideTop, - bgColBorderSidesBottom, &sideBottom, - bgColBorderSidesLeft, &sideLeft, - bgColBorderSidesRight, &sideRight, + bgColBorderSidesTop, &sideTop, + bgColBorderSidesBottom, &sideBottom, + bgColBorderSidesLeft, &sideLeft, + bgColBorderSidesRight, &sideRight, -1); fprintf(fp, "# Background %d: %s\n", index, text ? text : ""); fprintf(fp, "rounded = %d\n", r); fprintf(fp, "border_width = %d\n", b); - char sides[10]; - sides[0] = '\0'; - if (sideTop) - strcat(sides, "T"); - if (sideBottom) - strcat(sides, "B"); - if (sideLeft) - strcat(sides, "L"); - if (sideRight) - strcat(sides, "R"); - fprintf(fp, "border_sides = %s\n", sides); + char sides[10]; + sides[0] = '\0'; + if (sideTop) + strcat(sides, "T"); + if (sideBottom) + strcat(sides, "B"); + if (sideLeft) + strcat(sides, "L"); + if (sideRight) + strcat(sides, "R"); + fprintf(fp, "border_sides = %s\n", sides); config_write_color(fp, "background_color", *fillColor, fillOpacity); config_write_color(fp, "border_color", *borderColor, borderOpacity);

@@ -679,6 +679,7 @@

Separator *separator = &g_array_index(separators, Separator, i); fprintf(fp, "separator = new\n"); + fprintf(fp, "separator_background_id = %d\n", gtk_combo_box_get_active(GTK_COMBO_BOX(separator->separator_background))); GdkColor color; gtk_color_button_get_color(GTK_COLOR_BUTTON(separator->separator_color), &color); config_write_color(fp,

@@ -769,7 +770,7 @@

// Similar to BSD checksum, except we skip the first line (metadata) unsigned short checksum_txt(FILE *f) { - unsigned int checksum = 0; + unsigned int checksum = 0; fseek(f, 0, SEEK_SET); // Skip the first line

@@ -780,13 +781,13 @@ } while (c != EOF && c != '\n');

while ((c = getc(f)) != EOF) { // Rotate right - checksum = (checksum >> 1) + ((checksum & 1) << 15); - // Update checksum + checksum = (checksum >> 1) + ((checksum & 1) << 15); + // Update checksum checksum += c; // Truncate to 16 bits - checksum &= 0xffff; - } - return checksum; + checksum &= 0xffff; + } + return checksum; } void config_save_file(const char *path) {

@@ -966,16 +967,16 @@ background_force_update();

read_border_color_press = 1; } else if (strcmp(key, "border_sides") == 0) { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(background_border_sides_top), - strchr(value, 't') || strchr(value, 'T')); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(background_border_sides_bottom), - strchr(value, 'b') || strchr(value, 'B')); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(background_border_sides_left), - strchr(value, 'l') || strchr(value, 'L')); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(background_border_sides_right), - strchr(value, 'r') || strchr(value, 'R')); - background_force_update(); - } + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(background_border_sides_top), + strchr(value, 't') || strchr(value, 'T')); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(background_border_sides_bottom), + strchr(value, 'b') || strchr(value, 'B')); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(background_border_sides_left), + strchr(value, 'l') || strchr(value, 'L')); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(background_border_sides_right), + strchr(value, 'r') || strchr(value, 'R')); + background_force_update(); + } /* Panel */ else if (strcmp(key, "panel_size") == 0) { extract_values(value, &value1, &value2, &value3);

@@ -1699,6 +1700,10 @@

/* Separator */ else if (strcmp(key, "separator") == 0) { separator_create_new(); + } + else if (strcmp(key, "separator_background_id") == 0) { + int id = background_index_safe(atoi(value)); + gtk_combo_box_set_active(GTK_COMBO_BOX(separator_get_last()->separator_background), id); } else if (strcmp(key, "separator_color") == 0) { extract_values(value, &value1, &value2, &value3);
M tint2.filestint2.files

@@ -208,3 +208,5 @@ themes/vertical-light-opaque.tint2rc

themes/vertical-light-transparent.tint2rc themes/vertical-neutral-icons.tint2rc doc/tint2.md +src/separator/separator.c +src/separator/separator.h