all repos — tint2 @ 41b8b3aa537ce4f8d1660099bd7a8255df574c0f

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

fixed issue 46 and 59 : urgent task

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

41b8b3aa537ce4f8d1660099bd7a8255df574c0f

parent

26ab02d533483b9bf1a8ad9623ebacd445d86359

M ChangeLogChangeLog

@@ -1,3 +1,7 @@

+2009-06-05 +- fixed issue 46 and 59 : urgent task + limitation : just one urgent task at a time + 2009-06-04 - patch by dmitry.medvinsky : right/left clic command
M src/clock/clock.csrc/clock/clock.c

@@ -44,6 +44,16 @@ static char buf_time[40];

static char buf_date[40]; +void init_precision() +{ + if (!time1_format) time_precision = 60; + else if (strchr(time1_format, 'S')) time_precision = 1; + else if (strchr(time1_format, 'T')) time_precision = 1; + else if (strchr(time1_format, 'r')) time_precision = 1; + else time_precision = 60; +} + + void init_clock() { Panel *panel;

@@ -58,19 +68,15 @@ clock->area.parent = panel;

clock->area.panel = panel; clock->area._draw_foreground = draw_clock; clock->area._resize = resize_clock; - - if (!clock->area.on_screen) continue; - - if (strchr(time1_format, 'S')) time_precision = 1; - else if (strchr(time1_format, 'T')) time_precision = 1; - else if (strchr(time1_format, 'r')) time_precision = 1; - else time_precision = 60; + init_precision(); // update clock to force update (-time_precision) struct timeval stv; gettimeofday(&stv, 0); time_clock.tv_sec = stv.tv_sec - time_precision; time_clock.tv_sec -= time_clock.tv_sec % time_precision; + + if (!clock->area.on_screen) continue; clock->area.posy = panel->area.pix.border.width + panel->area.paddingy; clock->area.height = panel->area.height - (2 * clock->area.posy);
M src/clock/clock.hsrc/clock/clock.h

@@ -36,6 +36,7 @@

// initialize clock : y position, precision, ... void init_clock(); +void init_precision(); void draw_clock (void *obj, cairo_t *c, int active);
M src/panel.csrc/panel.c

@@ -43,8 +43,9 @@ int panel_mode;

int panel_position; int panel_refresh; -Task *task_active = 0; -Task *task_drag = 0; +Task *task_active; +Task *task_drag; +Task *task_urgent; Panel *panel1 = 0; int nb_panel;

@@ -136,6 +137,9 @@ void cleanup_panel()

{ if (!panel1) return; + task_active = 0; + task_drag = 0; + task_urgent = 0; cleanup_systray(); cleanup_taskbar();
M src/panel.hsrc/panel.h

@@ -43,6 +43,7 @@ extern int panel_refresh;

extern Task *task_active; extern Task *task_drag; +extern Task *task_urgent; typedef struct {
M src/systray/systraybar.csrc/systray/systraybar.c

@@ -111,6 +111,7 @@ // position and size the icon window

XMoveResizeWindow(server.dsp, traywin->id, traywin->x, traywin->y, icon_size, icon_size); // ceci intervertie les fonds : le premier icone prend le fond du dernier // le dernier prend le fond de l'avant dernier, ... + XSetWindowBackgroundPixmap (server.dsp, panel->main_win, systray.area.pix.pmap); // resize our window so that the new window can fit in it //fix_geometry();

@@ -124,7 +125,6 @@

// show the window XMapRaised(server.dsp, traywin->id); } - XSetWindowBackgroundPixmap (server.dsp, panel->main_win, systray.area.pix.pmap); }
M src/tint.csrc/tint.c

@@ -302,6 +302,10 @@ task_active = 0;

} Window w1 = window_get_active (); Task *t = task_get_task(w1); + if (task_urgent == t) { + init_precision(); + task_urgent = 0; + } if (!t) { Window w2; if (XGetTransientForHint(server.dsp, w1, &w2) != 0)

@@ -358,9 +362,8 @@ }

// Demand attention else if (at == server.atom._NET_WM_STATE) { if (window_is_urgent (win)) { - printf(" event_property_notify _NET_WM_STATE_DEMANDS_ATTENTION\n"); - } - else { + task_urgent = tsk; + time_precision = 1; } } else if (at == server.atom.WM_STATE) {

@@ -473,25 +476,31 @@

void event_timer() { struct timeval stv; - - if (!time1_format) return; + int i; if (gettimeofday(&stv, 0)) return; if (abs(stv.tv_sec - time_clock.tv_sec) < time_precision) return; + // urgent task + if (task_urgent) { + task_urgent->area.is_active = !task_urgent->area.is_active; + task_urgent->area.redraw = 1; + } + // update battery - if (panel1[0].battery.area.on_screen) + if (panel1[0].battery.area.on_screen) { update_battery(&battery_state); + for (i=0 ; i < nb_panel ; i++) + panel1[i].battery.area.resize = 1; + } // update clock - time_clock.tv_sec = stv.tv_sec; - time_clock.tv_sec -= time_clock.tv_sec % time_precision; - - int i; - for (i=0 ; i < nb_panel ; i++) { - panel1[i].clock.area.resize = 1; - panel1[i].battery.area.resize = 1; + if (time1_format) { + time_clock.tv_sec = stv.tv_sec; + time_clock.tv_sec -= time_clock.tv_sec % time_precision; + for (i=0 ; i < nb_panel ; i++) + panel1[i].clock.area.resize = 1; } panel_refresh = 1; }