all repos — tint2 @ a22041ce0943221ad5f4f622a4d909a80f535e05

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

*fix* removed warnings
*fix* removed unneeded code (backwards compatibility to tint2-0.6 and unneccesary XSetWindowsBackground)
*fix* better heuristicMask algorithm



git-svn-id: http://tint2.googlecode.com/svn/trunk@363 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
Andreas.Fink85 Andreas.Fink85@121b4492-b84c-0410-8b4c-0d4edfb3f3cc
commit

a22041ce0943221ad5f4f622a4d909a80f535e05

parent

fc1ebc04b69234ff3b4b39f912d643db65d7cf1b

4 files changed, 20 insertions(+), 97 deletions(-)

jump to
M src/config.csrc/config.c

@@ -58,8 +58,6 @@

// -------------------------------------------------- // backward compatibility static int old_task_icon_size; -static int bg_task; -static int bg_task_active; // detect if it's an old config file // ==1 static int old_config_file;

@@ -599,86 +597,6 @@ panel_strut_policy = STRUT_MINIMUM;

} else if (strcmp(key, "autohide_height") == 0) panel_autohide_height = atoi(value); - - - // QUESTION: Do we still need backwards compatibility??? - /* Read tint-0.6 config for backward compatibility */ - else if (strcmp (key, "panel_mode") == 0) { - if (strcmp (value, "single_desktop") == 0) panel_mode = SINGLE_DESKTOP; - else panel_mode = MULTI_DESKTOP; - } - else if (strcmp (key, "panel_rounded") == 0) { - Background bg; - bg.border.rounded = atoi(value); - g_array_append_val(backgrounds, bg); - } - else if (strcmp (key, "panel_border_width") == 0) { - g_array_index(backgrounds, Background, backgrounds->len-1).border.width = atoi(value); - } - else if (strcmp (key, "panel_background_color") == 0) { - Background* bg = &g_array_index(backgrounds, Background, backgrounds->len-1); - extract_values(value, &value1, &value2, &value3); - get_color (value1, bg->back.color); - if (value2) bg->back.alpha = (atoi (value2) / 100.0); - else bg->back.alpha = 0.5; - } - else if (strcmp (key, "panel_border_color") == 0) { - Background* bg = &g_array_index(backgrounds, Background, backgrounds->len-1); - extract_values(value, &value1, &value2, &value3); - get_color (value1, bg->border.color); - if (value2) bg->border.alpha = (atoi (value2) / 100.0); - else bg->border.alpha = 0.5; - } - else if (strcmp (key, "task_text_centered") == 0) - panel_config.g_task.centered = atoi (value); - else if (strcmp (key, "task_margin") == 0) { - panel_config.g_taskbar.area.paddingxlr = 0; - panel_config.g_taskbar.area.paddingx = atoi (value); - } - else if (strcmp (key, "task_icon_size") == 0) - old_task_icon_size = atoi (value); - else if (strcmp (key, "task_rounded") == 0) { - Background bg; - bg.border.rounded = atoi(value); - g_array_append_val(backgrounds, bg); - g_array_append_val(backgrounds, bg); - bg_task = backgrounds->len-2; - bg_task_active = backgrounds->len-1; - } - else if (strcmp (key, "task_background_color") == 0) { - Background* bg = &g_array_index(backgrounds, Background, bg_task); - extract_values(value, &value1, &value2, &value3); - get_color (value1, bg->back.color); - if (value2) bg->back.alpha = (atoi (value2) / 100.0); - else bg->back.alpha = 0.5; - } - else if (strcmp (key, "task_active_background_color") == 0) { - Background* bg = &g_array_index(backgrounds, Background, bg_task_active); - extract_values(value, &value1, &value2, &value3); - get_color (value1, bg->back.color); - if (value2) bg->back.alpha = (atoi (value2) / 100.0); - else bg->back.alpha = 0.5; - } - else if (strcmp (key, "task_border_width") == 0) { - Background* bg = &g_array_index(backgrounds, Background, bg_task); - bg->border.width = atoi (value); - bg = &g_array_index(backgrounds, Background, bg_task_active); - bg->border.width = atoi (value); - } - else if (strcmp (key, "task_border_color") == 0) { - Background* bg = &g_array_index(backgrounds, Background, bg_task); - extract_values(value, &value1, &value2, &value3); - get_color (value1, bg->border.color); - if (value2) bg->border.alpha = (atoi (value2) / 100.0); - else bg->border.alpha = 0.5; - } - else if (strcmp (key, "task_active_border_color") == 0) { - Background* bg = &g_array_index(backgrounds, Background, bg_task_active); - extract_values(value, &value1, &value2, &value3); - get_color (value1, bg->border.color); - if (value2) bg->border.alpha = (atoi (value2) / 100.0); - else bg->border.alpha = 0.5; - } else fprintf(stderr, "tint2 : invalid option \"%s\", correct your config file\n", key);
M src/systray/systraybar.csrc/systray/systraybar.c

