Browse Source

REPORT-82110 设计器取色bug

【问题原因】取色器ColorPicker取色是基于截屏后读取颜色的,因此需确保弹出框全部关闭后截屏。
【改动思路】1、取色前添加hidePopupMenu的操作 2、使用invokeLater确保异步任务执行完成后截屏 3、为规避REPORT-25645的macOS适配问题,新增hidePopupMenu4PickColor的方法
【Review建议】
release/11.0
levy 2 years ago
parent
commit
828671fce4
  1. 5
      designer-base/src/main/java/com/fr/design/style/color/ColorPicker.java
  2. 5
      designer-base/src/main/java/com/fr/design/style/color/UIToolbarColorButton.java

5
designer-base/src/main/java/com/fr/design/style/color/ColorPicker.java

@ -67,13 +67,10 @@ public class ColorPicker extends JDialog implements ActionListener {
hideCursor();
// 如果要求实时变化,确保先关闭弹窗,再截屏
// 主要针对"图案"选项卡中的"前景"、"背景"
if (this.setColorRealTime) {
colorSelectable.setColor(Color.WHITE); // setColor 可以关闭弹窗
// REPORT-82110 确保关闭所有弹窗后截屏
SwingUtilities.invokeLater(() -> {
colorPickerPanel.captureScreen();
});
SwingUtilities.invokeLater(colorPickerPanel :: captureScreen);
}
}

5
designer-base/src/main/java/com/fr/design/style/color/UIToolbarColorButton.java

@ -153,12 +153,13 @@ public class UIToolbarColorButton extends UICombinationButton implements PopupHi
popupWin = null;
}
// 取色器取色时,隐藏弹出框,无需经过macOS的判断
/**
* 取色器取色时隐藏弹出框与另一个hide的区别是无需经过macOS的判断以规避REPORT-25645的mac适配bug
*/
public void hidePopupMenu4PickColor() {
if (popupWin != null) {
popupWin.setVisible(false);
}
popupWin = null;
}

Loading…
Cancel
Save