web-dev-qa-db-fra.com

Position et mouvement du curseur dans l'entrée Bidi.

Dans le cas de l'entrée Bidi, où les langues des types RTL et LTR peuvent être mélangées ensemble, quelle devrait être la position du curseur? Et quel devrait être le mouvement du curseur avec Home et End boutons?

Au début, je pensais que le curseur devait toujours être placé là où le personnage suivant allait être placé. Je veux dire pour le prochain e le curseur devrait être comme (en supposant que | comme curseur) -

peac|سلام

Mais dans de nombreux endroits, c'est comme-

|peacسلام

Un avantage dans l'approche ultérieure est que, lorsque le mode de langue sera à nouveau RTL, la position du curseur sera la même. Alors que dans la première approche, il est passé à l'extrême gauche.

Et si les comportements de Home et End changement de clé avec RTL et LTR? Ou devrait-il rester le même?

4
Gulshan

J'ai toujours été d'avis qu'il devrait y avoir un minimum de sauts dans le texte lors du déplacement du curseur. Cela rend si déroutant de travailler avec un mélange de texte RTL et LTR.

C'est l'approche, même si elle n'est pas très standard, que je prendrais.

Commencez avec le curseur au début

|peacسلام

Si vous appuyez sur la flèche droite, déplacez le curseur vers la droite.

p|eacسلام
pe|acسلام
pea|cسلام
peac|سلام
peacسلا|م
peacسل|ام
peacس|لام
peacسلام|

Cela fait qu'il n'y a pas de saut et que les touches fléchées se comportent de manière sensée. Même si je lis de droite à gauche, la flèche gauche devrait toujours me déplacer vers la gauche dans le texte et la flèche droite devrait toujours me déplacer vers la droite dans le texte. La sélection de texte doit se comporter de la même manière.

Si j'ajoute un nouveau caractère, si je suis en mode LTR, il doit ajouter un caractère à droite de l'endroit où se trouve le curseur, puis déplacer le curseur à droite. Si je suis en mode RTL, il devrait ajouter un caractère à gauche de l'endroit où se trouve le curseur et déplacer le curseur à gauche.

Si j'appuie Enter, si le texte de cette ligne est aligné LTR, tout le texte à droite du curseur doit être déplacé vers la ligne suivante, et s'il est aligné RTL, le texte à gauche du curseur doit être déplacé vers la ligne suivante:

peacسلا|م
peacم //Enter is pressed
سلا

               pea|cسلام
Enter is pressed\\ cسلام
                    pea

Si la ligne est en mode LTR, Home et End devrait aller à l'extrême gauche et à l'extrême droite de la ligne, respectivement. En mode RTL, ils devraient plutôt aller à l'extrême droite et à l'extrême gauche.

2
Peter Olson