all repos — tint2 @ dc43c1a563a91f4ebfdfd5a8854eb61e8a8f7983

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

add some HSB config

git-svn-id: http://tint2.googlecode.com/svn/trunk@158 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
lorthiois@bbsoft.fr lorthiois@bbsoft.fr@121b4492-b84c-0410-8b4c-0d4edfb3f3cc
commit

dc43c1a563a91f4ebfdfd5a8854eb61e8a8f7983

parent

fe2111c8fd8a5bd2fad00a1e037a57a0ba3512fd

6 files changed, 63 insertions(+), 30 deletions(-)

jump to
M ChangeLogChangeLog

@@ -1,3 +1,6 @@

+2009-08-28 +- add some HSB config + 2009-08-09 - add mouse action : maximize_restore - fixed issue 125
M src/config.csrc/config.c

@@ -511,6 +511,18 @@ get_color (value1, panel_config->g_task.font_active.color);

if (value2) panel_config->g_task.font_active.alpha = (atoi (value2) / 100.0); else panel_config->g_task.font_active.alpha = 0.1; } + else if (strcmp (key, "task_icon_hsb") == 0) { + extract_values(value, &value1, &value2, &value3); + panel_config->g_task.hue = atoi(value1); + panel_config->g_task.saturation = atoi(value2); + panel_config->g_task.brightness = atoi(value3); + } + else if (strcmp (key, "task_active_icon_hsb") == 0) { + extract_values(value, &value1, &value2, &value3); + panel_config->g_task.hue_active = atoi(value1); + panel_config->g_task.saturation_active = atoi(value2); + panel_config->g_task.brightness_active = atoi(value3); + } else if (strcmp (key, "task_background_id") == 0) { int id = atoi (value); Area *a = g_slist_nth_data(list_back, id);
M src/taskbar/task.csrc/taskbar/task.c

@@ -25,7 +25,6 @@ #include <stdio.h>

#include <stdlib.h> #include <string.h> #include <glib.h> -#include <Imlib2.h> #include "window.h" #include "task.h"

@@ -52,6 +51,7 @@ // allocate only one title and one icon

// even with task_on_all_desktop and with task_on_all_panel new_tsk.title = 0; new_tsk.icon_data = 0; + new_tsk.icon_data_active = 0; get_title(&new_tsk); get_icon(&new_tsk);

@@ -74,6 +74,7 @@ new_tsk2->win = new_tsk.win;

new_tsk2->desktop = new_tsk.desktop; new_tsk2->title = new_tsk.title; new_tsk2->icon_data = new_tsk.icon_data; + new_tsk2->icon_data_active = new_tsk.icon_data_active; new_tsk2->icon_width = new_tsk.icon_width; new_tsk2->icon_height = new_tsk.icon_height; tskbar->area.list = g_slist_append(tskbar->area.list, new_tsk2);

@@ -97,8 +98,10 @@ // even with task_on_all_desktop and with task_on_all_panel

//printf("remove_task %s %d\n", tsk->title, tsk->desktop); if (tsk->title) free (tsk->title); - if (tsk->icon_data) + if (tsk->icon_data) { free (tsk->icon_data); + free (tsk->icon_data_active); + } int i, j; Task *tsk2;

@@ -171,7 +174,8 @@ if (!panel->g_task.icon) return;

if (tsk->icon_data) { free (tsk->icon_data); - tsk->icon_data = 0; + free (tsk->icon_data_active); + tsk->icon_data = tsk->icon_data_active = 0; } tsk->area.redraw = 1;

@@ -203,44 +207,48 @@ }

