aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYuuki Harano2021-06-05 20:53:31 +0900
committerYuuki Harano2021-06-05 20:53:31 +0900
commitce7a78d0a8e033f04978b0c0762378ba13d3fa64 (patch)
treedb00663ee6db5c5c8eb2770c64118617a232c7eb /src
parentc6ada6e9f1f82d36a05ecc49844e9400e0da8fdd (diff)
downloademacs-ce7a78d0a8e033f04978b0c0762378ba13d3fa64.tar.gz
emacs-ce7a78d0a8e033f04978b0c0762378ba13d3fa64.zip
Support frame-scale-factor on pgtk frames
* src/pgtkfns.c (pgtk_frame_scale_factor): New function to get frame scale factor. * src/frame.h: Call it when a pgtk frame. * src/pgtkterm.h: Add the declaration.
Diffstat (limited to 'src')
-rw-r--r--src/frame.h2
-rw-r--r--src/pgtkfns.c20
-rw-r--r--src/pgtkterm.h2
3 files changed, 24 insertions, 0 deletions
diff --git a/src/frame.h b/src/frame.h
index 1aba1e3bc47..b1ad525779c 100644
--- a/src/frame.h
+++ b/src/frame.h
@@ -920,6 +920,8 @@ default_pixels_per_inch_y (void)
920/* Scale factor of frame F. */ 920/* Scale factor of frame F. */
921#if defined HAVE_NS 921#if defined HAVE_NS
922# define FRAME_SCALE_FACTOR(f) (FRAME_NS_P (f) ? ns_frame_scale_factor (f) : 1) 922# define FRAME_SCALE_FACTOR(f) (FRAME_NS_P (f) ? ns_frame_scale_factor (f) : 1)
923#elif defined HAVE_PGTK
924# define FRAME_SCALE_FACTOR(f) (FRAME_PGTK_P (f) ? pgtk_frame_scale_factor (f) : 1)
923#else 925#else
924# define FRAME_SCALE_FACTOR(f) 1 926# define FRAME_SCALE_FACTOR(f) 1
925#endif 927#endif
diff --git a/src/pgtkfns.c b/src/pgtkfns.c
index 5f114515c92..ceff279ad02 100644
--- a/src/pgtkfns.c
+++ b/src/pgtkfns.c
@@ -2728,6 +2728,26 @@ Internal use only, use `display-monitor-attributes-list' instead. */)
2728 return attributes_list; 2728 return attributes_list;
2729} 2729}
2730 2730
2731double
2732pgtk_frame_scale_factor (struct frame *f)
2733{
2734 struct pgtk_display_info *dpyinfo = FRAME_DISPLAY_INFO (f);
2735 GdkDisplay *gdpy = dpyinfo->gdpy;
2736
2737 block_input ();
2738
2739 GdkWindow *gwin = gtk_widget_get_window (FRAME_GTK_WIDGET (f));
2740 GdkMonitor *gmon = gdk_display_get_monitor_at_window (gdpy, gwin);
2741
2742 /* GTK returns scaled sizes for the workareas. */
2743 double scale = pgtk_get_monitor_scale_factor (gdk_monitor_get_model (gmon));
2744 if (scale == 0.0)
2745 scale = gdk_monitor_get_scale_factor (gmon);
2746
2747 unblock_input ();
2748
2749 return scale;
2750}
2731 2751
2732DEFUN ("x-display-planes", Fx_display_planes, Sx_display_planes, 0, 1, 0, 2752DEFUN ("x-display-planes", Fx_display_planes, Sx_display_planes, 0, 1, 0,
2733 doc: /* Return the number of bitplanes of the display TERMINAL. 2753 doc: /* Return the number of bitplanes of the display TERMINAL.
diff --git a/src/pgtkterm.h b/src/pgtkterm.h
index 07d7fc10c65..c87a5e13ec0 100644
--- a/src/pgtkterm.h
+++ b/src/pgtkterm.h
@@ -663,4 +663,6 @@ extern bool xg_set_icon_from_xpm_data (struct frame *f, const char **data);
663 663
664extern bool pgtk_text_icon (struct frame *f, const char *icon_name); 664extern bool pgtk_text_icon (struct frame *f, const char *icon_name);
665 665
666extern double pgtk_frame_scale_factor (struct frame *);
667
666#endif /* HAVE_PGTK */ 668#endif /* HAVE_PGTK */