emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 2c541d8: * lisp/frame.el (make-frame-on-monitor): D


From: Juri Linkov
Subject: [Emacs-diffs] master 2c541d8: * lisp/frame.el (make-frame-on-monitor): Don't set height and width.
Date: Tue, 19 Mar 2019 17:32:58 -0400 (EDT)

branch: master
commit 2c541d84785d9dc1dcb6eacb7d9f8862668c1893
Author: Juri Linkov <address@hidden>
Commit: Juri Linkov <address@hidden>

    * lisp/frame.el (make-frame-on-monitor): Don't set height and width.
    
    Don't use x-parse-geometry.  Delete nil from completions (Bug#34516)
---
 lisp/frame.el | 36 ++++++++++++++----------------------
 1 file changed, 14 insertions(+), 22 deletions(-)

diff --git a/lisp/frame.el b/lisp/frame.el
index dd1d5b0..c5802e3 100644
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -678,28 +678,20 @@ The optional argument DISPLAY can be a display name, and 
the optional
 argument PARAMETERS specifies additional frame parameters."
   (interactive (list (completing-read
                       (format "Make frame on monitor: ")
-                      (mapcar (lambda (a)
-                                (cdr (assq 'name a)))
-                              (display-monitor-attributes-list)))))
-  (let* ((monitor-geometry
-          (car (delq nil (mapcar (lambda (a)
-                                   (when (equal (cdr (assq 'name a)) monitor)
-                                     (cdr (assq 'workarea a))))
-                                 (display-monitor-attributes-list display)))))
-         (frame-geometry
-          (when monitor-geometry
-            (x-parse-geometry (format "%dx%d+%d+%d"
-                                      (nth 2 monitor-geometry)
-                                      (nth 3 monitor-geometry)
-                                      (nth 0 monitor-geometry)
-                                      (nth 1 monitor-geometry)))))
-         (frame-geometry-in-pixels
-          (when frame-geometry
-            `((top . ,(cdr (assq 'top frame-geometry)))
-              (left . ,(cdr (assq 'left frame-geometry)))
-              (height . (text-pixels . ,(cdr (assq 'height frame-geometry))))
-              (width . (text-pixels . ,(cdr (assq 'width frame-geometry))))))))
-    (make-frame (append frame-geometry-in-pixels parameters))))
+                      (or (delq nil (mapcar (lambda (a)
+                                              (cdr (assq 'name a)))
+                                            (display-monitor-attributes-list)))
+                          '("")))))
+  (let* ((monitor-workarea
+          (catch 'done
+            (dolist (a (display-monitor-attributes-list display))
+              (when (equal (cdr (assq 'name a)) monitor)
+                (throw 'done (cdr (assq 'workarea a)))))))
+         (geometry-parameters
+          (when monitor-workarea
+            `((top . ,(nth 1 monitor-workarea))
+              (left . ,(nth 0 monitor-workarea))))))
+    (make-frame (append geometry-parameters parameters))))
 
 (declare-function x-close-connection "xfns.c" (terminal))
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]