fix(autofill): la barrette reste au-dessus, et se traine depuis ses boutons
TOPMOST n'est pas un rang, c'est une bande. La barre des taches y est aussi, et cliquer son fond vide la remonte en tete de cette bande : une barrette posee dessus passe DERRIERE et semble avoir disparu. Le meme battement de 200 ms la repose. Traine depuis un bouton : les boutons sont subclasses, et DragDetect tranche entre clic et glissement en respectant le seuil regle par l'utilisateur. Sur un clic, on envoie BN_CLICKED a la place du bouton - DragDetect a avale le WM_LBUTTONUP, lui rendre la main le laisserait enfonce pour toujours. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -206,6 +206,18 @@ Détails :
|
||||
détruirait le `NOACTIVATE` qui la fait fonctionner. Deux portes vers ce menu —
|
||||
`WM_NCRBUTTONUP` (le fond est non-client à cause de `HTCAPTION`) et
|
||||
`WM_CONTEXTMENU` (remonté par les boutons).
|
||||
- **`TOPMOST` n'est pas un rang, c'est une bande** : la barre des tâches y est
|
||||
aussi, et cliquer son fond vide la remonte en tête de cette bande — une
|
||||
barrette posée dessus passe **derrière** et semble avoir disparu. Le même
|
||||
battement de 200 ms la repose (`SetWindowPos … SWP_NOMOVE or SWP_NOSIZE`) ;
|
||||
sans mouvement ni taille à changer, l'appel ne repeint rien.
|
||||
- **Traîner depuis un bouton** : les boutons sont subclassés (`GWLP_WNDPROC`,
|
||||
une seule proc d'origine — même classe). Sur `WM_LBUTTONDOWN`, **`DragDetect`**
|
||||
tranche entre clic et glissement en respectant le seuil réglé par
|
||||
l'utilisateur. Glissement → `ReleaseCapture` + `WM_SYSCOMMAND, SC_MOVE or
|
||||
HTCAPTION`. Clic → on **envoie `BN_CLICKED` à la place du bouton** : DragDetect
|
||||
a avalé le `WM_LBUTTONUP`, lui rendre la main le laisserait enfoncé pour
|
||||
toujours. Le clic droit n'est pas intercepté, donc le menu d'opacité tient.
|
||||
- Le survol est **sondé** par un `SetTimer` de 200 ms, pas par `TrackMouseEvent` :
|
||||
avec quatre fenêtres enfants, passer de la barrette à un bouton envoie déjà un
|
||||
`WM_MOUSELEAVE` au parent. Comparer le curseur au rectangle ignore ce piège.
|
||||
|
||||
Reference in New Issue
Block a user