projects
/
mikachu
/
openbox.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
deb0aa7
)
ignore fake generated enters if they are in the serial-ignore-range too
author
Dana Jansens
<danakj@orodu.net>
Sun, 3 Feb 2008 14:29:05 +0000
(09:29 -0500)
committer
Dana Jansens
<danakj@orodu.net>
Sun, 3 Feb 2008 23:37:45 +0000
(18:37 -0500)
openbox/event.c
patch
|
blob
|
history
diff --git
a/openbox/event.c
b/openbox/event.c
index
caf6f5a
..
7e2766f
100644
(file)
--- a/
openbox/event.c
+++ b/
openbox/event.c
@@
-92,7
+92,7
@@
static void event_handle_dock(ObDock *s, XEvent *e);
static void event_handle_dockapp(ObDockApp *app, XEvent *e);
static void event_handle_client(ObClient *c, XEvent *e);
static void event_handle_user_input(ObClient *client, XEvent *e);
static void event_handle_dockapp(ObDockApp *app, XEvent *e);
static void event_handle_client(ObClient *c, XEvent *e);
static void event_handle_user_input(ObClient *client, XEvent *e);
-static gboolean is_enter_focus_event_ignored(
XEvent *e
);
+static gboolean is_enter_focus_event_ignored(
gulong serial
);
static void event_ignore_enter_range(gulong start, gulong end);
static void focus_delay_dest(gpointer data);
static void event_ignore_enter_range(gulong start, gulong end);
static void focus_delay_dest(gpointer data);
@@
-795,6
+795,12
@@
void event_enter_client(ObClient *client)
{
g_assert(config_focus_follow);
{
g_assert(config_focus_follow);
+ if (is_enter_focus_event_ignored(event_curserial)) {
+ ob_debug_type(OB_DEBUG_FOCUS, "Ignoring enter event with serial %lu\n"
+ "on client 0x%x", event_curserial, client->window);
+ return;
+ }
+
if (client_enter_focusable(client) && client_can_focus(client)) {
if (config_focus_delay) {
ObFocusDelayData *data;
if (client_enter_focusable(client) && client_can_focus(client)) {
if (config_focus_delay) {
ObFocusDelayData *data;
@@
-1039,8
+1045,7
@@
static void event_handle_client(ObClient *client, XEvent *e)
if (e->xcrossing.mode == NotifyGrab ||
e->xcrossing.mode == NotifyUngrab ||
/*ignore enters when we're already in the window */
if (e->xcrossing.mode == NotifyGrab ||
e->xcrossing.mode == NotifyUngrab ||
/*ignore enters when we're already in the window */
- e->xcrossing.detail == NotifyInferior ||
- is_enter_focus_event_ignored(e))
+ e->xcrossing.detail == NotifyInferior)
{
ob_debug_type(OB_DEBUG_FOCUS,
"%sNotify mode %d detail %d serial %lu on %lx "
{
ob_debug_type(OB_DEBUG_FOCUS,
"%sNotify mode %d detail %d serial %lu on %lx "
@@
-1959,26
+1964,21
@@
void event_end_ignore_all_enters(gulong start)
event_ignore_enter_range(start, NextRequest(ob_display)-1);
}
event_ignore_enter_range(start, NextRequest(ob_display)-1);
}
-static gboolean is_enter_focus_event_ignored(
XEvent *e
)
+static gboolean is_enter_focus_event_ignored(
gulong serial
)
{
GSList *it, *next;
{
GSList *it, *next;
- g_assert(e->type == EnterNotify &&
- !(e->xcrossing.mode == NotifyGrab ||
- e->xcrossing.mode == NotifyUngrab ||
- e->xcrossing.detail == NotifyInferior));
-
for (it = ignore_serials; it; it = next) {
ObSerialRange *r = it->data;
next = g_slist_next(it);
for (it = ignore_serials; it; it = next) {
ObSerialRange *r = it->data;
next = g_slist_next(it);
- if ((glong)(
e->xany.
serial - r->end) > 0) {
+ if ((glong)(serial - r->end) > 0) {
/* past the end */
ignore_serials = g_slist_delete_link(ignore_serials, it);
g_free(r);
}
/* past the end */
ignore_serials = g_slist_delete_link(ignore_serials, it);
g_free(r);
}
- else if ((glong)(
e->xany.
serial - r->start) >= 0)
+ else if ((glong)(serial - r->start) >= 0)
return TRUE;
}
return FALSE;
return TRUE;
}
return FALSE;