On Windows platforms with more than one screen, a PopupWindow created for a 
Stage that straddles two windows will be drawn with an incorrect position and 
screen scale if the majority of the Stage is on one screen, and the popup is 
positioned on the other screen. In this case, the Stage is drawn using the 
screen scale of the screen that most of the window is on, while the popup is 
drawn using the scale of the screen that it is (typically entirely) on.

The most common way this can happen is when you have two screens of a different 
scale with the secondary screen on the left or above the primary screen. If you 
position the Stage such that most of it is still on the primary screen (thus 
the Stage is drawn using the scale of the primary screen), with a menu, a 
control with a context menu, or a control with a Tooltip now on the secondary 
screen, the popup window for the menu or Tooltip will be drawn using the screen 
scale of the secondary window and thus won't be positioned or sized correctly 
relative to the menu bar, or control in the main window.

The fix implemented by this PR is to always use the screen of the owner window, 
including the screen scales, when rendering a popup window. This matches the 
behavior of native Windows apps, such as Notepad.

-------------

Commit messages:
 - 8251862: Wrong position of Popup windows at the intersection of 2 screens

Changes: https://git.openjdk.org/jfx/pull/971/files
 Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=971&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8251862
  Stats: 153 lines in 3 files changed: 150 ins; 0 del; 3 mod
  Patch: https://git.openjdk.org/jfx/pull/971.diff
  Fetch: git fetch https://git.openjdk.org/jfx pull/971/head:pull/971

PR: https://git.openjdk.org/jfx/pull/971

Reply via email to