diff options
author | Thomas Lübking <thomas.luebking@gmail.com> | 2016-07-02 12:55:08 (GMT) |
---|---|---|
committer | Mathias Gumz <akira@fluxbox.org> | 2016-07-03 07:29:07 (GMT) |
commit | abd5c9e478ac99f457a1df6292729b615f58bbda (patch) | |
tree | df99db3f2607eb7fdd849077f3ac827723b40f06 /src/FbTk | |
parent | 848875eb922c1ab2eb61d7f8750cdbeed2629b37 (diff) | |
download | fluxbox-abd5c9e478ac99f457a1df6292729b615f58bbda.zip fluxbox-abd5c9e478ac99f457a1df6292729b615f58bbda.tar.bz2 |
smart handling of NotifyUngrab crossing events
closing a keyboard driven popup had the sideeffect to return the focus
where the pointer is, regardless of whether that window had the focus
before (due to a NotifyUngrab crossing event), bug #597
This was resolved by simply ignoring NotifyUngrab mode crossings, but
that had the unfortunate sideeffects to break focus passing when the
mouse was actually moved (in a DnD operation, 730) or the focus shall be
passed on for strict mouse focus and a mouse triggered lower action (1012)
So instead we record the window that was last entered by a *real*
crossing and only ignore the NotifyUngrab event if this window didn't
change.
BUG: 1012
BUG: 730
CCBUG: 597
Diffstat (limited to 'src/FbTk')
-rw-r--r-- | src/FbTk/EventManager.cc | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/src/FbTk/EventManager.cc b/src/FbTk/EventManager.cc index ae52908..b9d5e98 100644 --- a/src/FbTk/EventManager.cc +++ b/src/FbTk/EventManager.cc | |||
@@ -179,9 +179,7 @@ void EventManager::dispatch(Window win, XEvent &ev, bool parent) { | |||
179 | evhand->exposeEvent(ev.xexpose); | 179 | evhand->exposeEvent(ev.xexpose); |
180 | break; | 180 | break; |
181 | case EnterNotify: | 181 | case EnterNotify: |
182 | if (ev.xcrossing.mode != NotifyGrab && | 182 | evhand->enterNotifyEvent(ev.xcrossing); |
183 | ev.xcrossing.mode != NotifyUngrab) | ||
184 | evhand->enterNotifyEvent(ev.xcrossing); | ||
185 | break; | 183 | break; |
186 | case LeaveNotify: | 184 | case LeaveNotify: |
187 | if (ev.xcrossing.mode != NotifyGrab && | 185 | if (ev.xcrossing.mode != NotifyGrab && |