diff options
-rw-r--r-- | drv_X11.c | 11 |
1 files changed, 8 insertions, 3 deletions
@@ -204,7 +204,6 @@ static int drv_X11_keypad(const int num) error("%s: unknown keypad value %d", Name, num); } - debug("%s: key %c (0x%x) pressed", Name, num, num); return val; } @@ -300,29 +299,35 @@ static void drv_X11_timer( __attribute__ ((unused)) if (XCheckWindowEvent(dp, w, ExposureMask | ButtonPressMask | ButtonReleaseMask, &ev) == 0) return; + switch (ev.type) { + case Expose: drv_X11_expose(ev.xexpose.x, ev.xexpose.y, ev.xexpose.width, ev.xexpose.height); break; + case ButtonPress: if (ev.xbutton.x >= xoffset && ev.xbutton.x <= xoffset + btnwidth && ev.xbutton.y >= yoffset && ev.xbutton.y <= yoffset + buttons * btnheight + (buttons - 1) * pgap) { btn = (ev.xbutton.y - yoffset) / (btnheight + pgap) + 1; /* btn 0 is unused */ + debug("button %d pressed", btn); drv_X11_color(BG_COL); XFillRectangle(dp, w, gc, xoffset + 1, yoffset + (btn - 1) * (btnheight + pgap) + 1, btnwidth - 1, btnheight - 2 - 1); drv_generic_keypad_press(btn); } break; + case ButtonRelease: if (ev.xbutton.x >= xoffset && ev.xbutton.x <= xoffset + btnwidth && ev.xbutton.y >= yoffset && ev.xbutton.y <= yoffset + buttons * btnheight + (buttons - 1) * pgap) { + btn = (ev.xbutton.y - yoffset) / (btnheight + pgap) + 1; /* btn 0 is unused */ + debug("button %d released", btn); XClearArea(dp, w, xoffset, yoffset + (btn - 1) * (btnheight + pgap), btnwidth, btnheight - 2, 1 /* true */ ); - btn = (ev.xbutton.y - yoffset) / (btnheight + pgap) + 1; /* btn 0 is unused */ - info("%s: Button %d released", Name, btn); } break; + default: debug("%s: unknown XEvent %d", Name, ev.type); } |