Voila je propose cette nouvelle discussion comme pot pourri des différents bugsque tout le monde a rencontré dans la 1.2, de plus si vous avez trouvé le moyen de le contourner n'hésitez pas! (je sens que Bouye vas se lâcher sur les layouts
)
Voila je propose cette nouvelle discussion comme pot pourri des différents bugsque tout le monde a rencontré dans la 1.2, de plus si vous avez trouvé le moyen de le contourner n'hésitez pas! (je sens que Bouye vas se lâcher sur les layouts
)
Voyons, il reste à ce jour 336 bugs encore ouverts pour SoMa, contre, uh... 68 bugs résolus (plus 7 pour la 1.2.1) ?
La 1.3 n'est pas encore sortie !
Bon, si on se limite aux bugs bloquants, critiques ou majeurs, il n'y en a plus "que" 268...
Et ce n'est que le runtime, le compilateur est pas mal aussi... :-)
Bah, gros projet = beaucoup de bugs, c'est normal. Espérons qu'il reste assez de programmeurs sur le projet pour le faire avancer rapidement...
Côté bugs rencontrés, il y en a pas mal, particulièrement sur les composants, sortis un peu précipitamment (mais on est content de les avoir quand même...) pour JavaONE.
Comme le slider qui n'a pas de ticks, qui se comporte bizarrement si on met min à autre chose que zéro... Les graphes qui ne sont pas dynamiques. Les composants qui ne sont que partiellement modifiables par CSS. Le CSS qui ne fonctionne que sur les composants déclarés, pas ceux ajoutés après coup.
J'ai ouvert un bug sur les mixins qui ne sont pas cohérents.
Il y en a un autre sur le parsing de Json, qui ne gère pas les Long (style timestamp).
J'ai aussi un bug sur ShapeSubstract qui ne suit pas le binding.
Ah, oui, et le boundsInParent qui devient énorme sur une forme ayant subi une rotation et un effet (DropShadow).
Bon, j'en oublie sans doute, mais cela va devenir fastidieux... ;-P
Ca serait mal, oh vi ca serait mal
Personnellement j'ai surtout des layoutBounds ou boundsInParent incoherent des que j'utilise de composants texte (Text et Label) avec HBox, VBox et Flow et mais moins souvent avec Stack ce qui fait que j'ai souvent des noeud ou des controles qui se retrouvent avec des origines negatives ou qui se chevauchent ou qui ont au contraire beaucoup trop d'espacement entre eux (donc une des boites englobantes deraille mais pourtant je n'applique pas de rotation dessus).
La bordure de focus de TextBox modifie la boite englobante du composant ce qui fait bien sur que cela modifie la mise en page des boites de dialogues quand le composant recoit ou perd le focus.
Le knob du Slider modifie aussi la boite englobante du composant dans certaines layouts. Le composant n'est pas capable d'indiquer qu'il a le focus.
Certaines noeud n'ont pas la bonne boite englobante quand je les colle dans des layout qui contiennent aussi des ScrollBar.
Certains problemes de layout n'apparaissent uniquement que quand on a des layouts dans d'autres layouts (il y a donc un probleme ou une incoherence au niveau des caculs des origines ou des transformations d'un espace a un autre).
Les gradients deraillent dans un ClipView ou parfois quand on fait un translate sur un ensemble de noeud qui en contient. Il faut donc les cacher.
Ps : tiens le bug abscence de TexturePaint n'est toujours pas resolu ? Etrange j'ai recupere et modifie une implementation sur les forums de Sun qui fonctionne plutot bien.
Merci de penser au tagquand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
@bouye, pour les textbox, dans une box je detecte pas les problème de layout... que j'avais remarqué au début, strange dites vous?
Pour ma part, je peux rajouter ça:
- l'ajout d'éffets InnerShadow sur plusieurs grands rectangles comportant un gradient divise les performances par 10, au moins! (ça le faisait pas en 1.1)
- requestFocus() sur une TextBox reset le contenu sous Linux, mais pas sous Windows qui là est surligné en bleu
- la simple mis à jour de la chaîne de caractère affichée par un composant Text bloque l'EDT. J'ai de grandes fenêtres avec de nombreuses données à modifier en temps réel, et ça freeze tout le reste à chaque mise à jour pendant quelques ms du coup ça rame.
- sur la même application, les performances linux sont de l'ordre de 10 fois inférieures au rendu sous Windows (le SDK linux est considéré comme beta, je sais ^^)
- les propriétés nodeHPos et nodeVPos de la Stack ne marchent plus dès que l'on utilise un autre layout comme content. Exemple, Stack avec une VBox dedans, la VBox est incentrable. On remplace la VBox par une TextBox, elle est centrée.
L'histoire du gradient et du drop shadow, en effet je crois l'avoir vu sur JIRA, par contre as-tu essayé de mettre cache=true sur tes composants pour voir si il y avait une difference?
[edit] Petite boulette de ma part, ce sont des InnerShadow et pas des DropShadow
Oui, c'est comme ça que j'avais résolu le problème avec le 1.1. Mais depuis la 1.2, cache=true empèche la fenêtre de ramer que si le gradient est seul. Une fois l'ombre appliquée en plus du gradient, les performances rechuttent au même niveau qu'un cache=false. Actuellement, je suis obligé d'enlever la plupart de mes InnerShadow :/
Encore une fois cela depend de l'agencement des layouts dans lesquels ces controles sont mis. Par exemple ici qui simule une UI faite de controle separes, le fait de mettre chaque VBox dans son propre Group (apres tout on pourrait avoir envie de mettre des glasspane et autre decoration sur ces VBox) fait que les espacements entre chaque composant varie lorsqu'on fait circuler le focus (sous Windows) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111 /* * Main.fx * * Created on Aug 28, 2009, 11:35:38 AM */ package test; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.scene.control.Label; import javafx.scene.layout.LayoutInfo; import javafx.scene.control.TextBox; import javafx.geometry.VPos; import javafx.scene.Group; import javafx.scene.shape.Rectangle; import javafx.scene.paint.Color; import javafx.scene.Scene; import javafx.stage.Stage; import javafx.scene.shape.Line; /** * @author Fabrice Bouyé (fabriceb@spc.int) */ def ui:VBox = VBox { spacing: 5; content: for (i in [0..3]) { def panel:VBox = VBox { spacing: 5; content: [ Group { def label:Label = Label { layoutInfo: LayoutInfo { width: 75 } text:##"Options {i+1}" } content: [ label, Line { startX: 0; startY: bind label.layoutBounds.maxY; endX: bind label.layoutBounds.width; endY: bind label.layoutBounds.maxY; } ] } HBox { spacing: 5; nodeVPos: VPos.CENTER; content: [ Label { layoutInfo: LayoutInfo { width: 75 } text:##"Name" } TextBox { } ] } HBox { spacing: 5; nodeVPos: VPos.CENTER; content: [ Label { layoutInfo: LayoutInfo { width: 75 } text: ##"Password" } TextBox { } ] } ] } def layoutRect:Rectangle = Rectangle { fill: null; stroke: Color.RED; x: bind panel.layoutX; y: bind panel.layoutY; width: bind panel.layoutBounds.width; height: bind panel.layoutBounds.height; } def parentRect:Rectangle = Rectangle { fill: null; stroke: Color.BLUEVIOLET; strokeDashArray: [ 10 , 10] x: bind panel.boundsInParent.minX; y: bind panel.boundsInParent.minY; width: bind panel.boundsInParent.width; height: bind panel.boundsInParent.height; } def group = Group { content: [ panel, //layoutRect, //parentRect ] } } } Stage { title: "Application title" scene: Scene { content: [ Group { content: [ ui ] } ] } }
Merci de penser au tagquand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
Salut Bouye,
J'ai été un peu vite dans mes affirmations plus haut, j'ai été aussi victime du même problème. Alors je te donne ma version du crime
. Il semblerait que dans les layouts resizable à base de group, du moins H/VBox, j'ai pas testé le reste, le dernier élément de la séquence de nodes ne soit pas correctement recalculé en tout cas si son boundsInParent change. On peut voir ca avec les premiers TextBox qui ne font pas varié le positionnement du VBox interne.
Donc en résumé dès que l'on a des V/HBox imbriqués ça joue des castagnettes.
Le vaccin un peu bricolo du dimanche mais qui fonctionne d'est de rajouter un node bidon à la fin du groupe qui lui ne bouge pas, un Rectangle vide fait l'affaire par exemple.
Il reste quand même une inconnue, c'est que le bug n'apparait pas quand le panel n'est pas dans un Group (en commentaire), ça doit être un effet de bord du bug qui ne se montre pas dans ce cas.
N'étant pas trop sûr que mes explication soient trop claires ton code avec la modif:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92 def ui:VBox = VBox { spacing: 5; content: for (i in [0..3]) { def panel:VBox = VBox { spacing: 5; content: [ Group { def label:Label = Label { layoutInfo: LayoutInfo { width: 75 } text:##"Options {i+1}" } content: [ label, Line { startX: 0; startY: bind label.layoutBounds.maxY; endX: bind label.layoutBounds.width; endY: bind label.layoutBounds.maxY; } ] } HBox { spacing: 5; nodeVPos: VPos.CENTER; content: [ Label { layoutInfo: LayoutInfo { width: 75 } text:##"Name" } TextBox { columns: 30 text: bind "je suis pas un problème" } ] } HBox { spacing: 5; nodeVPos: VPos.CENTER; content: [ Label { layoutInfo: LayoutInfo { width: 75 } text:##"Name2" } TextBox { columns: 30 text: "je suis pas un problème" } ] } HBox { spacing: 5; nodeVPos: VPos.CENTER; content: [ Label { layoutInfo: LayoutInfo { width: 75 } text: ##"Password" } TextBox { columns: 30 text: "je suis un problème si je suis le dernier" } ] } Rectangle {}//le petit dernier de la bande ] } def layoutRect:Rectangle = Rectangle { fill: null; stroke: Color.RED; x: bind panel.layoutX; y: bind panel.layoutY; width: bind panel.layoutBounds.width; height: bind panel.layoutBounds.height; } def parentRect:Rectangle = Rectangle { fill: null; stroke: Color.BLUEVIOLET; strokeDashArray: [ 10 , 10] x: bind panel.boundsInParent.minX; y: bind panel.boundsInParent.minY; width: bind panel.boundsInParent.width; height: bind panel.boundsInParent.height; } // panel//pas de bug Group {//bug si c'est dans un group content: [ panel, // layoutRect, // parentRect ] } } }
Comment change-t-on le titre du topic svp? Je voudrais remplacer 1.3 par 1.2.1, en effet dans la 1.3 on va voir arriver Prism qui est la nouvelle implémentation de SceneGraph, ça va encore être du sportet en 3D svp
Donc c'est plutôt la 1.2.1 qui risque de nous faire baisser la tension artérielle, si en plus on avait la change que les specs des layouts ne changent pas après![]()
Partager