fix(android): a fresh container per entry, and the filename left to read in its own direction
Row order alternated: correct on first open, upside down on the next. Neither the stacking convention nor an explicit Index stabilised it. Since the first population is reliable, there is never a second one - the scroll box is destroyed and rebuilt per entry. Costs one control; removes a whole class of oddities. The attachment size moved from the value into the caption. An Arabic filename followed by a latin size mixes two reading directions in one line, and FMX's bidirectional rendering makes a mess of it. Apart, each reads its own way. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+23
-9
@@ -470,11 +470,8 @@ begin
|
||||
FDetToast.TextSettings.Font.Size := 12;
|
||||
FDetToast.Opacity := 0.7;
|
||||
|
||||
// Defilant : une entree avec dix champs personnalises depasse l'ecran d'un
|
||||
// telephone, et les lignes ne sont connues qu'a l'ouverture.
|
||||
FDetBody := TVertScrollBox.Create(Self);
|
||||
FDetBody.Parent := FLayDetail;
|
||||
FDetBody.Align := TAlignLayout.Client;
|
||||
// Le corps defilant n'est PAS cree ici : il est recree a chaque ouverture
|
||||
// d'entree, voir ShowDetail.
|
||||
|
||||
FDetTitle := TLabel.Create(Self);
|
||||
FDetTitle.Parent := FLayDetail;
|
||||
@@ -542,10 +539,17 @@ begin
|
||||
if FTotpTimer <> nil then FTotpTimer.Enabled := False;
|
||||
FTotpValue := nil;
|
||||
FTotpCode := '';
|
||||
// Detruites explicitement plutot que par DeleteChildren : le conteneur est
|
||||
// un TVertScrollBox, dont les enfants comprennent ses propres barres.
|
||||
// LE CONTENEUR ENTIER EST DETRUIT, pas seulement ses lignes.
|
||||
//
|
||||
// Reutiliser le TVertScrollBox donnait un ordre d'affichage qui ALTERNAIT :
|
||||
// correct a la premiere ouverture, inverse a la suivante. Ni la convention
|
||||
// d'empilement ni un Index explicite ne l'ont stabilise. Puisque la premiere
|
||||
// population est fiable, on n'en fait jamais de seconde - un conteneur neuf
|
||||
// par entree. Ca coute la creation d'un controle, ca supprime une classe
|
||||
// entiere de bizarreries.
|
||||
for LRow in FRowCtls do LRow.Free;
|
||||
SetLength(FRowCtls, 0);
|
||||
FreeAndNil(FDetBody);
|
||||
SetLength(FRowValues, 0);
|
||||
SetLength(FRowShown, 0);
|
||||
SetLength(FRows, 0);
|
||||
@@ -570,6 +574,12 @@ var
|
||||
begin
|
||||
Touch;
|
||||
ClearDetailRows;
|
||||
// Conteneur neuf. Align=Client, donc il ne dispute sa place ni au titre
|
||||
// (Top) ni au pied (Bottom) : l'ordre de creation lui est indifferent.
|
||||
FDetBody := TVertScrollBox.Create(Self);
|
||||
FDetBody.Parent := FLayDetail;
|
||||
FDetBody.Align := TAlignLayout.Client;
|
||||
|
||||
FCurrent := FVault.Entry(AVaultIndex);
|
||||
FDetTitle.Text := FCurrent.Display;
|
||||
FDetToast.Text := '';
|
||||
@@ -594,9 +604,13 @@ begin
|
||||
// Les pieces jointes ne sont pas encore enregistrables sur le telephone,
|
||||
// mais taire leur existence serait pire : on saurait sur le poste qu'une
|
||||
// entree porte un document, et pas ici.
|
||||
// Taille dans l'INTITULE, pas collee au nom : un nom de fichier arabe suivi
|
||||
// d'une taille latine melange deux sens de lecture dans la meme ligne, et le
|
||||
// rendu bidirectionnel de FMX en fait n'importe quoi. Separes, chacun se
|
||||
// lit dans son sens.
|
||||
for I := 0 to High(FCurrent.Attachments) do
|
||||
Add('Piece jointe', FCurrent.Attachments[I].FileName + ' ' +
|
||||
HumanSize(FCurrent.Attachments[I].SizeBytes), False);
|
||||
Add('Piece jointe - ' + HumanSize(FCurrent.Attachments[I].SizeBytes),
|
||||
FCurrent.Attachments[I].FileName, False);
|
||||
|
||||
Add('Dossier / etiquettes', LMeta, False);
|
||||
// Le sous-type n'existe que pour les modeles (carte, cle SSH, serveur...) ;
|
||||
|
||||
Reference in New Issue
Block a user