[ https://issues.apache.org/jira/browse/NETBEANS-1792?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16738766#comment-16738766 ]
Thierry Danard commented on NETBEANS-1792: ------------------------------------------ I confirm that changing org.openide.awt.Actions.java to if (action instanceof BooleanStateAction) { b = new BooleanButtonBridge(button, (BooleanStateAction)action); } *else if* (action.getValue(Actions.ACTION_VALUE_TOGGLE) != null) { b = new BooleanButtonBridge(button, action); } else { b = new ButtonBridge(button, action); } fixed the issue. For any developer who encounters the same issue, this is what I did to patch my own copy of the NetBeans 10 platform: * download the NetBeans 10 source code * download the NetBeans 10 binaries * make the change above to the org.openide.awt.Actions.java class in the source code * build (I typed "ant" from the command line and waited about 20 minutes) * in the org-openide-awt.jar from the binaries, substitute the Action.class with yours * calculate the crc of your new org-openide-awt.jar file (I used https://emn178.github.io/online-tools/crc32_checksum.html) * in the platform\update_tracking\org-openide-awt.xml file, change the crc of modules/org-openide-awt.jar to this new value If you apply these changes to the binaries and NetBeans doesn't start, check the logs for errors (C:\Users\yourusername\AppData\Roaming\NetBeans\10.0\var\log\messages.log on Windows) > Behavior of BooleanStateAction has changed > ------------------------------------------ > > Key: NETBEANS-1792 > URL: https://issues.apache.org/jira/browse/NETBEANS-1792 > Project: NetBeans > Issue Type: Bug > Components: platform - Actions > Affects Versions: 10.0 > Reporter: Thierry Danard > Assignee: Svatopluk Dedic > Priority: Major > Fix For: 10.0 > > Attachments: DemoNetBeans1792.zip, image-2018-12-10-19-26-40-055.png, > image-2018-12-11-09-23-24-408.png, image-2018-12-11-09-47-54-474.png > > > I used the latest release candidate of NetBeans 10 (vc4), and found that > BooleanStateAction fires two "booleanState" events instead of one when a > button backed by a BooleanStateAction is pressed, the first event reporting > that the state is changing to "true", the second event reporting that the > state is changing back to "false" (even though the button is still showing as > "pressed") > In my case, this BooleanStateAction is inside a JToolbar. > javax.swing.JToolBar toolbar = new JToolBar(); > toolbar.setFloatable(false); > toolbar.setRollover(true); > Component tp1 = > SystemAction.get(MyBooleanStateAction1.class).getToolbarPresenter(); > Component tp2 = > SystemAction.get(MyBooleanStateAction2.class).getToolbarPresenter(); > Component tp3 = > SystemAction.get(MyBooleanStateAction3.class).getToolbarPresenter(); > tp1.setFocusable(false); > tp2.setFocusable(false); > tp3.setFocusable(false); > toolbar.add(tp1); > toolbar.add(tp2); > toolbar.add(tp3); > JPanel toolbarPanel = new JPanel(new BorderLayout()); > toolbarPanel.add(toolbar, BorderLayout.WEST); > > This is a breaking change, it was working just fine in NetBeans 9. It breaks > a lot of code in my app as I rely on the booleanState event to enable to > disable behaviors: right now, when a user clicks a button, it shows as > "pressed", but the associated function gets disabled right after it gets > enabled. > I wasn't able to find a root cause after running from NetBeans source. > I did note that the BooleanStateAction is deprecated. > I'll try to provide a sample code to reproduce. > -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org For additional commands, e-mail: commits-h...@netbeans.apache.org For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists