diff --git a/ChangeLog b/ChangeLog index 1beddfb8..511278ba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -22,6 +22,9 @@ Changes since version 0.51.2: - remember window shortcuts after restart - change edge resistance to account for panels and stuffs - narrower menus +- fixed auto raise/lower behaviour of clip for docked icons that have their + own window + Changes since version 0.51.1: ............................. diff --git a/src/dock.c b/src/dock.c index 00fc49ab..42a9c484 100644 --- a/src/dock.c +++ b/src/dock.c @@ -80,6 +80,8 @@ extern void DestroyDockAppSettingsPanel(); extern void ShowDockAppSettingsPanel(WAppIcon *aicon); +extern XContext wWinContext; + extern Cursor wCursor[WCUR_LAST]; extern WPreferences wPreferences; @@ -3932,9 +3934,29 @@ clipEnterNotify(WObjDescriptor *desc, XEvent *event) static void clipLeave(WDock *dock) { + XEvent event; + WObjDescriptor *desc = NULL; + if (!dock || dock->type!=WM_CLIP) return; + if (XCheckTypedEvent(dpy, EnterNotify, &event)!=False) { + if (XFindContext(dpy, event.xcrossing.window, wWinContext, + (XPointer *)&desc)!=XCNOENT + && desc && desc->parent_type==WCLASS_DOCK_ICON + && ((WAppIcon*)desc->parent)->dock + && ((WAppIcon*)desc->parent)->dock->type==WM_CLIP) { + /* We didn't left the Clip yet */ + XPutBackEvent(dpy, &event); + return; + } + + XPutBackEvent(dpy, &event); + } else { + /* We entered a withdrawn window, so we're still in Clip */ + return; + } + if (dock->auto_raise_magic) { WMDeleteTimerHandler(dock->auto_raise_magic); dock->auto_raise_magic = NULL;