MessageDialog does not show when screens have different scaling factors

<https://xojo.com/issue/55964>

This bug has bit a couple of my users who tend to keep their computer connected to a TV. I really hate telling them to unplug it or change system settings, so I’m trying to get some attention on it.

For those that can’t access Feedback at the moment:

OS: Windows 10

Xojo: Xojo 2019r1.1

Steps: Using VMWare running windows 10 (replicated on hardware as well)

screen 1 = 1920x1080@100%
screen 2 = 1920x1200@150%

Screen2 is on left side of screen 1 with bottoms aligned

  1. run app and show a message dialog

  2. note that the dialog is not visible but locks main app, so it is still modal.

  3. press escape to close, can continue in app.

IF screen2 is left and above screen 1 it will not show, all other locations it appears.

If screen scales are the same it will show.

Expected Result:
Showing dialog on all orientations

Actual Result:
Not shown

Workarounds:
Change screen layout

The only option I can think of is to use a TaskDialog for Windows.
As another benefit (apart from positioning working as expected), your Windows users would see a native OS dialog…

I once wrote an example project: Task Dialogs
This will use the OS native TaskDialog on Windows, and fall back to MessageDialog for macOS/Linux.

And of course there are the MBS Plugins: MBS Win Plugin:WindowsTaskDialog

The only option

Well, the second-to-only option :wink: would be to create an own Modal Dialog/Window (similar to what Xojo does with MessageDialog on TargetWindows), so you’d have better control over it’s placement. But then again - better use the OS native features than own/custom ones.