From e786d8fe142e933ac083a2f2c2435fa189f3a407 Mon Sep 17 00:00:00 2001 From: r-zakarya <82443831+r-zakarya@users.noreply.github.com> Date: Mon, 28 Sep 2026 18:25:25 +0100 Subject: [PATCH] fix(fillbar): l'info-bulle ne fait plus clignoter la barrette en boucle La remontee automatique voyait l'info-bulle d'un bouton - posee par-dessus la barrette - comme un recouvrement : NOTOPMOST puis TOPMOST, la barrette disparaissait un instant, l'info-bulle se fermait puis se rouvrait sous la souris immobile. Les fenetres de notre propre processus ne comptent plus. Co-Authored-By: Claude Opus 5.5 --- delphi-backend/Source/PM.Bridge.pas | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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);