From f5e352d74671d7fc5516e792d158dfe72bc3dd52 Mon Sep 17 00:00:00 2001 From: Mikael Magnusson Date: Sat, 2 Jun 2007 16:01:17 +0000 Subject: [PATCH] some cleanup, including removing select in case i want to revert it this is it! --- rspanel.c | 109 +++++++++++++++++++----------------------------------- 1 file changed, 39 insertions(+), 70 deletions(-) diff --git a/rspanel.c b/rspanel.c index 6708120..f85d428 100644 --- a/rspanel.c +++ b/rspanel.c @@ -304,7 +304,7 @@ int find_desktop(Window win) return generic_get_int(win, atoms[_NET_WM_DESKTOP]); } -int is_hidden(Window win) +int find_state(Window win, atom_t atom) { unsigned long *data; int ret = 0; @@ -312,9 +312,8 @@ int is_hidden(Window win) data = get_prop_data(win, atoms[_NET_WM_STATE], XA_ATOM, &num); if (data) { - while (num) { - num--; - if ((data[num]) == atoms[_NET_WM_STATE_SKIP_TASKBAR]) + while (num--) { + if ((data[num]) == atoms[atom]) ret = 1; } XFree(data); @@ -322,40 +321,20 @@ int is_hidden(Window win) return ret; } -int is_iconified(Window win) +/* this naming is very confusing :) */ +int is_hidden(Window win) { - unsigned long *data; - int ret = 0; - int num; + return find_state(win, _NET_WM_STATE_SKIP_TASKBAR); +} - data = get_prop_data(win, atoms[_NET_WM_STATE], XA_ATOM, &num); - if (data) { - while (num) { - num--; - if ((data[num]) == atoms[_NET_WM_STATE_HIDDEN]) - ret = 1; - } - XFree(data); - } - return ret; +int is_iconified(Window win) +{ + return find_state(win, _NET_WM_STATE_HIDDEN); } int is_shaded(Window win) { - unsigned long *data; - int ret = 0; - int num; - - data = get_prop_data(win, atoms[_NET_WM_STATE], XA_ATOM, &num); - if (data) { - while (num) { - num--; - if ((data[num]) == atoms[_NET_WM_STATE_SHADED]) - ret = 1; - } - XFree(data); - } - return ret; + return find_state(win, _NET_WM_STATE_SHADED); } int get_current_desktop(void) @@ -415,11 +394,6 @@ void add_task(Window win, int focus) } } -void gui_sync(void) -{ - XSync(dd, False); -} - void set_prop(Window win, Atom at, Atom type, long val) { XChangeProperty(dd, win, at, type, 32, @@ -442,6 +416,7 @@ Window gui_create_taskbar(void) /* parent */ root_win, /* x */ 0, /* y */ scr_height - WINHEIGHT, +/* XXX Maybe just use scr_width here? */ /* width */ WINWIDTH, /* height */ WINHEIGHT, /* border */ 0, @@ -774,7 +749,8 @@ void netwm_action(Window win, atom_t atom, Time time, long l) xev.data.l[3] = 2; } - XSendEvent(dd, root_win, False, SubstructureNotifyMask|SubstructureRedirectMask, (XEvent *)&xev); + XSendEvent(dd, root_win, False, SubstructureNotifyMask + |SubstructureRedirectMask, (XEvent *)&xev); } #ifdef PAGER @@ -787,6 +763,7 @@ void switch_desk(int new_desk, Time time) netwm_action(None, _NET_CURRENT_DESKTOP, time, new_desk); } +/* This doesn't work with pango yet */ void pager_draw_button(int x, int num) { char label; @@ -1022,6 +999,7 @@ void handle_press(int x, int y, int button, Time time) tk = tb.task_list; while (tk) { /* clicked on a task button */ + /* XXX Make this configureable */ if (x > tk->pos_x && x < tk->pos_x + tk->width) { switch (button) { case 1: @@ -1122,6 +1100,7 @@ void handle_propertynotify(Window win, Atom at) return; } + /* XXX make this work when SKIP_TASKBAR is toggled too */ tk = find_task(win); if (!tk) return; @@ -1176,8 +1155,6 @@ main(int argc, char *argv[]) #endif { XEvent ev; - fd_set fd; - int xfd; dd = XOpenDisplay(NULL); if (!dd) @@ -1196,38 +1173,30 @@ main(int argc, char *argv[]) XInternAtoms(dd, atom_names, ATOM_COUNT, False, atoms); gui_init(); - bzero(&tb, sizeof(struct taskbar)); + memset(&tb, 0, sizeof(tb)); tb.win = gui_create_taskbar(); - xfd = ConnectionNumber(dd); - gui_sync(); + XSync(dd, False); - while (1) { - FD_ZERO(&fd); - FD_SET(xfd, &fd); - select(xfd + 1, &fd, 0, 0, 0); - - while (XPending(dd)) { - XNextEvent(dd, &ev); - switch (ev.type) { - case ButtonPress: - handle_press(ev.xbutton.x, ev.xbutton.y, ev.xbutton.button, ev.xbutton.time); - break; - case DestroyNotify: - del_task(ev.xdestroywindow.window); - /* fall through */ - case Expose: - gui_draw_taskbar(); - break; - case PropertyNotify: - handle_propertynotify(ev.xproperty.window, ev.xproperty.atom); - break; - case FocusIn: - if (ev.xfocus.mode != NotifyGrab) - handle_focusin(ev.xfocus.window); - break; - /*default: - printf ("unknown evt type: %d\n", ev.type); */ - } + while (XNextEvent(dd, &ev) == Success) { + switch (ev.type) { + case ButtonPress: + handle_press(ev.xbutton.x, ev.xbutton.y, ev.xbutton.button, ev.xbutton.time); + break; + case DestroyNotify: + del_task(ev.xdestroywindow.window); + /* fall through */ + case Expose: + gui_draw_taskbar(); + break; + case PropertyNotify: + handle_propertynotify(ev.xproperty.window, ev.xproperty.atom); + break; + case FocusIn: + if (ev.xfocus.mode != NotifyGrab) + handle_focusin(ev.xfocus.window); + break; + /*default: + printf ("unknown evt type: %d\n", ev.type); */ } } -- 2.39.2