@@ -113,7 +113,7 @@ Panel *panel = sysbar->area.panel;

TrayWindow *traywin; GSList *l; int count, icon_size; - int icons_per_column, icons_per_row, marging; + int icons_per_column=1, icons_per_row=1, marging=0; if (panel_horizontal) icon_size = sysbar->area.height;
M src/tint.csrc/tint.c

@@ -677,13 +677,6 @@ while (1) {

if (panel_refresh) { panel_refresh = 0; - // QUESTION: do we need this first refresh_systray, because we check refresh_systray once again later... - // ANSWER: yes, panel->temp_pmap is freeded in the loop. - // we change background to None to avoid tray icon using freeded pixmap. - if (refresh_systray) { - panel = (Panel*)systray.area.panel; - XSetWindowBackgroundPixmap (server.dsp, panel->main_win, None); - } for (i=0 ; i < nb_panel ; i++) { panel = &panel1[i];

@@ -799,7 +792,7 @@ }

break; case ClientMessage: - ev = &e; + ev = &e.xclient; if (ev->data.l[1] == server.atom._NET_WM_CM_S0) { if (ev->data.l[2] == None) // TODO: Stop real_transparency
M src/util/common.csrc/util/common.c

@@ -241,15 +241,27 @@

void createHeuristicMask(DATA32* data, int w, int h) { + // first we need to find the mask color, therefore we check all 4 edge pixel and take the color which + // appears most often (we only need to check three edges, the 4th is implicitly clear) + unsigned int topLeft = data[0], topRight = data[w-1], bottomLeft = data[w*h-w], bottomRight = data[w*h-1]; + int max = (topLeft == topRight) + (topLeft == bottomLeft) + (topLeft == bottomRight); + int maskPos = 0; + if ( max < (topRight == topLeft) + (topRight == bottomLeft) + (topRight == bottomRight) ) { + max = (topRight == topLeft) + (topRight == bottomLeft) + (topRight == bottomRight); + maskPos = w-1; + } + if ( max < (bottomLeft == topRight) + (bottomLeft == topLeft) + (bottomLeft == bottomRight) ) + maskPos = w*h-w; + + // now mask out every pixel which has the same color as the edge pixels unsigned char* udata = (unsigned char*)data; - int b = udata[0]; - int g = udata[1]; - int r = udata[2]; + unsigned char b = udata[4*maskPos]; + unsigned char g = udata[4*maskPos+1]; + unsigned char r = udata[4*maskPos+1]; int i; for (i=0; i<h*w; ++i) { - if ( abs(b-*udata)<5 && abs(g-*(udata+1))<5 && abs(r-*(udata+2))<5 ) { - *(udata+3) = 0; - } + if ( b-udata[0] == 0 && g-udata[1] == 0 && r-udata[2] == 0 ) + udata[3] = 0; udata += 4; } }