linux-packaging-mono/external/bockbuild/packages/patches/gtk/gtk-backing-scale-factor.patch

48 lines
1.7 KiB
Diff
Raw Normal View History

diff --git a/gdk/quartz/gdkscreen-quartz.c b/gdk/quartz/gdkscreen-quartz.c
index e6f0c44e7..3daad2d6e 100644
--- a/gdk/quartz/gdkscreen-quartz.c
+++ b/gdk/quartz/gdkscreen-quartz.c
@@ -83,13 +83,16 @@ _gdk_screen_quartz_init (GdkScreenQuartz *screen_quartz)
{
GdkScreen *screen = GDK_SCREEN (screen_quartz);
NSScreen *nsscreen;
+ NSDictionary *dd;
+ NSSize size;
gdk_screen_set_default_colormap (screen,
gdk_screen_get_system_colormap (screen));
nsscreen = [[NSScreen screens] objectAtIndex:0];
- gdk_screen_set_resolution (screen,
- 72.0 * [nsscreen userSpaceScaleFactor]);
+ dd = [nsscreen deviceDescription];
+ size = [[dd valueForKey:NSDeviceResolution] sizeValue];
+ gdk_screen_set_resolution (screen, size.width / [nsscreen backingScaleFactor]);
gdk_screen_quartz_calculate_layout (screen_quartz);
@@ -357,17 +360,12 @@ gdk_screen_get_height (GdkScreen *screen)
static gint
get_mm_from_pixels (NSScreen *screen, int pixels)
{
- /* userSpaceScaleFactor is in "pixels per point",
- * 72 is the number of points per inch,
- * and 25.4 is the number of millimeters per inch.
- */
-#if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_3
- float dpi = [screen userSpaceScaleFactor] * 72.0;
-#else
- float dpi = 96.0 / 72.0;
-#endif
-
- return (pixels / dpi) * 25.4;
+ const float mm_per_inch = 25.4;
+ NSScreen *nsscreen = [[NSScreen screens] objectAtIndex:0];
+ NSDictionary *dd = [nsscreen deviceDescription];
+ NSSize size = [[dd valueForKey:NSDeviceResolution] sizeValue];
+ float dpi = size.width / [nsscreen backingScaleFactor];
+ return (pixels / dpi) * mm_per_inch;
}
static NSScreen *