diff -urp icewm-1.3.7/src/wmtaskbar.cc icewm-1.3.7a/src/wmtaskbar.cc --- icewm-1.3.7/src/wmtaskbar.cc 2010-10-31 15:09:36.000000000 +0100 +++ icewm-1.3.7a/src/wmtaskbar.cc 2011-08-28 22:13:26.000000000 +0200 @@ -897,12 +897,12 @@ void TaskBar::updateWMHints() { void TaskBar::handleCrossing(const XCrossingEvent &crossing) { - if (crossing.serial != ignore_enternotify_hack && crossing.serial != ignore_enternotify_hack + 1) + if (crossing.serial != ignore_enternotify_hack && (crossing.serial != ignore_enternotify_hack + 1 || crossing.detail != NotifyVirtual)) { if (crossing.type == EnterNotify /* && crossing.mode != NotifyNormal */) { fEdgeTrigger->stopHide(); } else if (crossing.type == LeaveNotify /* && crossing.mode != NotifyNormal */) { - if (crossing.detail != NotifyInferior && crossing.detail != NotifyVirtual && crossing.detail != NotifyAncestor) { + if (crossing.detail != NotifyInferior && !(crossing.detail == NotifyVirtual && crossing.mode == NotifyGrab) && !(crossing.detail == NotifyAncestor && crossing.mode != NotifyNormal)) { MSG(("taskbar hide: %d", crossing.detail)); fEdgeTrigger->startHide(); } else {