From 05a033dee425c4f940e33a5a6759a0790947c759 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Wed, 15 Jun 2022 18:08:06 +0200 Subject: [PATCH] Fix decal selection for multi-comp --- .../gui/configdialog/AppearancePanel.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/swing/src/net/sf/openrocket/gui/configdialog/AppearancePanel.java b/swing/src/net/sf/openrocket/gui/configdialog/AppearancePanel.java index 669089883..86632889a 100644 --- a/swing/src/net/sf/openrocket/gui/configdialog/AppearancePanel.java +++ b/swing/src/net/sf/openrocket/gui/configdialog/AppearancePanel.java @@ -496,6 +496,20 @@ public class AppearancePanel extends JPanel implements WindowListener { DecalModel decalModel = new DecalModel(panel, document, builder); JComboBox textureDropDown = new JComboBox(decalModel); + // We need to add this action listener that triggers a decalModel update when the same item is selected, because + // for multi-comp edits, the listeners' decals may not be updated otherwise + textureDropDown.addActionListener(new ActionListener() { + private DecalImage previousSelection = (DecalImage) decalModel.getSelectedItem(); + @Override + public void actionPerformed(ActionEvent e) { + DecalImage decal = (DecalImage) textureDropDown.getSelectedItem(); + if (decal == previousSelection) { + decalModel.setSelectedItem(decal); + } + previousSelection = decal; + } + }); + JButton colorButton = new SelectColorButton(new ColorIcon(builder.getPaint())); colorButton.addActionListener(new ColorActionListener(builder, "Paint"));