Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Multi-Monitor] SWT applications to support and work with different zoom values per Shell. #131

Open
niraj-modi opened this issue May 11, 2022 · 1 comment
Labels
help wanted Extra attention is needed Windows Happens on Windows OS

Comments

@niraj-modi
Copy link
Member

Copying @SyntevoAlex comment from #62 (comment)

To my understanding, the biggest blocker in current design is that in Windows, DPI is assigned per top-level window (Shell in terms of SWT) , whereas methods in DPIUtil do not use Shell as argument, so it uses a single DPI value for all monitors. With such design, we can only resort to supporting some scenarios at cost of other scenarios.

A proper fix would be to teach DpiUtil to consider Shell in question. Unfortunately, that will require massive (but probably not too complex) changes.

If someone volunteers to do that, I could assist to a reasonable extent.

@niraj-modi niraj-modi changed the title SWT/Eclipse to support different zoom values per shell [Multi-Monitor] SWT applications to support and work with different zoom values per Shell. May 11, 2022
@niraj-modi niraj-modi added the Windows Happens on Windows OS label May 11, 2022
@akoch-yatta
Copy link
Contributor

Hello,

I am currently working on the HiDPI issues on Windows and got most of it to a decent state. The issue I am currently struggling with is how to adjust Fonts properly, when there are different zoom levels. I think for the system fonts (font == null) I found a proper way to handle it, but when an explicit font is set, I do not see a good solution. The main problem is how the make sure, that the font is applied correctly to each control depending on the monitor zoom. Having it refreshed when the zoom change is happening is fine, but when it is set in between, e.g. as by the CSS SWT Engine, that does not work properly.

  1. The obvious idea was to adapt the place, where FontData is used to create a font. In Font.init(...) device.computePixels is called, which uses LOGPIXELSY to calculate the scale factor.
    int pixels = -(int)(0.5f + (height * OS.GetDeviceCaps(hDC, OS.LOGPIXELSY) / 72f));
    As this uses the primary monitor, this won't work in a monitor setup with different zoom levels. As there is only one instance of Display even with multiple monitors I don't see a way to handle it there.

  2. Second idea was to adapt Control::setFont to resize fonts if necessary. That does not sound great as well. When called, there is already a font created and should be set for this control and this could lead to the creation of a new one that needs to be managed. Additionally one would need to recalculate the font size taking the zoom of the primary monitor and the one of the controls monitor into consideration, which sounds rather complicated.

Anyone has another idea for an approach about that topic or am I missing a basic concept here?

@HeikoKlare HeikoKlare added the help wanted Extra attention is needed label Sep 28, 2023
akoch-yatta added a commit to akoch-yatta/eclipse.platform.swt that referenced this issue Apr 24, 2024
…as parameter

This contribution adds additional methods to scale different datatypes up or down by passing the target zoom level as parameter. All existing methods will delegate to the added methods and pass DPIUtil::deviceZoom as zoom.

Contributes to eclipse-platform#62
and eclipse-platform#131
akoch-yatta added a commit to akoch-yatta/eclipse.platform.swt that referenced this issue Apr 24, 2024
…as parameter

This contribution adds additional methods to scale different datatypes up or down by passing the target zoom level as parameter. All existing methods will delegate to the added methods and pass DPIUtil::deviceZoom as zoom.

Contributes to eclipse-platform#62
and eclipse-platform#131
akoch-yatta added a commit to akoch-yatta/eclipse.platform.swt that referenced this issue Apr 24, 2024
…as parameter

This contribution adds additional methods to scale different datatypes up or down by passing the target zoom level as parameter. All existing methods will delegate to the added methods and pass DPIUtil::deviceZoom as zoom.

Contributes to eclipse-platform#62
and eclipse-platform#131
akoch-yatta added a commit to akoch-yatta/eclipse.platform.swt that referenced this issue Apr 24, 2024
…as parameter

This contribution adds additional methods to scale different datatypes up or down by passing the target zoom level as parameter. All existing methods will delegate to the added methods and pass DPIUtil::deviceZoom as zoom.

Contributes to eclipse-platform#62
and eclipse-platform#131
akoch-yatta added a commit to akoch-yatta/eclipse.platform.swt that referenced this issue Apr 24, 2024
…as parameter

