X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Ftint.c;h=c23f115aa6c6333ba63436d2da2e5848d49addaa;hb=501a421b337b6e08b58904b1c008bd05dbbf954b;hp=70c6f5bd314dd83df088f987c39211695c4a73d1;hpb=17d9dedc35b17eec00a2b11e776c122e1725fd64;p=chaz%2Ftint2 diff --git a/src/tint.c b/src/tint.c index 70c6f5b..c23f115 100644 --- a/src/tint.c +++ b/src/tint.c @@ -37,6 +37,7 @@ #include "taskbar.h" #include "systraybar.h" #include "panel.h" +#include "tooltip.h" void signal_handler(int sig) @@ -72,6 +73,7 @@ void init (int argc, char *argv[]) signal(SIGTERM, signal_handler); signal(SIGHUP, signal_handler); signal(SIGCHLD, SIG_IGN); // don't have to wait() after fork() + signal(SIGALRM, tooltip_sighandler); // set global data memset(&server, 0, sizeof(Server_global)); @@ -134,25 +136,26 @@ void cleanup() Taskbar *click_taskbar (Panel *panel, int x, int y) { - GSList *l0; - Taskbar *tskbar = NULL; + Taskbar *tskbar; + int i; + if (panel_horizontal) { - for (l0 = panel->area.list; l0 ; l0 = l0->next) { - tskbar = l0->data; + for (i=0; i < panel->nb_desktop ; i++) { + tskbar = &panel->taskbar[i]; if (!tskbar->area.on_screen) continue; if (x >= tskbar->area.posx && x <= (tskbar->area.posx + tskbar->area.width)) - break; + return tskbar; } } else { - for (l0 = panel->area.list; l0 ; l0 = l0->next) { - tskbar = l0->data; + for (i=0; i < panel->nb_desktop ; i++) { + tskbar = &panel->taskbar[i]; if (!tskbar->area.on_screen) continue; if (y >= tskbar->area.posy && y <= (tskbar->area.posy + tskbar->area.height)) - break; + return tskbar; } } - return tskbar; + return NULL; } @@ -586,12 +589,15 @@ void event_property_notify (XEvent *e) void event_expose (XEvent *e) { - Panel *panel; - - panel = get_panel(e->xany.window); - if (!panel) return; - // TODO : one panel_refresh per panel ? - panel_refresh = 1; + if (e->xany.window == g_tooltip.window) + tooltip_update(); + else { + Panel *panel; + panel = get_panel(e->xany.window); + if (!panel) return; + // TODO : one panel_refresh per panel ? + panel_refresh = 1; + } } @@ -708,7 +714,6 @@ int main (int argc, char *argv[]) GSList *it; init (argc, argv); - load_config: i = 0; init_config(); @@ -748,6 +753,7 @@ load_config: switch (e.type) { case ButtonPress: + tooltip_hide(); event_button_press (&e); break; @@ -755,6 +761,20 @@ load_config: event_button_release(&e); break; + case MotionNotify: { + Panel* panel = get_panel(e.xmotion.window); + Task* task = click_task(panel, e.xmotion.x, e.xmotion.y); + if (task) + tooltip_trigger_show(task, e.xmotion.x_root, e.xmotion.y_root); + else + tooltip_trigger_hide(); + break; + } + + case LeaveNotify: + tooltip_trigger_hide(); + break; + case Expose: event_expose(&e); break;