diff --git a/delphi-backend/Source/PM.Bridge.pas b/delphi-backend/Source/PM.Bridge.pas index caf9e80..d6781d6 100644 --- a/delphi-backend/Source/PM.Bridge.pas +++ b/delphi-backend/Source/PM.Bridge.pas @@ -1214,6 +1214,7 @@ var LRect: TRect; LPt: TPoint; LHit: HWND; + LPid: DWORD; begin Result := False; if not GetWindowRect(AWnd, LRect) then Exit; @@ -1221,7 +1222,14 @@ begin LPt.Y := (LRect.Top + LRect.Bottom) div 2; LHit := WindowFromPoint(LPt); if LHit = 0 then Exit; - Result := (LHit <> AWnd) and (GetAncestor(LHit, GA_ROOT) <> AWnd); + if (LHit = AWnd) or (GetAncestor(LHit, GA_ROOT) = AWnd) then Exit; + // NOS PROPRES FENETRES NE RECOUVRENT PAS. L'info-bulle d'un bouton s'affiche + // PAR-DESSUS la barrette : la compter comme un recouvrement faisait + // repasser la barrette devant (NOTOPMOST puis TOPMOST - elle disparaissait + // un instant), ce qui fermait l'info-bulle, qui se rouvrait sous la souris + // immobile... en boucle. + GetWindowThreadProcessId(LHit, @LPid); + Result := LPid <> GetCurrentProcessId; end; procedure LazyForceToTop(AWnd: HWND);