diff -c src/xfwm4-4.8.2/src/client.c src/xfwm4-4.8.2/src-patched/client.c *** src/xfwm4-4.8.2/src/client.c 2011-10-08 14:22:47.262094891 +0200 --- src/xfwm4-4.8.2/src-patched/client.c 2011-10-08 14:26:57.032162276 +0200 *************** *** 3778,3783 **** --- 3778,3789 ---- screen_info = c->screen_info; + if ((c->button_status[button] == BUTTON_STATE_PRELIGHT) && + clientGetButtonPixmap (c, button, PRELIGHT)) + { + return (PRELIGHT); + } + if (state == INACTIVE) { return (state); *************** *** 3789,3800 **** return (PRESSED); } - if ((c->button_status[button] == BUTTON_STATE_PRELIGHT) && - clientGetButtonPixmap (c, button, PRELIGHT)) - { - return (PRELIGHT); - } - return (ACTIVE); } --- 3795,3800 ---- diff -c src/xfwm4-4.8.2/src/events.c src/xfwm4-4.8.2/src-patched/events.c *** src/xfwm4-4.8.2/src/events.c 2011-09-22 21:12:33.000000000 +0200 --- src/xfwm4-4.8.2/src-patched/events.c 2011-10-08 14:26:57.032162276 +0200 *************** *** 1382,1404 **** clientClearDelayedFocus (); } } ! if (c == clientGetFocus ()) { ! for (b = 0; b < BUTTON_COUNT; b++) { ! if (MYWINDOW_XWINDOW(c->buttons[b]) == ev->window) { ! if (!xfwmPixmapNone(clientGetButtonPixmap(c, b, PRELIGHT))) ! { ! c->button_status[b] = BUTTON_STATE_PRELIGHT; ! need_redraw = TRUE; ! } } } ! if (need_redraw) ! { ! frameQueueDraw (c, FALSE); ! } } /* No need to process the event any further */ --- 1382,1401 ---- clientClearDelayedFocus (); } } ! for (b = 0; b < BUTTON_COUNT; b++) { ! if (MYWINDOW_XWINDOW(c->buttons[b]) == ev->window) { ! if (!xfwmPixmapNone(clientGetButtonPixmap(c, b, PRELIGHT))) { ! c->button_status[b] = BUTTON_STATE_PRELIGHT; ! need_redraw = TRUE; } } ! } ! if (need_redraw) ! { ! frameQueueDraw (c, FALSE); } /* No need to process the event any further */