framework icon indicating copy to clipboard operation
framework copied to clipboard

Disabling and re-enabling a FormLayout with a Slider breaks Slider

Open OlliTietavainenVaadin opened this issue 5 years ago • 3 comments

  • Vaadin Framework version: 8.8.2
  • Browser version: At least Chrome and Firefox on Win 10
  • Description of the bug: Create a FormLayout with a Slider. Initially, set the FormLayout to disabled state, so that the Slider gets disabled too. Then re-enable the FormLayout. The slider looks like it's enabled, but it can't be moved with either with the keyboard or the mouse.

Minimal reproducible example:

        VerticalLayout rootLayout = new VerticalLayout();
        FormLayout layout = new FormLayout();
        Slider displayTime = new Slider("displaytime");
        displayTime.setMin(0);
        displayTime.setMax(100);
        layout.addComponent(displayTime);
        // DateField for comparison - it works as expected
        DateField dateField = new DateField("date");
        dateField.setValue(LocalDate.now());
        layout.addComponent(dateField);
        layout.setEnabled(false);
        rootLayout.addComponent(layout);
        Button button = new Button("re-enable FormLayout", e -> {
            layout.setEnabled(true);
        });
        rootLayout.addComponent(button);
        setContent(rootLayout);
  • Expected behavior: After clicking the Button, the Slider be interacted with as usual
  • Actual behavior: After clicking the Button, the Slider changes from disabled style to normal, but it can't be moved

OlliTietavainenVaadin avatar Jun 10 '19 08:06 OlliTietavainenVaadin

Hello there!

We are sorry that this issue hasn't progressed lately. We are prioritizing issues by severity and the number of customers we expect are experiencing this and haven't gotten around to fix this issue yet.

There are a couple of things you could help to get things rolling on this issue (this is an automated message, so expect that some of these are already in use):

  • Check if the issue is still valid for the latest version. There are dozens of duplicates in our issue tracker, so it is possible that the issue is already tackled. If it appears to be fixed, close the issue, otherwise report to the issue that it is still valid.
  • Provide more details how to reproduce the issue.
  • Explain why it is important to get this issue fixed and politely draw others attention to it e.g. via the forum or social media.
  • Add a reduced test case about the issue, so it is easier for somebody to start working on a solution.
  • Try fixing the issue yourself and create a pull request that contains the test case and/or a fix for it. Handling the pull requests is the top priority for the core team.
  • If the issue is clearly a bug, use the Warranty in your Vaadin subscription to raise its priority.

Thanks again for your contributions! Even though we haven't been able to get this issue fixed, we hope you to report your findings and enhancement ideas in the future too!

stale[bot] avatar Nov 07 '19 08:11 stale[bot]

This happens with other layout components too, e.g. VerticalLayout. And it looks like it is weird timing issue. I briefly checked SliderConnector and VSlider code and could not figure out why this happens. But if you tweak the Slider enabled status with a suitable delay it is a workaround.

    protected void init(VaadinRequest request) {
        VerticalLayout rootLayout = new VerticalLayout();
        VerticalLayout layout = new VerticalLayout();
        Slider displayTime = new Slider("displaytime");
        displayTime.setMin(0);
        displayTime.setMax(100);
        layout.addComponent(displayTime);
        // DateField for comparison - it works as expected
        DateField dateField = new DateField("date");
        dateField.setValue(LocalDate.now());
        layout.addComponent(dateField);
        layout.setEnabled(false);
        rootLayout.addComponent(layout);
        Button button = new Button("re-enable FormLayout", e -> {
            layout.setEnabled(true);
            displayTime.setEnabled(false);
            Thread t = new Thread(() -> {
            	try {
					Thread.sleep(100);
				} catch (InterruptedException e1) {
					// TODO Auto-generated catch block
				}
                this.access(() -> displayTime.setEnabled(true));            	
            });
            t.start();
        });
        rootLayout.addComponents(button);
        setContent(rootLayout);		
}

TatuLund avatar Jul 24 '20 11:07 TatuLund

Hello there!

We are sorry that this issue hasn't progressed lately. We are prioritizing issues by severity and the number of customers we expect are experiencing this and haven't gotten around to fix this issue yet.

There are a couple of things you could help to get things rolling on this issue (this is an automated message, so expect that some of these are already in use):

  • Check if the issue is still valid for the latest version. There are dozens of duplicates in our issue tracker, so it is possible that the issue is already tackled. If it appears to be fixed, close the issue, otherwise report to the issue that it is still valid.
  • Provide more details how to reproduce the issue.
  • Explain why it is important to get this issue fixed and politely draw others attention to it e.g. via the forum or social media.
  • Add a reduced test case about the issue, so it is easier for somebody to start working on a solution.
  • Try fixing the issue yourself and create a pull request that contains the test case and/or a fix for it. Handling the pull requests is the top priority for the core team.
  • If the issue is clearly a bug, use the Warranty in your Vaadin subscription to raise its priority.

Thanks again for your contributions! Even though we haven't been able to get this issue fixed, we hope you to report your findings and enhancement ideas in the future too!

stale[bot] avatar Dec 25 '20 13:12 stale[bot]