GP SoftwareTwitter
Opus FAQsManualCommandsObjects

Menu improperly scaled and positioned by always on top child window

There is display scaling issue when using individual display scaling setup.
The scale of always on top child window uniformly applied to some of sub-menu scale and position even the monitor scale is different.

Environment
I have dual monitor with individual display scaling setup.
Monitor A: 2560 x 1440 resolution with 125% scale
Monitor B: 1920 x 1080 resolution with 100% scale

How to reproduce symptom

  1. Open one of following child window
    Settings > Preference or
    Folder tabs > any file > right click > Property
  2. Move always on top child window to the opposite monitor which has different scale factor
  3. On original monitor, try context menu or sub-menus.

Expectation
The scale of monitor should applied to the menu windows

Problem
The scale of always on top active child window applies to the some of menu windows and ignores monitor scale.

That is a Windows mixed DPI bug as far as we can tell.

(There are many of them still in Windows, when using monitors set to two different DPIs, as well as if the primary monitor's DPI has been changed without rebooting.)

Windows is what actually scales the menu here, and Windows knows which monitor the menu is open on, but applies the scaling of the wrong screen in some situations, due to getting confused by an active window on another screen. It's been a bug in the OS for years now, unfortunately.

1 Like

@Leo, Thank you very much for your prompt reply.

I am just curious, in the same circumstance, some of menu works properly.
Then I guess dopus use different windows APIs in those cases, right?
If so, could you tell me which API were used?

Sample of proper scales


After reading Windows scaling issues for high-DPI devices article,
I have no options but match both monitors' scale (which is not a solution but a workaround)

Microsoft Says,
Display scaling is a deceptively complex problem.
There is no magic bullet or single fix to resolve all DPI Scaling problems.

I hope someone fix this but seems it's not happening anytime soon.

It's always the same APIs, at least for menus that Opus itself creates (not ones the shell creates).

But Windows gets confused sometimes, I think when the application's active window is on a monitor set to a different DPI to where the menu opens. I don't know why, but it has to be a bug in the OS since it's responsible for the scaling. Windows sometimes appears to apply the scaling factor of the monitor the application is currently active on to a window which opens on a different monitor.

Something that might be worth a try is turning off Preferences / Toolbars / Options / Animate menus in case the animation triggers the problem.

Similarly, turning off Preferences / Toolbars / Appearance / Display drop shadow under menus may also be worth a try.

Both those settings are only/mainly used by pop-up menus, so if one was the trigger for the Windows bug, it might make sense why it seems to happen to pop-up menus and not other windows. (But it could equally be other things, e.g. not having a titlebar.)


Avoiding mixed DPI is definitely best. If you look closely at the window borders of active and inactive windows (not just Opus; e.g. Notepad), you might see they have lots of gaps and different line thickness in different parts of the borders. That's another years old bug with mixed DPI in Win10. (Even with a single DPI setup, there are still some bugs there, with gaps between the window borders and shadows in places, but they are a lot more subtle.) ... Or maybe it's best not to look for this, since it is quite annoying and hard to un-see once you know it's there. :slight_smile:

1 Like

Thank you for the answer.

I tried your suggestion but none of them were effective.
But thank you for your support.

1 Like

We think we have a workaround for this which should be part of the next update. It's a bit experimental, but it seems to fix things so far.

(It's definitely a bug in Windows 10, too. The OS uses completely the wrong window to decide how to DPI scale another window that has no connection to the one it is using. We've found a way to trick it into not doing that.)

1 Like

We've just put out Directory Opus 12.17.4 (Beta) -- Please give it a try if you'd like to test the fixes.