Panel *panel = get_panel(e->xany.window);
if (!panel) return;
+ if (wm_menu) {
+ if ((e->xbutton.x < panel->area.paddingxlr) || (e->xbutton.x > panel->area.width-panel->area.paddingxlr) || (e->xbutton.y < panel->area.paddingy) || (e->xbutton.y > panel->area.paddingy+panel->g_taskbar.height)) {
+ // forward the click to the desktop window (thanks conky)
+ XUngrabPointer(server.dsp, e->xbutton.time);
+ e->xbutton.window = server.root_win;
+ XSetInputFocus(server.dsp, e->xbutton.window, RevertToParent, e->xbutton.time);
+ XSendEvent(server.dsp, e->xbutton.window, False, ButtonPressMask, e);
+ return;
+ }
+ }
+
+ if (e->xbutton.button != 1) return;
+
if (panel_mode != MULTI_DESKTOP) {
// drag and drop disabled
XLowerWindow (server.dsp, panel->main_win);
GSList *l0;
Taskbar *tskbar;
int x = e->xbutton.x;
- //int y = e->xbutton.y; // unused
for (l0 = panel->area.list; l0 ; l0 = l0->next) {
tskbar = l0->data;
if (!tskbar->area.on_screen) continue;
void event_button_release (XEvent *e)
{
- // TODO: convert event_button_press(int x, int y) to area->event_button_press()
-
Panel *panel = get_panel(e->xany.window);
if (!panel) return;
+ if (wm_menu) {
+ if ((e->xbutton.x < panel->area.paddingxlr) || (e->xbutton.x > panel->area.width-panel->area.paddingxlr) || (e->xbutton.y < panel->area.paddingy) || (e->xbutton.y > panel->area.paddingy+panel->g_taskbar.height)) {
+ // forward the click to the desktop window (thanks conky)
+ e->xbutton.window = server.root_win;
+ XSendEvent(server.dsp, e->xbutton.window, False, ButtonReleaseMask, e);
+ return;
+ }
+ }
+
int action = TOGGLE_ICONIFY;
int x = e->xbutton.x;
//int y = e->xbutton.y; // unused
}
// Window list
else if (at == server.atom._NET_CLIENT_LIST) {
+ //printf("Window list\n");
task_refresh_tasklist();
panel_refresh = 1;
}
// Change active
else if (at == server.atom._NET_ACTIVE_WINDOW) {
+ //printf("Change active\n");
GSList *l0;
if (task_active) {
for (i=0 ; i < nb_panel ; i++) {
}
Window w1 = window_get_active ();
Task *t = task_get_task(w1);
- if (task_urgent == t) {
- init_precision();
- task_urgent = 0;
- }
if (!t) {
Window w2;
if (XGetTransientForHint(server.dsp, w1, &w2) != 0)
if (w2) t = task_get_task(w2);
}
+ if (task_urgent == t) {
+ init_precision();
+ task_urgent = 0;
+ }
if (t) {
for (i=0 ; i < nb_panel ; i++) {
for (j=0 ; j < panel1[i].nb_desktop ; j++) {
switch (e.type) {
case ButtonPress:
- //printf("ButtonPress %lx\n", e.xproperty.window);
- if (e.xbutton.button == 1) event_button_press (&e);
+ event_button_press (&e);
break;
case ButtonRelease: