Theme Editor: fixed using color picker on secondary screen

This commit is contained in:
Karl Tauber
2024-11-27 19:02:13 +01:00
parent 323c0c62c3
commit 7e002ff6c2
2 changed files with 10 additions and 5 deletions

View File

@@ -16,6 +16,7 @@ FlatLaf Change Log
when resizing window. (issue #907) when resizing window. (issue #907)
- Popup: On Windows 10, fixed misplaced popup drop shadow. (issue #911; - Popup: On Windows 10, fixed misplaced popup drop shadow. (issue #911;
regression in 3.5) regression in 3.5)
- Theme Editor: Fixed using color picker on secondary screen.
## 3.5.2 ## 3.5.2

View File

@@ -23,9 +23,11 @@ import java.awt.Color;
import java.awt.Component; import java.awt.Component;
import java.awt.Graphics; import java.awt.Graphics;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.GraphicsConfiguration;
import java.awt.Insets; import java.awt.Insets;
import java.awt.Rectangle; import java.awt.Rectangle;
import java.awt.Robot; import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.Window; import java.awt.Window;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.EventQueue; import java.awt.EventQueue;
@@ -97,16 +99,18 @@ class FlatColorPipette
// macOS: windows with opacity smaller than 0.05 does not receive // macOS: windows with opacity smaller than 0.05 does not receive
// mouse clicked/pressed/released events (but mouse moved events) // mouse clicked/pressed/released events (but mouse moved events)
setOpacity( SystemInfo.isMacOS ? 0.05f : 0.005f ); setOpacity( SystemInfo.isMacOS ? 0.05f : 0.005f );
setBounds( owner.getGraphicsConfiguration().getBounds() ); GraphicsConfiguration gc = owner.getGraphicsConfiguration();
setBounds( (gc != null) ? gc.getBounds() : new Rectangle( Toolkit.getDefaultToolkit().getScreenSize() ) );
robot = new Robot( owner.getGraphicsConfiguration().getDevice() ); robot = (gc != null) ? new Robot( gc.getDevice() ) : new Robot();
magnifier = new Magnifier( this, robot ); magnifier = new Magnifier( this, robot );
MouseAdapter mouseListener = new MouseAdapter() { MouseAdapter mouseListener = new MouseAdapter() {
@Override @Override
public void mouseMoved( MouseEvent e ) { public void mouseMoved( MouseEvent e ) {
lastX = e.getX(); // adding location of pick window is necessary for secondary screens
lastY = e.getY(); lastX = e.getX() + getX();
lastY = e.getY() + getY();
// get color at mouse location // get color at mouse location
// (temporary change opacity to zero to get correct color from robot) // (temporary change opacity to zero to get correct color from robot)
@@ -133,7 +137,7 @@ class FlatColorPipette
// --> use last hover color on macOS // --> use last hover color on macOS
color = SystemInfo.isMacOS color = SystemInfo.isMacOS
? lastHoverColor ? lastHoverColor
: robot.getPixelColor( e.getX(), e.getY() ); : robot.getPixelColor( e.getX() + getX(), e.getY() + getY() );
} }
pick( color ); pick( color );
} }