-
Notifications
You must be signed in to change notification settings - Fork 137
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
Comments
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.
Anyone has another idea for an approach about that topic or am I missing a basic concept here? |
…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
…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
…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
…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
…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
…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
…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
…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
…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
…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
…ch can be extended by other resources and widgets. Contributes to eclipse-platform#62 and eclipse-platform#131
…ch can be extended by other resources and widgets. Contributes to eclipse-platform#62 and eclipse-platform#131
…ch can be extended by other resources and widgets. Contributes to eclipse-platform#62 and eclipse-platform#131
…ch can be extended by other resources and widgets. Contributes to eclipse-platform#62 and eclipse-platform#131
…ch can be extended by other resources and widgets. Contributes to eclipse-platform#62 and eclipse-platform#131
…ch can be extended by other resources and widgets. Contributes to eclipse-platform#62 and eclipse-platform#131
…ch can be extended by other resources and widgets. Contributes to eclipse-platform#62 and eclipse-platform#131
…ch can be extended by other resources and widgets. Contributes to eclipse-platform#62 and eclipse-platform#131
This commit adds a listener for the ZoomChanged event to the wrapped control of an ImageBasedFrame. If the listener is notified of this event this means, that the size and position of the wrapped control could be changed due to the zoom change. Therefor, the control is packed and repositioned. The event is currently thrown for wrapped controls only in win32 with "swt.autoScale.updateOnRuntime"-flag set to true Contributes to eclipse-platform/eclipse.platform.swt#62 and eclipse-platform/eclipse.platform.swt#131
This commit prevents an ArrayIndexOutOfBounds exception, when the commandIds of toolbar buttons are not in line with button count, e.g. there is an id higher than the button count. Contributes to eclipse-platform#62 and eclipse-platform#131
This commit adds a listener for the ZoomChanged event to the wrapped control of an ImageBasedFrame. If the listener is notified of this event this means, that the size and position of the wrapped control could be changed due to the zoom change. Therefor, the control is packed and repositioned. The event is currently thrown for wrapped controls only in win32 with "swt.autoScale.updateOnRuntime"-flag set to true Contributes to eclipse-platform/eclipse.platform.swt#62 and eclipse-platform/eclipse.platform.swt#131
This commit prevents an ArrayIndexOutOfBounds exception, when the commandIds of toolbar buttons are not in line with button count, e.g. there is an id higher than the button count. Contributes to eclipse-platform#62 and eclipse-platform#131
This commit prevents an ArrayIndexOutOfBounds exception, when the commandIds of toolbar buttons are not in line with button count, e.g. there is an id higher than the button count. Contributes to eclipse-platform#62 and eclipse-platform#131
This commit properly creates scaled variants of an ImageList if there a null images contained in the source ImageList Contributes to eclipse-platform#62 and eclipse-platform#131
This commit properly creates scaled variants of an ImageList if there a null images contained in the source ImageList Contributes to eclipse-platform#62 and eclipse-platform#131
This commit properly creates scaled variants of an ImageList if there a null images contained in the source ImageList Contributes to eclipse-platform#62 and eclipse-platform#131
This commit properly creates scaled variants of an ImageList if there a null images contained in the source ImageList Contributes to eclipse-platform#62 and eclipse-platform#131
This commit properly creates scaled variants of an ImageList if there a null images contained in the source ImageList Contributes to eclipse-platform#62 and eclipse-platform#131
This commit properly creates scaled variants of an ImageList if there a null images contained in the source ImageList Contributes to eclipse-platform#62 and eclipse-platform#131
This commit replaces the OS calls for OpenThemeData with calls to the dpi dependent equivalent OpenThemeDataForDpi. Therefor the handling of loading/unloading of theme in Display is refactored to be able to manage multiple DPI dependent variants of a theme in multi zoom environments Contributes to eclipse-platform#62 nd eclipse-platform#131
This commit replaces the OS calls for OpenThemeData with calls to the dpi dependent equivalent OpenThemeDataForDpi. Therefor the handling of loading/unloading of theme in Display is refactored to be able to manage multiple DPI dependent variants of a theme in multi zoom environments Contributes to eclipse-platform#62 nd eclipse-platform#131
This commit replaces the OS calls for OpenThemeData with calls to the dpi dependent equivalent OpenThemeDataForDpi. Therefor the handling of loading/unloading of theme in Display is refactored to be able to manage multiple DPI dependent variants of a theme in multi zoom environments Contributes to eclipse-platform#62 nd eclipse-platform#131
This commit replaces the OS calls for OpenThemeData with calls to the dpi dependent equivalent OpenThemeDataForDpi. Therefor the handling of loading/unloading of theme in Display is refactored to be able to manage multiple DPI dependent variants of a theme in multi zoom environments Contributes to eclipse-platform#62 nd eclipse-platform#131
This commit moves the initialization of the thread DPI awareness into the creation method. It was done too late before which resulted in all calls do Display::messageProc being executed with the wrong DPI awarness of the thread dpi awareness differs from the process DPI awareness. Contributes to eclipse-platform#62 and eclipse-platform#131
This commit moves the initialization of the thread DPI awareness into the creation method. It was done too late before which resulted in all calls do Display::messageProc being executed with the wrong DPI awarness of the thread dpi awareness differs from the process DPI awareness. Contributes to eclipse-platform#62 and eclipse-platform#131
This commit replaces the OS calls for OpenThemeData with calls to the dpi dependent equivalent OpenThemeDataForDpi. Therefor the handling of loading/unloading of theme in Display is refactored to be able to manage multiple DPI dependent variants of a theme in multi zoom environments Contributes to eclipse-platform#62 nd eclipse-platform#131
This commit moves the initialization of the thread DPI awareness into the creation method. It was done too late before which resulted in all calls do Display::messageProc being executed with the wrong DPI awarness of the thread dpi awareness differs from the process DPI awareness. Contributes to #62 and #131
This commit replaces the OS calls for OpenThemeData with calls to the dpi dependent equivalent OpenThemeDataForDpi. Therefor the handling of loading/unloading of theme in Display is refactored to be able to manage multiple DPI dependent variants of a theme in multi zoom environments Contributes to #62 nd #131
This commit adds a listener for the ZoomChanged event to the wrapped control of an ImageBasedFrame. If the listener is notified of this event this means, that the size and position of the wrapped control could be changed due to the zoom change. Therefor, the control is packed and repositioned. The event is currently thrown for wrapped controls only in win32 with "swt.autoScale.updateOnRuntime"-flag set to true Contributes to eclipse-platform/eclipse.platform.swt#62 and eclipse-platform/eclipse.platform.swt#131
This commit adds a listener for the ZoomChanged event to the canvas of a LineNumberRulerColumn. If the listener is notified of this event this means, that state, that differs over different zoom values, must be recalculated. Therefore the indentation are reset, when the event occurs. Contributes to eclipse-platform/eclipse.platform.swt#62 and eclipse-platform/eclipse.platform.swt#131
This commit adds a listener for the ZoomChanged event to the canvas of a LineNumberRulerColumn. If the listener is notified of this event this means, that state, that differs over different zoom values, must be recalculated. Therefore the indentation are reset, when the event occurs. Contributes to eclipse-platform/eclipse.platform.swt#62 and eclipse-platform/eclipse.platform.swt#131
This commit adds a workaround for ImageDataProvider implementations that instantiate new Images inside the getImageData(zoom) implementation. This image can be instantiated with the wrong zoom in a multi zoom setting as Images still relay on the static zoom value in DPIUtil. This workaround should be replaced by a proper solution. Contributes to eclipse-platform#62 and eclipse-platform#131
This commit adds a listener for the ZoomChanged event to the canvas of a LineNumberRulerColumn. If the listener is notified of this event this means, that state, that differs over different zoom values, must be recalculated. Therefore the indentation are reset, when the event occurs. Contributes to eclipse-platform/eclipse.platform.swt#62 and eclipse-platform/eclipse.platform.swt#131
This commit adds a workaround for ImageDataProvider implementations that instantiate new Images inside the getImageData(zoom) implementation. This image can be instantiated with the wrong zoom in a multi zoom setting as Images still relay on the static zoom value in DPIUtil. This workaround should be replaced by a proper solution. Contributes to eclipse-platform#62 and eclipse-platform#131
This commit adds a workaround for ImageDataProvider implementations that instantiate new Images inside the getImageData(zoom) implementation. This image can be instantiated with the wrong zoom in a multi zoom setting as Images still relay on the static zoom value in DPIUtil. This workaround should be replaced by a proper solution. Contributes to eclipse-platform#62 and eclipse-platform#131
This commit adds a workaround for ImageDataProvider implementations that instantiate new Images inside the getImageData(zoom) implementation. This image can be instantiated with the wrong zoom in a multi zoom setting as Images still relay on the static zoom value in DPIUtil. This workaround should be replaced by a proper solution. Contributes to #62 and #131
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.
The text was updated successfully, but these errors were encountered: