Envoyé par : papy
Date : 20/07/2006 11:38
Bonjour,
j'essai d'implémenter un petit système de popup personalisé à l'aide de l'élément stack, mais l'ordre d'affichage n'est pas bon.
Le principe est simple, ma fenêtre principale est contenue dans une box qui est le premier élément de la stack, et j'ajoute un deuxième élément à cette stack pour afficher la popup au dessus de la fenêtre principale. Et la petit problème, j'ai une partie des composants de la fenêtre principale qui apparaissent au dessus de la box de la popup.
Détail intéressant, les éléments qui apparaissent au dessus de la popup font partie d'un deck dans la fenêtre principale.
Envoyé par : chBok
Date : 20/07/2006 14:05
essaie aussi pour tester avec la propriété ordinal qui donne l'ordre des éléments XUL
Envoyé par : papy
Date : 20/07/2006 15:02
j'ai essayé avec l'attribut ordinal, ca n'a pas l'air de marcher non plus, rien n'y fait mon deck passe au dessus même si il a un attribubt ordinal < à celui de ma popup. Pareil si je met l'attribut ordinal directement sur les box contenu par le deck.
Envoyé par : chBok
Date : 20/07/2006 15:07
Peux-tu nous coller ici, un extrait du code à l'intérieur du <stack> et qui ne fonctionne pas ?
Envoyé par : papy
Date : 20/07/2006 15:26
Ca va m'être difficile de prendre directement mon code, presque toute l'interface est chargée par des overlays successifs. En revanche j'ai fais un petit exemple, ca suffit pour montrer le problème.
Le code avec un deck qui ne fonctionne pas :
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet href="chrome://global/skin/" type="text/css" ?> <window id="mainWindow" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <stack flex="1"> <!-- Le deck --> <deck flex="1" ordinal="1"> <!-- Panel 1 --> <box style="background-color: lightblue;" flex="1" ordinal="2"> <label value="panel 1"/> </box> <!-- Panel 2 --> <box style="background-color: lightgreen;" flex="1" ordinal="3"> <label value="panel 2"/> </box> <!-- etc ... --> </deck> <!-- La popup --> <hbox style="background-color: red;" top="20" left="20" width="200" ordinal="100000000000"> <label value="Test"/> </hbox> </stack> </window>
Si je remplace mon deck par une box simple, j'ai bien l'effet attendue (ormis le fait que les deux panels sont visibles contrairement à ce qui se passe avec le deck) :
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet href="chrome://global/skin/" type="text/css" ?> <window id="mainWindow" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <stack flex="1"> <!-- Le deck --> <box flex="1" ordinal="1"> <!-- Panel 1 --> <box style="background-color: lightblue;" flex="1" ordinal="2"> <label value="panel 1"/> </box> <!-- Panel 2 --> <box style="background-color: lightgreen;" flex="1" ordinal="3"> <label value="panel 2"/> </box> <!-- etc ... --> </box> <!-- La popup --> <hbox style="background-color: red;" top="20" left="20" width="200" ordinal="100000000000"> <label value="Test"/> </hbox> </stack> </window>
Envoyé par : chBok
Date : 20/07/2006 15:55
je confirme que l'ordinal fonctionne, mais uniquement sur les éléments voisins de même niveau dans l'arborescence DOM (sibling). Dans ton cas, la valeur extravagante que tu indiques pour le <hbox> ne sert à rien.
PS : j'ai édité ton message pour fusionner les codes sources et les rendre plus lisibles :)
Envoyé par : papy
Date : 26/07/2006 17:37
Bon, j'ai recodé un binding pour le deck en modifiant dynamiquement l'attribut collapsed des différents panels. J'utilise l'évènement DOMNodeInserted pour cacher les panels ajoutés dynamiquement ou par des overlays (voir http://xulfr.org/forums/read.php?1,5555). Ca à l'air de fonctionner dans la plupart des cas, sauf quand j'ai un arbre dans un panel, mais ca ne vient pas du deck (voir http://xulfr.org/forums/read.php?1,5608)
Cette solution est temporaire, enfin j'espère que le comportement des stacks sera revu dans firefox parce qu'il y a encore quelque soucis pour l'instant.
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.