Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Tree - garder visuellement une ligne sélectionnée quand focus perdu

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

# Re: Tree - garder visuellement une ligne sélectionnée quand focus perdu

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.

# Re: Tree - garder visuellement une ligne sélectionnée quand focus perdu

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

# Re: Tree - garder visuellement une ligne sélectionnée quand focus perdu

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.

# Re: Tree - garder visuellement une ligne sélectionnée quand focus perdu

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.

# Re: Tree - garder visuellement une ligne sélectionnée quand focus perdu

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

# Re: Tree - garder visuellement une ligne sélectionnée quand focus perdu

Envoyé par : Gregco

Date : 29/06/2007 14:01

J'ai essayé avec le arbre.treeBoxObject.ensureRowIsVisible(ligne); sans réussite

# Re: Tree - garder visuellement une ligne sélectionnée quand focus perdu

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 ...

# Re: Tree - garder visuellement une ligne sélectionnée quand focus perdu

Envoyé par : thefab

Date : 29/06/2007 15:08

dump() est ton ami...

# Re: Tree - garder visuellement une ligne sélectionnée quand focus perdu

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;
    }

# Re: Tree - garder visuellement une ligne sélectionnée quand focus perdu

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

# Re: Tree - garder visuellement une ligne sélectionnée quand focus perdu

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.