This contribution adds additional methods to scale different datatypes up or down by passing the target zoom level as parameter. All existing methods will delegate to the added methods and pass DPIUtil::deviceZoom as zoom.

Contributes to eclipse-platform#62
and eclipse-platform#131
akoch-yatta added a commit to akoch-yatta/eclipse.platform.swt that referenced this issue Apr 24, 2024
…as parameter

This contribution adds additional methods to scale different datatypes up or down by passing the target zoom level as parameter. All existing methods will delegate to the added methods and pass DPIUtil::deviceZoom as zoom.

Contributes to eclipse-platform#62
and eclipse-platform#131
akoch-yatta added a commit to akoch-yatta/eclipse.platform.swt that referenced this issue Apr 30, 2024
…as parameter

This contribution adds additional methods to scale different datatypes up or down by passing the target zoom level as parameter. All existing methods will delegate to the added methods and pass DPIUtil::deviceZoom as zoom.

Contributes to eclipse-platform#62
and eclipse-platform#131
akoch-yatta added a commit to akoch-yatta/eclipse.platform.swt that referenced this issue Apr 30, 2024
…as parameter

This contribution adds additional methods to scale different datatypes up or down by passing the target zoom level as parameter. All existing methods will delegate to the added methods and pass DPIUtil::deviceZoom as zoom.

Contributes to eclipse-platform#62
and eclipse-platform#131
akoch-yatta added a commit to akoch-yatta/eclipse.platform.swt that referenced this issue May 3, 2024
…as parameter

This contribution adds additional methods to scale different datatypes up or down by passing the target zoom level as parameter. All existing methods will delegate to the added methods and pass DPIUtil::deviceZoom as zoom.

Contributes to eclipse-platform#62
and eclipse-platform#131
HeikoKlare pushed a commit to akoch-yatta/eclipse.platform.swt that referenced this issue May 3, 2024
…as parameter

This contribution adds additional methods to scale different datatypes up or down by passing the target zoom level as parameter. All existing methods will delegate to the added methods and pass DPIUtil::deviceZoom as zoom.

Contributes to eclipse-platform#62
and eclipse-platform#131
HeikoKlare pushed a commit that referenced this issue May 3, 2024
…as parameter

This contribution adds additional methods to scale different datatypes up or down by passing the target zoom level as parameter. All existing methods will delegate to the added methods and pass DPIUtil::deviceZoom as zoom.

Contributes to #62
and #131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue May 6, 2024
…ch can be

extended by other resources and widgets.

Contributes to
eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue May 6, 2024
…ch can be

extended by other resources and widgets.

Contributes to
eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue May 8, 2024
…ch can be

extended by other resources and widgets.

Contributes to
eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue May 13, 2024
…ch can be

extended by other resources and widgets.

Contributes to
eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue May 13, 2024
…ch can be

extended by other resources and widgets.

Contributes to
eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue May 14, 2024
…ch can be

extended by other resources and widgets.

Contributes to
eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue May 15, 2024
…ch can be

extended by other resources and widgets.

Contributes to
eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue May 15, 2024
…ch can be

extended by other resources and widgets.

Contributes to
eclipse-platform#62 and eclipse-platform#131
akoch-yatta added a commit to akoch-yatta/eclipse.platform.swt that referenced this issue Jun 7, 2024
As the constructor of Tray is not calling the super constructor, the nativeZoom attribute must be set here as well. As it only has the display as reference, the zoom of the display (currently equal to primary monitor zoom) will be used

Contributes to eclipse-platform#62 and eclipse-platform#131
fedejeanne pushed a commit to amartya4256/eclipse.platform.swt that referenced this issue Jun 7, 2024
This commit contributes to multi zoom level support of GC which can be extended by other resources and widgets.

Contributes to
eclipse-platform#62 and eclipse-platform#131
fedejeanne pushed a commit that referenced this issue Jun 7, 2024
This commit contributes to multi zoom level support of GC which can be extended by other resources and widgets.

Contributes to
#62 and #131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue Jun 7, 2024
Added zoomLevel in DPIUtil calls for widgets and added widget reference for events

