diff mbox series

[3/3] Fix zoom scale

Message ID 20230220101342.129689-3-liuyujun@fingera.cn
State New
Headers show
Series [1/3] This reverts commit f14aab420c58b57e07189d6d9e6d3fbfab4761a6. | expand

Commit Message

liuyujun Feb. 20, 2023, 10:13 a.m. UTC
Signed-off-by: Yujun <liuyujun@fingera.cn>
---
 ui/gtk.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)
diff mbox series

Patch

diff --git a/ui/gtk.c b/ui/gtk.c
index 1b43ed31e3..c4c8339d91 100644
--- a/ui/gtk.c
+++ b/ui/gtk.c
@@ -1482,9 +1482,10 @@  static void gd_menu_zoom_fixed(GtkMenuItem *item, void *opaque)
 {
     GtkDisplayState *s = opaque;
     VirtualConsole *vc = gd_vc_find_current(s);
+    int ws = gdk_window_get_scale_factor(gtk_widget_get_window(vc->gfx.drawing_area));
 
-    vc->gfx.scale_x = 1.0;
-    vc->gfx.scale_y = 1.0;
+    vc->gfx.scale_x = 1.0 / ws;
+    vc->gfx.scale_y = 1.0 / ws;
 
     gd_update_windowsize(vc);
 }
@@ -1493,13 +1494,15 @@  static void gd_menu_zoom_fit(GtkMenuItem *item, void *opaque)
 {
     GtkDisplayState *s = opaque;
     VirtualConsole *vc = gd_vc_find_current(s);
+    int ws = gdk_window_get_scale_factor(gtk_widget_get_window(vc->gfx.drawing_area));
 
     if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(s->zoom_fit_item))) {
         s->free_scale = TRUE;
     } else {
+        ws = gdk_window_get_scale_factor(gtk_widget_get_window(vc->gfx.drawing_area));
         s->free_scale = FALSE;
-        vc->gfx.scale_x = 1.0;
-        vc->gfx.scale_y = 1.0;
+        vc->gfx.scale_x = 1.0 / ws;
+        vc->gfx.scale_y = 1.0 / ws;
     }
 
     gd_update_windowsize(vc);