diff options
| author | Yuuki Harano | 2021-06-05 20:53:31 +0900 |
|---|---|---|
| committer | Yuuki Harano | 2021-06-05 20:53:31 +0900 |
| commit | ce7a78d0a8e033f04978b0c0762378ba13d3fa64 (patch) | |
| tree | db00663ee6db5c5c8eb2770c64118617a232c7eb /src | |
| parent | c6ada6e9f1f82d36a05ecc49844e9400e0da8fdd (diff) | |
| download | emacs-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.h | 2 | ||||
| -rw-r--r-- | src/pgtkfns.c | 20 | ||||
| -rw-r--r-- | src/pgtkterm.h | 2 |
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 | ||
| 2731 | double | ||
| 2732 | pgtk_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 | ||
| 2732 | DEFUN ("x-display-planes", Fx_display_planes, Sx_display_planes, 0, 1, 0, | 2752 | DEFUN ("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 | ||
| 664 | extern bool pgtk_text_icon (struct frame *f, const char *icon_name); | 664 | extern bool pgtk_text_icon (struct frame *f, const char *icon_name); |
| 665 | 665 | ||
| 666 | extern double pgtk_frame_scale_factor (struct frame *); | ||
| 667 | |||
| 666 | #endif /* HAVE_PGTK */ | 668 | #endif /* HAVE_PGTK */ |