- if (!data->any.button && data->any.c)
- event_ignore_all_queued_enters();
- else {
- /* we USED to create a fake enter event here, so that when you
- used a Press context, and the button was still down,
- you could still get enter events that weren't
- NotifyWhileGrabbed.
-
- only problem with this is that then the resulting focus
- change events can ALSO be NotifyWhileGrabbed. And that is
- bad. So, don't create fake enter events anymore. */
+ if (!data->any.button && data->any.c && !allow_enters) {
+ event_end_ignore_all_enters(ignore_start);
+ } else {
+ ObClient *c;
+
+ /* usually this is sorta redundant, but with a press action
+ that moves windows our from under the cursor, the enter
+ event will come as a GrabNotify which is ignored, so this
+ makes a fake enter event
+ */
+ if ((c = client_under_pointer()) && c != data->any.c)
+ event_enter_client(c);