]> git.eshelyaron.com Git - emacs.git/commitdiff
Add scale factor in display-monitor-attributes-list.
authorYuuki Harano <masm+github@masm11.me>
Sat, 23 Jan 2021 15:47:50 +0000 (00:47 +0900)
committerYuuki Harano <masm+github@masm11.me>
Sat, 23 Jan 2021 15:47:50 +0000 (00:47 +0900)
* lisp/frame.el (display-monitor-attributes-list): Add the comment.
* src/frame.c (make_monitor_attribute_list): Include the scale factor value.
(syms_of_frame): Declare intern'ed scale-factor.
* src/frame.h (struct MonitorInfo): Add scale_factor member.
* src/pgtkfns.c (Fpgtk_display_monitor_attributes_list): Set the value.

lisp/frame.el
src/frame.c
src/frame.h
src/pgtkfns.c

index 010bab41d2d5feb6c58744918986eadb592b9c64..0aae87b9f4b4b604b96b2a0e495f820519dec5da 100644 (file)
@@ -2253,6 +2253,7 @@ of attribute keys and values as follows:
  mm-size  -- Width and height in millimeters in the form of
             (WIDTH HEIGHT)
  frames   -- List of frames dominated by the physical monitor
+ scale-factor (*) -- Scale factor (float)
  name (*) -- Name of the physical monitor as a string
  source (*) -- Source of multi-monitor information as a string
 
index daaba2abfecffd37805b131fcafe50b917a1d18c..998ddaabb39a017554c072363e55744d0dbeecd2 100644 (file)
@@ -5826,6 +5826,10 @@ make_monitor_attribute_list (struct MonitorInfo *monitors,
                           attributes);
       attributes = Fcons (Fcons (Qframes, AREF (monitor_frames, i)),
                          attributes);
+#ifdef HAVE_PGTK
+      attributes = Fcons (Fcons (Qscale_factor, make_float (mi->scale_factor)),
+                         attributes);
+#endif
       attributes = Fcons (Fcons (Qmm_size,
                                  list2i (mi->mm_width, mi->mm_height)),
                           attributes);
@@ -5938,6 +5942,9 @@ syms_of_frame (void)
 
   DEFSYM (Qworkarea, "workarea");
   DEFSYM (Qmm_size, "mm-size");
+#ifdef HAVE_PGTK
+  DEFSYM (Qscale_factor, "scale-factor");
+#endif
   DEFSYM (Qframes, "frames");
   DEFSYM (Qsource, "source");
 
index 10cb3f52e5ef05a3b23813f982ba56c8b6c1f3df..7372e74cfef008f1ee5448e40720169657b740a3 100644 (file)
@@ -1746,6 +1746,9 @@ struct MonitorInfo {
   Emacs_Rectangle geom, work;
   int mm_width, mm_height;
   char *name;
+#ifdef HAVE_PGTK
+  double scale_factor;
+#endif
 };
 
 extern void free_monitors (struct MonitorInfo *monitors, int n_monitors);
index 63e121f1180d482a2aaadf83e9a4a048648e9507..620680fbdaa3829ad614f43126a5e669b98cecdd 100644 (file)
@@ -2647,6 +2647,7 @@ Internal use only, use `display-monitor-attributes-list' instead.  */)
       mi->work.height = work.height;
       mi->mm_width = width_mm;
       mi->mm_height = height_mm;
+      mi->scale_factor = scale;
 
       dupstring (&mi->name, (gdk_monitor_get_model (monitor)));
     }