Envoyé par : Gregco
Date : 29/06/2007 10:33
Bonjour,
Voilà ma situation. J'ai un arbre (donnée qui proviennent d'un fichier rdf) avec 2 boutons pour monter ou décendre les rows dans l'arbre. Tout fonctionne impecable à part un détail.
Quand je clique sur un bouton mon arbre perd le focus et donc visuellement la ligne selectionnée (qui a le style -moz-tree-row(selected)) prend le style -moz-tree-row().
Qqun sait comment pallier au problème?
Pour information j'ai essayé par script de sélectionner une ligne dans l'arbre et de rendre le focus à l'arbre mais rien n'y fait.
arbre.view.selection.select(ligne);
arbre.focus();
D'avance merci
Gregco
Envoyé par : thefab
Date : 29/06/2007 13:25
Il faut empêcher le bouton d'avoir le focus (comme ça il ne pique pas le focus du tree). Je vois 2 solutions: un toolbarbutton (ne prend pas le focus sauf erreur) ou définir explicitement que ton bouton ne peut pas recevoir le focus (-moz-user-focus: ignore) avec le désavantage que ton bouton ne peut plus être atteint avec Tab.
Envoyé par : Gregco
Date : 29/06/2007 13:34
Effectivement les bouttons ne prennent pas le focus, mais bizarrement ma ligne se déselectionne quand même... moi pô comprendre :-(
++ Greg
Envoyé par : thefab
Date : 29/06/2007 13:40
Est-tu sur que la ligne est vraiment désélectionnée car je me souviens avoir eu un problème similaire ou la ligne ne semblait pas être sélectionnée mais c'était juste un problème de styles CSS.
Envoyé par : Chris93
Date : 29/06/2007 13:46
Salut,
Je procède de la façon suivante:
function selectNextNode(trv, next) { var curIndex=trv.view.selection.currentIndex; if (curIndex<0) return; curIndex = next ? curIndex+1 : curIndex-1; trv.view.selection.select(curIndex); trv.treeBoxObject.ensureRowIsVisible(curIndex); }
aucun soucis particulier. next est un boolean pour monter/descendre. ma fonction est appelée depuis des toolbarbuttons.
Envoyé par : Gregco
Date : 29/06/2007 13:58
J'ai viré mes styles css
treechildren::-moz-tree-row(){background-color:#FFFFFF; border-color:transparent;color: black;} treechildren::-moz-tree-row(odd) {background-color: #F4F4F4;} treechildren::-moz-tree-row(selected), treechildren::-moz-tree-row(current) {background-color:#454764; border-color:transparent;color: white;}
et j'ai laissé
button {-moz-user-focus: ignore;}
Le boutton ne reçoit pas le focus mais ma ligne ne reste pas selectionné. Par contre je suis tombé sur un truc bizarre lors des testes.
Pour voir quel élément été selectionné j'ai fait in bête
alert(document.commandDispatcher.focusedElement.tagName);
L'alert m'indique bien que mon tree a le focus et quand je clique sur "ok" la ligne se sélectionne correctement! J'ai donc enlevé mon alert... et là ça ne fonctionne plus :-(((
++ Greg
Envoyé par : Gregco
Date : 29/06/2007 14:01
J'ai essayé avec le arbre.treeBoxObject.ensureRowIsVisible(ligne);
sans réussite
Envoyé par : Christophe Charron
Date : 29/06/2007 14:15
Gregco a écrit:
...
L'alert m'indique bien que mon tree a le focus et
quand je clique sur "ok" la ligne se sélectionne
correctement! J'ai donc enlevé mon alert... et là
ça ne fonctionne plus :-(((
++
Greg
Pour faire des tests mettant en jeu le focus, il ne faut surtout pas utiliser alert qui fausse tout puisque c'est cette boîte qui prend le focus, donc la fait perdre à celle qui l'avait vraiment etc ...
Envoyé par : thefab
Date : 29/06/2007 15:08
dump() est ton ami...
Envoyé par : thefab
Date : 29/06/2007 15:12
Les styles CSS que j'utilise pour la ligne sélectionnée:
treechildren::-moz-tree-row(selected) { background-color: -moz-Dialog; } treechildren::-moz-tree-row(selected, focus) { background-color: Highlight; }
Envoyé par : Gregco
Date : 30/06/2007 13:04
Christophe Charron a écrit:
Pour faire des tests mettant en jeu le focus, il
ne faut surtout pas utiliser alert qui fausse tout
puisque c'est cette boîte qui prend le focus, donc
la fait perdre à celle qui l'avait vraiment etc
tout à fait, mais le constat est là. Des que l'alert rend le focus à la fenêtre principal la sélection est bonne...
Sinon les changement de style n'ont rien donné :-(
Je continue à chercher.
++
Greg
Envoyé par : Gregco
Date : 01/07/2007 12:28
Bon je pense avoir trouvé la clé du problème mais ne sait pas trop comment la solutionner pour l'instant.
Pour monter ou décendre les éléments dans mon arbre, je modifie le rdf puis je fais un arbre.builder.refresh();
.
Je continue à chercher Greg
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.