fix(apk): 2 min de grace apres une copie, retour automatique decoche par defaut
Android ne laisse pas choisir l'app qui passe devant : moveTaskToBack ramenait souvent l'ecran d'accueil. Le coffre se reverrouillait aussi apres 30 s, avant qu'on revienne chercher le mot de passe. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+22
-3
@@ -87,6 +87,10 @@ const
|
||||
// pour aller coller un mot de passe ailleurs et revenir ; trop court pour
|
||||
// qu'un telephone repose ouvert.
|
||||
BACKGROUND_GRACE_SECONDS = 30;
|
||||
// APRES UNE COPIE, plus long : on part coller l'identifiant puis on revient
|
||||
// chercher le mot de passe, et 30 s n'y suffisaient pas - le coffre se
|
||||
// reverrouillait au milieu du geste.
|
||||
COPY_GRACE_SECONDS = 120;
|
||||
|
||||
// Duree minimale entre deux rafraichissements de fond.
|
||||
//
|
||||
@@ -157,6 +161,9 @@ type
|
||||
// Reglages d'usage (Settings -> Copy and search), vrais par defaut. Rien de
|
||||
// secret : un petit fichier en clair dans le dossier prive de l'app.
|
||||
FUiBackAfterCopy, FUiKbdOnSearch: Boolean;
|
||||
// Une copie vient d'etre faite : le prochain passage en arriere-plan a
|
||||
// droit au delai long (COPY_GRACE_SECONDS).
|
||||
FCopyGrace: Boolean;
|
||||
// La cle du verrouillage d'ecran est morte (schema retire ou reinitialise) :
|
||||
// on ouvre la copie de secours, scellee sous le mot de passe.
|
||||
FRecover: Boolean;
|
||||
@@ -1687,6 +1694,12 @@ begin
|
||||
end);
|
||||
end;
|
||||
|
||||
function GraceSeconds(AAfterCopy: Boolean): Integer;
|
||||
begin
|
||||
if AAfterCopy then Result := COPY_GRACE_SECONDS
|
||||
else Result := BACKGROUND_GRACE_SECONDS;
|
||||
end;
|
||||
|
||||
function UiPrefsPath: string;
|
||||
begin
|
||||
Result := System.IOUtils.TPath.Combine(System.IOUtils.TPath.GetHomePath, 'ui-prefs.txt');
|
||||
@@ -1696,12 +1709,15 @@ procedure TForm8.LoadUiPrefs;
|
||||
var
|
||||
LText: string;
|
||||
begin
|
||||
FUiBackAfterCopy := True;
|
||||
// Retour automatique DECOCHE par defaut : Android ne laisse pas choisir
|
||||
// l'app qui passe devant, et selon la facon dont Vault a ete ouvert c'est
|
||||
// l'ecran d'accueil qui revient, pas l'app d'avant.
|
||||
FUiBackAfterCopy := False;
|
||||
FUiKbdOnSearch := True;
|
||||
try
|
||||
if not TFile.Exists(UiPrefsPath) then Exit;
|
||||
LText := TFile.ReadAllText(UiPrefsPath);
|
||||
FUiBackAfterCopy := not LText.Contains('back=0');
|
||||
FUiBackAfterCopy := LText.Contains('back=1');
|
||||
FUiKbdOnSearch := not LText.Contains('kbd=0');
|
||||
except
|
||||
// Illisible : on garde les valeurs par defaut.
|
||||
@@ -3069,6 +3085,7 @@ begin
|
||||
// l'application.
|
||||
if not CopySensitive(AText) then Exit;
|
||||
FCopied := AText;
|
||||
FCopyGrace := True;
|
||||
// Reprogramme depuis zero : deux copies successives donnent au second
|
||||
// contenu son delai complet, pas le reste de celui du premier.
|
||||
FClipTimer.Enabled := False;
|
||||
@@ -3137,7 +3154,8 @@ begin
|
||||
if FVault.Count > 0 then
|
||||
begin
|
||||
if (FBackgroundAt > 0) and
|
||||
(SecondsBetween(Now, FBackgroundAt) >= BACKGROUND_GRACE_SECONDS) then
|
||||
(SecondsBetween(Now, FBackgroundAt) >=
|
||||
GraceSeconds(FCopyGrace)) then
|
||||
LockVault
|
||||
else
|
||||
// Retour a temps : on rend l'ecran quitte, pas un autre. La page a
|
||||
@@ -3153,6 +3171,7 @@ begin
|
||||
FWeb.Visible := True;
|
||||
end;
|
||||
FBackgroundAt := 0;
|
||||
FCopyGrace := False;
|
||||
// RETOUR DANS VAULT = on vient chercher un mot de passe : la recherche
|
||||
// est prete, texte precedent selectionne pour etre remplace.
|
||||
if FUiKbdOnSearch and (FWebView = 'list') and (FPlain <> '') then
|
||||
|
||||
Reference in New Issue
Block a user