contributes to eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue Jun 7, 2024
Added zoomLevel in DPIUtil calls for widgets and added widget reference for events

contributes to eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue Jun 7, 2024
Added zoomLevel in DPIUtil calls for widgets and added widget reference for events

contributes to eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue Jun 7, 2024
Added zoomLevel in DPIUtil calls for widgets and added widget reference for events

contributes to eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue Jun 7, 2024
This contributes to multi zoom level support for font metrics for win32 which can be extended by clients to get metrics about font for different zoom level

Contributes to eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue Jun 10, 2024
This commit contributes to multi zoom level support of pattern using a map of zoom levels with relevant patterns.

Contributes to eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue Jun 10, 2024
This contributes to multi zoom level support for font metrics for win32 which can be extended by clients to get metrics about font for different zoom level

Contributes to eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue Jun 10, 2024
This commit contributes to multi zoom level support of pattern using a map of zoom levels with relevant patterns.

Contributes to eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue Jun 10, 2024
This commit contributes to multi zoom level support of pattern using a map of zoom levels with relevant patterns.

Contributes to eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue Jun 10, 2024
Added zoomLevel in DPIUtil calls for widgets and added widget reference for events

contributes to eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue Jun 10, 2024
Added zoomLevel in DPIUtil calls for widgets and added widget reference for events

contributes to eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue Jun 11, 2024
Added zoomLevel in DPIUtil calls for widgets and added widget reference for events

contributes to eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue Jun 11, 2024
This contribution removes the dependency to the static deviceZoom in DPIUtil for all widgets in the win32 implementation. All calls to DPIUtil method are replaced with calls passing the zoom of the widget directly.

contributes to eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue Jun 11, 2024
This contribution removes the dependency to the static deviceZoom in DPIUtil for all widgets in the win32 implementation. All calls to DPIUtil method are replaced with calls passing the zoom of the widget directly.

contributes to eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue Jun 11, 2024
This contribution removes the dependency to the static deviceZoom in DPIUtil for all widgets in the win32 implementation. All calls to DPIUtil method are replaced with calls passing the zoom of the widget directly.

contributes to eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue Jun 11, 2024
This contribution removes the dependency to the static deviceZoom in DPIUtil for all widgets in the win32 implementation. All calls to DPIUtil method are replaced with calls passing the zoom of the widget directly.

contributes to eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue Jun 11, 2024
Do not use DPIUtil::getDeviceZoom to scale the widgets, use DPIUtil::autoScaleUp/scaleDown instead and pass the zoom of the widget to them.

contributes to eclipse-platform#62 and eclipse-platform#131
fedejeanne pushed a commit that referenced this issue Jun 11, 2024
Do not use DPIUtil::getDeviceZoom to scale the widgets, use DPIUtil::autoScaleUp/scaleDown instead and pass the zoom of the widget to them.

contributes to #62 and #131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue Jun 12, 2024
This commit contributes to multi zoom level support of pattern using a map of zoom levels with relevant patterns.

Contributes to eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue Jun 12, 2024
This commit contributes to multi zoom level support of pattern using a map of zoom levels with relevant patterns.

Contributes to eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue Jun 13, 2024
This contributes to multi zoom level support for font metrics for win32 which can be extended by clients to get metrics about font for different zoom level

Contributes to eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue Jun 13, 2024
This contributes to multi zoom level support for font metrics for win32 which can be extended by clients to get metrics about font for different zoom level

Contributes to eclipse-platform#62 and eclipse-platform#131
amartya4256 added a commit to amartya4256/eclipse.platform.swt that referenced this issue Jun 13, 2024
This contributes to multi zoom level support for font metrics for win32 which can be extended by clients to get metrics about font for different zoom level

Contributes to eclipse-platform#62 and eclipse-platform#131
fedejeanne pushed a commit that referenced this issue Jun 13, 2024
This contributes to multi zoom level support for font metrics for win32 which can be extended by clients to get metrics about font for different zoom level

Contributes to #62 and #131
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed Windows Happens on Windows OS
Projects
None yet
Development

No branches or pull requests

3 participants