gluonhq / scenebuilder

Scene Builder is a visual, drag 'n' drop, layout tool for designing JavaFX application user interfaces.
https://gluonhq.com/products/scene-builder/
Other
740 stars 220 forks source link

Cannot see edits or do a normal save when multiple fx:reference blocks are used (sometimes) #123

Open gluon-bot opened 7 years ago

gluon-bot commented 7 years ago

Originally reported by: A. Walter (Bitbucket: awalterwork, GitHub: Unknown)


In SceneBuilder 8.3.0, when using multiple fx:reference blocks to refer to objects defined in fx:define blocks, sometimes (see below) you

I say "sometimes", because I found some scenarios where everything works fine and some very similar scenarios where the weird behaviour described above occurs. I'm not sure what exactly causes the different behaviour, but it is reproducable.

Steps to reproduce

The scenarios that work and do not work are very similar - see some snippets:

NotWorking1.fxml

#!xml

<BorderPane prefHeight="200" prefWidth="500" xmlns="http://javafx.com/javafx/8.0.101" xmlns:fx="http://javafx.com/fxml/1">
    <fx:define>
        <Button fx:id="define1" text="fx:define Btn 1" />
        <Button fx:id="define2" text="fx:define Btn 2" />
    </fx:define>
    <top>
        <fx:reference source="define1" />
    </top>
    <center>
        <VBox>
            <fx:reference source="define2" />
            <Button text="Change my Text!" />
        </VBox>
    </center>
</BorderPane>

NotWorking2.fxml

#!xml

<BorderPane prefHeight="200" prefWidth="500" xmlns="http://javafx.com/javafx/8.0.101" xmlns:fx="http://javafx.com/fxml/1">
    <fx:define>
        <Button fx:id="define1" text="fx:define Btn 1" />
        <Button fx:id="define2" text="fx:define Btn 2" />
    </fx:define>
    <center>
        <VBox>
            <Button text="Change my Text!" />
            <fx:reference source="define1" />
            <fx:reference source="define2" />
        </VBox>
    </center>
</BorderPane>

NotWorking3.fxml

#!xml

<BorderPane prefHeight="200" prefWidth="500" xmlns="http://javafx.com/javafx/8.0.101" xmlns:fx="http://javafx.com/fxml/1">
    <fx:define>
        <Button fx:id="define1" text="fx:define Btn 1" />
        <Button fx:id="define2" text="fx:define Btn 2" />
    </fx:define>
    <top>
        <Button text="Change my Text!" />
    </top>
    <center>
        <VBox>
            <fx:reference source="define1" />
            <fx:reference source="define2" />
        </VBox>
    </center>
</BorderPane>

Working1.fxml (identical to NotWorking1.fxml except for button order in VBox)

#!xml

<BorderPane prefHeight="200" prefWidth="500" xmlns="http://javafx.com/javafx/8.0.101" xmlns:fx="http://javafx.com/fxml/1">
    <fx:define>
        <Button fx:id="define1" text="fx:define Btn 1" />
        <Button fx:id="define2" text="fx:define Btn 2" />
    </fx:define>
    <top>
        <fx:reference source="define1" />
    </top>
    <center>
        <VBox>
            <Button text="Change my Text!" />
            <fx:reference source="define2" />
        </VBox>
    </center>
</BorderPane>

Working2.fxml

#!xml

<BorderPane prefHeight="200" prefWidth="500" xmlns="http://javafx.com/javafx/8.0.101" xmlns:fx="http://javafx.com/fxml/1">
    <fx:define>
        <Button fx:id="define1" text="fx:define Btn 1" />
        <Button fx:id="define2" text="fx:define Btn 2" />
    </fx:define>
    <top>
        <fx:reference source="define1" />
    </top>
    <center>
        <VBox>
            <Button text="Change my Text!" />
        </VBox>
    </center>
    <left>
        <fx:reference source="define2" />
    </left>
</BorderPane>

Expected behaviour


abhinayagarwal commented 3 years ago

Related to #121

Oliver-Loeffler commented 2 years ago

Hi @abhinayagarwal, I will look into this and see if the problem still exists. If so, I'll try to build up understanding and share this here.