feat(autofill): la barrette revient allumee si elle l'etait

Pref DPAPI lazyOn, reprise par RestoreLazyBar depuis FormCreate - apres
le theme, parce que la barrette se peint elle-meme, et apres le cablage
de OnTrayRestore, dont depend son bouton Open.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
r-zakarya
2026-08-27 14:26:18 +01:00
parent 0604cca148
commit 35d0d8ddf3
3 changed files with 23 additions and 1 deletions
+5
View File
@@ -187,6 +187,11 @@ Détails :
(elle finit par se poser sur le champ qu'elle remplit, il faut pouvoir la
pousser). `WM_ERASEBKGND` peint le fond — la classe `TPUtilWindow`
d'`AllocateHWnd` n'a **pas** de brosse de fond.
- **L'état allumé/éteint est retenu** en pref DPAPI (`lazyOn`) et repris au
démarrage par `RestoreLazyBar`, appelé depuis `FormCreate` **après**
`ApplyTitleBarTheme` et après le câblage de `OnTrayRestore` : la barrette se
peint elle-même (il lui faut le thème) et son bouton *Open* passe par cet
événement.
- Position : coin bas-droit de la *work area* au premier lancement, puis
**retenue** en pref DPAPI (`lazyPos`, `'x,y'`), écrite sur `WM_EXITSIZEMOVE`
(une écriture par déplacement, pas une par pixel parcouru). Elle n'est reprise
+15 -1
View File
@@ -252,8 +252,12 @@ type
ARestoreAfter: Boolean = False; AClearFirst: Boolean = True): Boolean;
property SecureClipboard: TSecureClipboard read FSecureClipboard;
property TrayAdded: Boolean read FTrayAdded;
// Show or hide the lazy strip. Idempotent.
// Show or hide the lazy strip. Idempotent, and remembered across launches.
procedure SetLazyBar(AOn: Boolean);
// Re-allume la barrette si elle l'etait au dernier arret. A appeler une
// fois l'hote pret : le bouton Open a besoin de OnTrayRestore, et la
// peinture a besoin du theme.
procedure RestoreLazyBar;
function LazyBarVisible: Boolean;
property AutofillRegistered: Boolean read FAutofillRegistered;
// Per-slot outcome of the last SetAutofillHotkeys — lets the host name
@@ -418,6 +422,10 @@ const
// Coin haut-gauche retenu, 'x,y'. Meme raison que l'opacite d'etre une pref
// DPAPI : la barrette s'allume parfois coffre ferme.
LAZY_POS_KEY = 'lazyPos';
// Barrette allumee ou non au dernier arret. Pref DPAPI comme les deux autres :
// elle doit revenir AVANT toute ouverture de coffre, et localStorage est vide
// a chaque lancement (le port ephemere change d'origine).
LAZY_ON_KEY = 'lazyOn';
LAZY_W = 298;
LAZY_H = 40;
@@ -1296,6 +1304,11 @@ begin
AMsg.Result := DefWindowProc(FLazyWnd, AMsg.Msg, AMsg.WParam, AMsg.LParam);
end;
procedure TPMBridge.RestoreLazyBar;
begin
if GetPref(LAZY_ON_KEY) = '1' then SetLazyBar(True);
end;
procedure TPMBridge.SetLazyBar(AOn: Boolean);
// BS_OWNERDRAW : le systeme garde le suivi de la souris et l'etat enfonce,
@@ -1322,6 +1335,7 @@ var
LX, LY, LPosX, LPosY: Integer;
begin
if AOn = LazyBarVisible then Exit;
if AOn then SetPref(LAZY_ON_KEY, '1') else SetPref(LAZY_ON_KEY, '0');
if not AOn then
begin
+3
View File
@@ -312,6 +312,9 @@ begin
FBridge.OnQuickSearchHotkey := BridgeQuickSearchHotkey;
FBridge.RegisterAutofillHotkey; // Ctrl+Shift+L active from startup
FBridge.ApplyTitleBarTheme(True); // dark by default, JS may toggle later
// Apres le theme et apres OnTrayRestore : la barrette se peint elle-meme, et
// son bouton Open passe par cet evenement.
FBridge.RestoreLazyBar;
FAutofillTargetHWND := 0;
// Delayed-Navigate timer: TTMSFNCWebBrowser (WebView2 backend) ignores
// Navigate() calls until Edge Chromium finishes its async init (~1-2s).