diff --git a/src/main/java/plugins/adufour/protocols/gui/block/WorkFlowContainer.java b/src/main/java/plugins/adufour/protocols/gui/block/WorkFlowContainer.java index f07994a50be0a182be04cf009a2783e42722738d..3a64436b5ed50a56ced759a9ed9b456443d68b9e 100644 --- a/src/main/java/plugins/adufour/protocols/gui/block/WorkFlowContainer.java +++ b/src/main/java/plugins/adufour/protocols/gui/block/WorkFlowContainer.java @@ -335,7 +335,7 @@ public class WorkFlowContainer extends JLayeredPane implements WorkFlowListener, } else dstBlockPanel.refreshNow(); - + repaint(); } } @@ -368,8 +368,29 @@ public class WorkFlowContainer extends JLayeredPane implements WorkFlowListener, } panel.drawPanel(); + blockPanels.put(blockDesc, panel); add(panel); + + // FIX: get exposed links correctly restored on copy/paste as setVisibility isn't called in that case (Stephane) + // this is really an ugly fix but the whole stuff is a complete mess honestly :-/ + if (blockDesc.isWorkFlow()) + { + synchronized (blockDesc.inputVars) + { + // update exposed links + for (Var<?> var : blockDesc.inputVars) + ((WorkFlowPanel) panel).updateExposedLink(var, blockDesc.inputVars.isVisible(var)); + } + + synchronized (blockDesc.outputVars) + { + // update exposed links + for (Var<?> var : blockDesc.outputVars) + ((WorkFlowPanel) panel).updateExposedLink(var, blockDesc.outputVars.isVisible(var)); + } + } + // Layer 0 for blocks // Layer 1 for work flows setLayer(panel, blockDesc.isWorkFlow() ? 1 : 0, 0); @@ -531,9 +552,9 @@ public class WorkFlowContainer extends JLayeredPane implements WorkFlowListener, workFlow.removeBlock(workFlow.getBlock(i), true); } - workFlow.addBlock(embed.getBlockDescriptor()); - MainFrame.pasteSelection(embed, true); + + workFlow.addBlock(embed.getBlockDescriptor()); } /**