Bonjour,
j'ai un petit pb de curseur visible dans Writer.
LibreOffice 3.5.6-2 sous Win7 64b et 4.1.4-2 sous Debian Wheezy Xfce
Contexte :
un document Writer composé de plusieurs tableaux consécutifs. Dans certaines cellules se trouvent des cases à cocher (ancrées comme des caractères).
Besoin :
je voudrais que, quand l'utilisateur a coché la case, le curseur visible se positionne à la fin du paragraphe qui suit la case cochée. De cette manière, l'utilisateur pourrait continuer la saisie sans avoir à agir sur la souris.
L'exemple est là : http://cjoint.com/?0GynhetAxf7
Symptôme :
La procédure _SetViewCursor(), appelée à travers UpdateChecked(), s'exécute bien mais le curseur visible n'est pas placé au "bon" endroit (à droite de la flèche). Il n'est même pas placé du tout.
Je constate que :
-- L24 : l'instruction oTextCur.gotoEndOfParagraph(False) fonctionne (si je passe True, la sélection est ok)
-- L25 : un XRay sur oVCur après l'affectation renvoie des infos cohérentes (propriété Cell en particulier)
-- l'ajout éventuel d'une instruction oVCur.setVisible(True) est sans effet
-- après exécution de la macro, la case reste entourée de pointillés, ce qui pourrait suggérer que le focus reste sur la case à cocher, donc que le code de la macro est ensuite parasité par un comportement interne de Writer qui refocalise sur la case.
La macro (UpdateChecked()) est associée à l'évènement "Statut de l'élément modifié" de la case à cocher. Par curiosité, j'ai essayé d'autres évènements (bouton de la souris relâché, à la perte du focus), sans plus de succès... Il me semble, a priori, que l'évènement "Statut de l'élément modifié" est celui qui convient : dans d'autres environnements (p.ex : Delphi), cet évènement rend la main à l'application après que le composant ait terminé toute action interne.
NB : actuellement la macro s'exécute quel que soit l'état de la case, cochée ou non ; c'est pour des tests donc sans importance ici.
Des idées ?
Merci d'avance. Amicalement,