fixed issue 46 and 59 : urgent task
git-svn-id: http://tint2.googlecode.com/svn/trunk@85 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
This commit is contained in:
parent
26ab02d533
commit
41b8b3aa53
8 changed files with 48 additions and 23 deletions
|
@ -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
|
2009-06-04
|
||||||
- patch by dmitry.medvinsky : right/left clic command
|
- patch by dmitry.medvinsky : right/left clic command
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,16 @@ static char buf_time[40];
|
||||||
static char buf_date[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()
|
void init_clock()
|
||||||
{
|
{
|
||||||
Panel *panel;
|
Panel *panel;
|
||||||
|
@ -58,13 +68,7 @@ void init_clock()
|
||||||
clock->area.panel = panel;
|
clock->area.panel = panel;
|
||||||
clock->area._draw_foreground = draw_clock;
|
clock->area._draw_foreground = draw_clock;
|
||||||
clock->area._resize = resize_clock;
|
clock->area._resize = resize_clock;
|
||||||
|
init_precision();
|
||||||
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;
|
|
||||||
|
|
||||||
// update clock to force update (-time_precision)
|
// update clock to force update (-time_precision)
|
||||||
struct timeval stv;
|
struct timeval stv;
|
||||||
|
@ -72,6 +76,8 @@ void init_clock()
|
||||||
time_clock.tv_sec = stv.tv_sec - time_precision;
|
time_clock.tv_sec = stv.tv_sec - time_precision;
|
||||||
time_clock.tv_sec -= time_clock.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.posy = panel->area.pix.border.width + panel->area.paddingy;
|
||||||
clock->area.height = panel->area.height - (2 * clock->area.posy);
|
clock->area.height = panel->area.height - (2 * clock->area.posy);
|
||||||
clock->area.resize = 1;
|
clock->area.resize = 1;
|
||||||
|
|
|
@ -36,6 +36,7 @@ extern char *clock_rclick_command;
|
||||||
|
|
||||||
// initialize clock : y position, precision, ...
|
// initialize clock : y position, precision, ...
|
||||||
void init_clock();
|
void init_clock();
|
||||||
|
void init_precision();
|
||||||
|
|
||||||
void draw_clock (void *obj, cairo_t *c, int active);
|
void draw_clock (void *obj, cairo_t *c, int active);
|
||||||
|
|
||||||
|
|
|
@ -43,8 +43,9 @@ int panel_mode;
|
||||||
int panel_position;
|
int panel_position;
|
||||||
int panel_refresh;
|
int panel_refresh;
|
||||||
|
|
||||||
Task *task_active = 0;
|
Task *task_active;
|
||||||
Task *task_drag = 0;
|
Task *task_drag;
|
||||||
|
Task *task_urgent;
|
||||||
|
|
||||||
Panel *panel1 = 0;
|
Panel *panel1 = 0;
|
||||||
int nb_panel;
|
int nb_panel;
|
||||||
|
@ -136,6 +137,9 @@ void cleanup_panel()
|
||||||
{
|
{
|
||||||
if (!panel1) return;
|
if (!panel1) return;
|
||||||
|
|
||||||
|
task_active = 0;
|
||||||
|
task_drag = 0;
|
||||||
|
task_urgent = 0;
|
||||||
cleanup_systray();
|
cleanup_systray();
|
||||||
cleanup_taskbar();
|
cleanup_taskbar();
|
||||||
|
|
||||||
|
|
|
@ -43,6 +43,7 @@ extern int panel_refresh;
|
||||||
|
|
||||||
extern Task *task_active;
|
extern Task *task_active;
|
||||||
extern Task *task_drag;
|
extern Task *task_drag;
|
||||||
|
extern Task *task_urgent;
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
|
|
@ -111,6 +111,7 @@ void draw_systray(void *obj, cairo_t *c, int active)
|
||||||
XMoveResizeWindow(server.dsp, traywin->id, traywin->x, traywin->y, icon_size, icon_size);
|
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
|
// ceci intervertie les fonds : le premier icone prend le fond du dernier
|
||||||
// le dernier prend le fond de l'avant 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
|
// resize our window so that the new window can fit in it
|
||||||
//fix_geometry();
|
//fix_geometry();
|
||||||
|
@ -124,7 +125,6 @@ void draw_systray(void *obj, cairo_t *c, int active)
|
||||||
// show the window
|
// show the window
|
||||||
XMapRaised(server.dsp, traywin->id);
|
XMapRaised(server.dsp, traywin->id);
|
||||||
}
|
}
|
||||||
XSetWindowBackgroundPixmap (server.dsp, panel->main_win, systray.area.pix.pmap);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
35
src/tint.c
35
src/tint.c
|
@ -302,6 +302,10 @@ void event_property_notify (XEvent *e)
|
||||||
}
|
}
|
||||||
Window w1 = window_get_active ();
|
Window w1 = window_get_active ();
|
||||||
Task *t = task_get_task(w1);
|
Task *t = task_get_task(w1);
|
||||||
|
if (task_urgent == t) {
|
||||||
|
init_precision();
|
||||||
|
task_urgent = 0;
|
||||||
|
}
|
||||||
if (!t) {
|
if (!t) {
|
||||||
Window w2;
|
Window w2;
|
||||||
if (XGetTransientForHint(server.dsp, w1, &w2) != 0)
|
if (XGetTransientForHint(server.dsp, w1, &w2) != 0)
|
||||||
|
@ -358,9 +362,8 @@ void event_property_notify (XEvent *e)
|
||||||
// Demand attention
|
// Demand attention
|
||||||
else if (at == server.atom._NET_WM_STATE) {
|
else if (at == server.atom._NET_WM_STATE) {
|
||||||
if (window_is_urgent (win)) {
|
if (window_is_urgent (win)) {
|
||||||
printf(" event_property_notify _NET_WM_STATE_DEMANDS_ATTENTION\n");
|
task_urgent = tsk;
|
||||||
}
|
time_precision = 1;
|
||||||
else {
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (at == server.atom.WM_STATE) {
|
else if (at == server.atom.WM_STATE) {
|
||||||
|
@ -473,25 +476,31 @@ void event_configure_notify (Window win)
|
||||||
void event_timer()
|
void event_timer()
|
||||||
{
|
{
|
||||||
struct timeval stv;
|
struct timeval stv;
|
||||||
|
int i;
|
||||||
if (!time1_format) return;
|
|
||||||
|
|
||||||
if (gettimeofday(&stv, 0)) return;
|
if (gettimeofday(&stv, 0)) return;
|
||||||
|
|
||||||
if (abs(stv.tv_sec - time_clock.tv_sec) < time_precision) 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
|
// update battery
|
||||||
if (panel1[0].battery.area.on_screen)
|
if (panel1[0].battery.area.on_screen) {
|
||||||
update_battery(&battery_state);
|
update_battery(&battery_state);
|
||||||
|
for (i=0 ; i < nb_panel ; i++)
|
||||||
|
panel1[i].battery.area.resize = 1;
|
||||||
|
}
|
||||||
|
|
||||||
// update clock
|
// update clock
|
||||||
time_clock.tv_sec = stv.tv_sec;
|
if (time1_format) {
|
||||||
time_clock.tv_sec -= time_clock.tv_sec % time_precision;
|
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++)
|
||||||
for (i=0 ; i < nb_panel ; i++) {
|
panel1[i].clock.area.resize = 1;
|
||||||
panel1[i].clock.area.resize = 1;
|
|
||||||
panel1[i].battery.area.resize = 1;
|
|
||||||
}
|
}
|
||||||
panel_refresh = 1;
|
panel_refresh = 1;
|
||||||
}
|
}
|
||||||
|
|
BIN
src/tint2
BIN
src/tint2
Binary file not shown.
Loading…
Reference in a new issue