@@ -656,7 +659,7 @@
apres qu'on a fini de les lire. -->
diff --git a/delphi-backend/Source/PM.Bridge.pas b/delphi-backend/Source/PM.Bridge.pas
index 88e2b83..5159227 100644
--- a/delphi-backend/Source/PM.Bridge.pas
+++ b/delphi-backend/Source/PM.Bridge.pas
@@ -485,6 +485,9 @@ const
LAZY_LITE_DOWN = $DDE3E3; // --bg-elev-3 #e3e3dd
LAZY_LITE_EDGE = $D7DCDC; // --border #dcdcd7
LAZY_LITE_INK = $1F1A1A; // --text #1a1a1f
+ // Survol : l'accent de l'app, comme les boutons de la fenetre principale.
+ LAZY_DARK_ACCENT = $D4B606; // --accent #06b6d4
+ LAZY_LITE_ACCENT = $B29108; // --accent #0891b2
// Dynamic WTS function pointers — wtsapi32.dll is not guaranteed on all
// Windows SKUs (e.g. minimal Server Core without Session Services), so
@@ -1131,6 +1134,8 @@ end;
// a retenir.
var
GLazyOldBtnProc: Pointer = nil;
+ // Bouton de la barrette sous la souris (0 = aucun) : il se peint a l'accent.
+ GLazyHotBtn: HWND = 0;
/// Un appui sur un bouton de la barrette : clic, ou debut de glissement ?
///
@@ -1163,6 +1168,26 @@ begin
MAKEWPARAM(GetDlgCtrlID(AWnd), BN_CLICKED), LPARAM(AWnd));
Exit(0);
end;
+ // LE SURVOL SE VOIT. Un bouton peint a la main n'a aucun etat "survole" :
+ // on le suit ici (entree par WM_MOUSEMOVE, sortie par WM_MOUSELEAVE demande a
+ // TrackMouseEvent) et on redessine les deux boutons concernes.
+ if (AMsg = WM_MOUSEMOVE) and (GLazyHotBtn <> AWnd) then
+ begin
+ if GLazyHotBtn <> 0 then InvalidateRect(GLazyHotBtn, nil, False);
+ GLazyHotBtn := AWnd;
+ InvalidateRect(AWnd, nil, False);
+ var LTrack: TTrackMouseEvent;
+ LTrack.cbSize := SizeOf(LTrack);
+ LTrack.dwFlags := TME_LEAVE;
+ LTrack.hwndTrack := AWnd;
+ LTrack.dwHoverTime := 0;
+ TrackMouseEvent(LTrack);
+ end
+ else if (AMsg = WM_MOUSELEAVE) and (GLazyHotBtn = AWnd) then
+ begin
+ GLazyHotBtn := 0;
+ InvalidateRect(AWnd, nil, False);
+ end;
Result := CallWindowProc(GLazyOldBtnProc, AWnd, AMsg, AWp, ALp);
end;
@@ -1187,6 +1212,18 @@ begin
LFace := LAZY_LITE_FACE; LEdge := LAZY_LITE_EDGE; LInk := LAZY_LITE_INK;
if (ADraw.itemState and ODS_SELECTED) <> 0 then LFace := LAZY_LITE_DOWN;
end;
+ // Survole : fond releve et encre a l'accent, cadre compris.
+ if ADraw.hwndItem = GLazyHotBtn then
+ begin
+ if FDarkTheme then
+ begin
+ LFace := LAZY_DARK_DOWN; LInk := LAZY_DARK_ACCENT; LEdge := LAZY_DARK_ACCENT;
+ end
+ else
+ begin
+ LFace := LAZY_LITE_DOWN; LInk := LAZY_LITE_ACCENT; LEdge := LAZY_LITE_ACCENT;
+ end;
+ end;
LBrush := CreateSolidBrush(LFace);
FillRect(ADraw.hDC, LRect, LBrush);