void event_expose (XEvent *e)
{
- 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;
- }
+ Panel *panel;
+ panel = get_panel(e->xany.window);
+ if (!panel) return;
+ // TODO : one panel_refresh per panel ?
+ panel_refresh = 1;
}
}
-void event_timer()
-{
-}
-
-
void dnd_message(XClientMessageEvent *e)
{
Panel *panel = get_panel(e->window);
int main (int argc, char *argv[])
{
XEvent e;
- fd_set fd_set;
+ fd_set fdset;
int x11_fd, i;
Panel *panel;
GSList *it;
sigemptyset(&empty_mask);
while (1) {
+ if (panel_refresh) {
+ panel_refresh = 0;
+
+ 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];
+
+ if (panel->temp_pmap) XFreePixmap(server.dsp, panel->temp_pmap);
+ panel->temp_pmap = XCreatePixmap(server.dsp, server.root_win, panel->area.width, panel->area.height, server.depth);
+
+ refresh(&panel->area);
+ XCopyArea(server.dsp, panel->temp_pmap, panel->main_win, server.gc, 0, 0, panel->area.width, panel->area.height, 0, 0);
+ }
+ XFlush (server.dsp);
+
+ if (refresh_systray) {
+ refresh_systray = 0;
+ panel = (Panel*)systray.area.panel;
+ // tint2 doen't draw systray icons. it just redraw background.
+ XSetWindowBackgroundPixmap (server.dsp, panel->main_win, panel->temp_pmap);
+ // force icon's refresh
+ refresh_systray_icon();
+ }
+ }
+
// thanks to AngryLlama for the timer
// Create a File Description Set containing x11_fd, and every timer_fd
- FD_ZERO (&fd_set);
- FD_SET (x11_fd, &fd_set);
+ FD_ZERO (&fdset);
+ FD_SET (x11_fd, &fdset);
int max_fd = x11_fd;
timer_iter = timer_list;
while (timer_iter) {
timer = timer_iter->data;
max_fd = timer->id > max_fd ? timer->id : max_fd;
- FD_SET(timer->id, &fd_set);
+ FD_SET(timer->id, &fdset);
timer_iter = timer_iter->next;
}
// Wait for X Event or a Timer
- if (pselect(max_fd+1, &fd_set, 0, 0, 0, &empty_mask) > 0) {
+ if (pselect(max_fd+1, &fdset, 0, 0, 0, &empty_mask) > 0) {
while (XPending (server.dsp)) {
XNextEvent(server.dsp, &e);
event_expose(&e);
break;
+ case MapNotify:
+ if (e.xany.window == g_tooltip.window)
+ tooltip_update();
+ break;
+
+
case PropertyNotify:
event_property_notify(&e);
break;
break;
case UnmapNotify:
case DestroyNotify:
- if (!systray.area.on_screen)
+ if (e.xany.window == g_tooltip.window || !systray.area.on_screen)
break;
for (it = systray.list_icons; it; it = g_slist_next(it)) {
if (((TrayWindow*)it->data)->id == e.xany.window) {
timer_iter = timer_list;
while (timer_iter) {
timer = timer_iter->data;
- if (FD_ISSET(timer->id, &fd_set)) {
+ if (FD_ISSET(timer->id, &fdset)) {
uint64_t dummy;
read(timer->id, &dummy, sizeof(uint64_t));
timer->_callback();
cleanup ();
return 0;
}
-
- if (panel_refresh) {
- panel_refresh = 0;
-
- 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];
-
- if (panel->temp_pmap) XFreePixmap(server.dsp, panel->temp_pmap);
- panel->temp_pmap = XCreatePixmap(server.dsp, server.root_win, panel->area.width, panel->area.height, server.depth);
-
- refresh(&panel->area);
- XCopyArea(server.dsp, panel->temp_pmap, panel->main_win, server.gc, 0, 0, panel->area.width, panel->area.height, 0, 0);
- }
- XFlush (server.dsp);
-
- if (refresh_systray) {
- refresh_systray = 0;
- panel = (Panel*)systray.area.panel;
- // tint2 doen't draw systray icons. it just redraw background.
- XSetWindowBackgroundPixmap (server.dsp, panel->main_win, panel->temp_pmap);
- // force icon's refresh
- refresh_systray_icon();
- }
- }
}
}