Subject: Re: bug#14970: crash deleting frames

From: Juanma Barranquero <[email-masked]>
Date: Sun, 28 Jul 2013 19:34:23 +0200

On Sun, Jul 28, 2013 at 7:28 PM, Eli Zaretskii <[email-masked]> wrote:

> Did you create the frames manually, or do you have some Lisp to
> sweeten the pill?

I was using this. Dimensions are harcoded to make frames be totally or
partially offscren in my 1920x1040 workarea.

If you create the frames and then save the frame config with desktop
and restore with the current default, those frames that are totally
offscreen should be moved onscreen. Once that has finished, you can
start clicking Close buttons happily.

(defvar test-frame-alist-list  ;; 1920 x 1040
  '(
    ((name . "top full (400 -3000)")      (left .   400) (top + -3000))
    ((name . "top part (500 -200)")       (left .   500) (top +  -200)) ;ok
    ((name . "bot full (400 4000)")       (left .   400) (top .  4000))
    ((name . "bot part (500 900)")        (left .   500) (top .   900)) ;ok
    ((name . "left full (-3000 300)")     (left + -3000) (top .   300))
    ((name . "left part (-400 300)")      (left +  -400) (top .   300)) ;ok
    ((name . "right full (4000 200)")     (left .  4000) (top .   200))
    ((name . "right part (1800 300)")     (left .  1800) (top .   300)) ;ok
    ((name . "upleft full (-2000 -2000)") (left + -2000) (top + -2000))
    ((name . "upleft part (-100 -100)")   (left +  -100) (top +  -100)) ;ok
    ((name . "dnleft full (-2000 3000)")  (left + -2000) (top .  3000))
    ((name . "dnleft part (-300 800)")    (left +  -300) (top .   800)) ;ok
    ((name . "upright full (3000 -2000)") (left .  3000) (top + -2000))
    ((name . "upright part (1700 -200)")  (left .  1700) (top +  -200)) ;ok
    ((name . "dnright full (3000 3000)")  (left .  3000) (top .  3000))
    ((name . "dnright part (1600 900)")   (left .  1600) (top .   900)) ;ok
    ((name . "top full width")  (left . 100) (top + -1000) (width . 400))
    ((name . "top full height") (left . 100) (top + -6000)
  (height . 300))
    ((name . "top full full")   (left . 100) (top + -6000) (width .
400) (height . 300))
    ((name . "top part width")  (left . 100) (top + -300)  (width . 400))
    ((name . "top part height") (left . 200) (top + -3900)
  (height . 300))
    ((name . "top part full")   (left . 300) (top + -4200) (width .
400) (height . 300))
    ((name . "left full width")  (left + -4000) (top . 200) (width . 400))
    ((name . "left full height") (left + -4000) (top . 300)
   (height . 300))
    ((name . "left full full")   (left + -4000) (top . 400) (width .
400) (height . 300))
    ((name . "left part width")  (left + -3000) (top . 200) (width . 400))
    ((name . "left part height") (left +  -300) (top . 300)
   (height . 300))
    ((name . "left part full")   (left + -3200) (top . 400) (width .
400) (height . 300))
    ((name . "bot full width")  (left . 100) (top . 2000) (width . 400))
    ((name . "bot full height") (left . 200) (top . 3000)
 (height . 300))
    ((name . "bot full full")   (left . 300) (top . 4000) (width .
400) (height . 300))
    ((name . "bot part width")  (left . 100) (top . 700) (width . 400))
    ((name . "bot part height") (left . 200) (top . 800)
(height . 300))
    ((name . "bot part full")   (left . 300) (top . 900) (width . 400)
(height . 300))
    ((name . "right full width")  (left . 3000) (top . 200) (width . 400))
    ((name . "right full height") (left . 3000) (top . 300)
   (height . 300))
    ((name . "right full full")   (left . 3000) (top . 400) (width .
400) (height . 300))
    ((name . "right part width")  (left . 1600) (top . 200) (width . 400))
    ((name . "right part height") (left . 1700) (top . 300)
   (height . 300))
    ((name . "right part full")   (left . 1800) (top . 400) (width .
400) (height . 300))
    ((name . "upleft full width")  (left + -3000) (top + -1000) (width . 400))
    ((name . "upleft full height") (left + -3000) (top + -6000)
       (height . 300))
    ((name . "upleft full full")   (left + -3000) (top + -6000) (width
. 400) (height . 300))
    ((name . "upleft part width")  (left + -3000) (top + -300)  (width . 400))
    ((name . "upleft part height") (left + -500) (top + -3900)
      (height . 300))
    ((name . "upleft part full")   (left + -3200) (top + -4200) (width
. 400) (height . 300))
    ))

(defun make-all ()
  (interactive)
  (dolist (frame-cfg test-frame-alist-list)
   (modify-frame-parameters (make-frame) frame-cfg)))