if we get an event on a subwindow of root that we don't know about, but it is related to a press we received on the root window, then process the event (Fixes bug #3702)

This commit is contained in:
Dana Jansens 2010-01-15 15:07:42 -05:00
parent d3ca5d5b4c
commit 0e3ce9e407

View file

@ -719,22 +719,27 @@ static void event_process(const XEvent *ec, gpointer data)
#endif
if (e->type == ButtonPress || e->type == ButtonRelease) {
ObWindow *w;
static guint pressed = 0;
static Window pressed_win = None;
/* If the button press was on some non-root window, or was physically
on the root window, then process it */
on the root window... */
if (window != obt_root(ob_screen) ||
e->xbutton.subwindow == None)
e->xbutton.subwindow == None ||
/* ...or if it is related to the last button press we handled... */
pressed == e->xbutton.button ||
/* ...or it if it was physically on an openbox
internal window... */
((w = window_find(e->xbutton.subwindow)) &&
WINDOW_IS_INTERNAL(w)))
/* ...then process the event, otherwise ignore it */
{
used = event_handle_user_input(client, e);
}
/* Otherwise only process it if it was physically on an openbox
internal window */
else {
ObWindow *w;
if ((w = window_find(e->xbutton.subwindow)) &&
WINDOW_IS_INTERNAL(w))
{
used = event_handle_user_input(client, e);
if (e->type == ButtonPress) {
pressed = e->xbutton.button;
pressed_win = e->xbutton.subwindow;
}
}
}