else { // get Pixmap icon XWMHints *hints = XGetWMHints(server.dsp, tsk->win); - if (hints) { - if (hints->flags & IconPixmapHint && hints->icon_pixmap != 0) { - // get width, height and depth for the pixmap - Window root; - int icon_x, icon_y; - uint border_width, bpp; - uint icon_width, icon_height; + if (!hints) return; + if (hints->flags & IconPixmapHint && hints->icon_pixmap != 0) { + // get width, height and depth for the pixmap + Window root; + int icon_x, icon_y; + uint border_width, bpp; + uint icon_width, icon_height; - XGetGeometry(server.dsp, hints->icon_pixmap, &root, &icon_x, &icon_y, &icon_width, &icon_height, &border_width, &bpp); + XGetGeometry(server.dsp, hints->icon_pixmap, &root, &icon_x, &icon_y, &icon_width, &icon_height, &border_width, &bpp); - //printf(" get_pixmap\n"); - Imlib_Image img; - imlib_context_set_drawable(hints->icon_pixmap); - img = imlib_create_image_from_drawable(hints->icon_mask, 0, 0, icon_width, icon_height, 0); - imlib_context_set_image(img); - unsigned int *data = imlib_image_get_data(); - if (!data) { - return; - } - tsk->icon_width = imlib_image_get_width(); - tsk->icon_height = imlib_image_get_height(); - tsk->icon_data = malloc (tsk->icon_width * tsk->icon_height * sizeof (DATA32)); - memcpy (tsk->icon_data, data, tsk->icon_width * tsk->icon_height * sizeof (DATA32)); - imlib_free_image(); + //printf(" get_pixmap\n"); + Imlib_Image img; + imlib_context_set_drawable(hints->icon_pixmap); + img = imlib_create_image_from_drawable(hints->icon_mask, 0, 0, icon_width, icon_height, 0); + imlib_context_set_image(img); + unsigned int *data = imlib_image_get_data(); + if (!data) { + return; } - XFree(hints); + tsk->icon_width = imlib_image_get_width(); + tsk->icon_height = imlib_image_get_height(); + tsk->icon_data = malloc (tsk->icon_width * tsk->icon_height * sizeof (DATA32)); + memcpy (tsk->icon_data, data, tsk->icon_width * tsk->icon_height * sizeof (DATA32)); + imlib_free_image(); } + XFree(hints); } + + tsk->icon_data_active = malloc (tsk->icon_width * tsk->icon_height * sizeof (DATA32)); + memcpy (tsk->icon_data_active, tsk->icon_data, tsk->icon_width * tsk->icon_height * sizeof (DATA32)); + } void draw_task_icon (Task *tsk, int text_width, int active) { - if (tsk->icon_data == 0) return; + if (tsk->icon_data == 0 || tsk->icon_data_active == 0) return; Pixmap *pmap = (active == 0) ? (&tsk->area.pix.pmap) : (&tsk->area.pix_active.pmap); + unsigned int *icon_data = (active == 0) ? (tsk->icon_data) : (tsk->icon_data_active); - /* Find pos */ + // Find pos int pos_x; Panel *panel = (Panel*)tsk->area.panel; if (panel->g_task.centered) {

@@ -251,12 +259,12 @@ pos_x = (tsk->area.width - panel->g_task.icon_size1) / 2;

} else pos_x = panel->g_task.area.paddingxlr + panel->g_task.area.pix.border.width; - /* Render */ + // Render Imlib_Image icon; Imlib_Color_Modifier cmod; DATA8 red[256], green[256], blue[256], alpha[256]; - icon = imlib_create_image_using_data (tsk->icon_width, tsk->icon_height, tsk->icon_data); + icon = imlib_create_image_using_data (tsk->icon_width, tsk->icon_height, icon_data); imlib_context_set_image (icon); imlib_context_set_drawable (*pmap);

@@ -328,3 +336,4 @@ draw_task_icon (tsk, width, active);

} } +
M src/taskbar/task.hsrc/taskbar/task.h

@@ -9,6 +9,7 @@ #define TASK_H

#include <X11/Xlib.h> #include <pango/pangocairo.h> +#include <Imlib2.h> #include "common.h"

@@ -25,6 +26,8 @@ int icon_posy;

int icon_size1; int maximum_width; int maximum_height; + int hue, saturation, brightness; + int hue_active, saturation_active, brightness_active; // starting position for text ~ task_padding + task_border + icon_size double text_posx, text_posy;

@@ -43,7 +46,9 @@

// TODO: group task with list of windows here Window win; int desktop; + // ARGB icon unsigned int *icon_data; + unsigned int *icon_data_active; int icon_width; int icon_height; char *title;
M src/tint.csrc/tint.c

@@ -482,6 +482,7 @@ if (tsk->win == tsk2->win && tsk != tsk2) {

tsk2->icon_width = tsk->icon_width; tsk2->icon_height = tsk->icon_height; tsk2->icon_data = tsk->icon_data; + tsk2->icon_data_active = tsk->icon_data_active; tsk2->area.redraw = 1; } }
M src/util/common.hsrc/util/common.h

@@ -32,6 +32,9 @@ enum { NONE=0, CLOSE, TOGGLE, ICONIFY, SHADE, TOGGLE_ICONIFY, MAXIMIZE_RESTORE, MAXIMIZE, RESTORE };

#define ALLDESKTOP 0xFFFFFFFF +#define MIN3(x,y,z) ((y) <= (z) ? ((x) <= (y) ? (x) : (y)) : ((x) <= (z) ? (x) : (z))) +#define MAX3(x,y,z) ((y) >= (z) ? ((x) >= (y) ? (x) : (y)) : ((x) >= (z) ? (x) : (z))) + typedef struct config_border {