unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Drew Adams <drew.adams@oracle.com>
To: Juanma Barranquero <lekktu@gmail.com>,
	Stephen Leake <stephen_leake@member.fsf.org>
Cc: Emacs developers <emacs-devel@gnu.org>
Subject: RE: How to restore the layout?
Date: Sat, 29 Jun 2013 16:48:36 -0700 (PDT)	[thread overview]
Message-ID: <b4f9bbb0-35de-40de-8fef-d93a489a97f6@default> (raw)
In-Reply-To: <CAAeL0SSyRuZktiwwj+t-JdZoz1qmr757N+83FkNFZz2Nfp_FsQ@mail.gmail.com>

> > Moving the frame outside the current display is an issue; it would be
> > nice if the restore could detect that, and keep the frames in view.
> 
> How can I do that? Is there any way to get from Emacs the maximum
> dimensions of a frame in the current display, other than
> 
> (let ((frame (make-frame '((fullscreen . maximized)))))
>   (prog1
>       (cons (frame-width frame) (frame-height frame))
>     (delete-frame frame)))
> 
> which has the downside of being noticeable to the user?

Dunno whether it helps, but this is what I do in frame-cmds.el,
to determine the screen space available for positioning and
resizing frames, e.g., for moving them about or tiling them.

1. Provide a user option, `available-screen-pixel-bounds', which
defaults to nil and otherwise is a list of the pixel coordinates
of the upper left and the lower right corners of the available
screen space, measured from screen absolute origin, (0, 0), at
the upper left.

For example,  (x0 y0 x1 y1), where (x0, y0) is the upper left
position and (x1, y1) is the lower right position.

2. If the option is nil then the available space is calculated
by the function with the same name.  It tries to return the
currently available screen area.  The option is available to
let you declare some known outside area off limits (e.g., the MS
Windows task bar).

(defun available-screen-pixel-bounds ()
  (or available-screen-pixel-bounds
      (if (fboundp 'mac-display-available-pixel-bounds) ; Mac-OS
          (mac-display-available-pixel-bounds)
        (list 0 0 (x-display-pixel-width)
                  (x-display-pixel-height)))))

3. Function `effective-screen-pixel-bounds' starts with
`available-screen-pixel-bounds' and removes the space used by
the standalone minibuffer frame of oneonone.el:

(defun effective-screen-pixel-bounds ()
  (if (boundp '1on1-minibuffer-frame)
      (append
       (butlast (available-screen-pixel-bounds))
       (list
        (frame-geom-value-numeric
         'top (cdr (assq 'top (frame-parameters
                               1on1-minibuffer-frame))))))
    (available-screen-pixel-bounds)))

[`frame-geom-value-numeric' returns a numeric value (pixels)
 that is equivalent to a frame geometry spec.  Examples: 

  Assuming display height/width=1024, frame height/width=600:
  300 inside display edge:                   300  =>  300
                                         (+  300) =>  300
  300 inside opposite display edge:      (-  300) => -300
                                            -300  => -300
  300 beyond display edge
   (= 724 inside opposite display edge): (+ -300) => -724
  300 beyond display edge
   (= 724 inside opposite display edge): (- -300) =>  724

 In the last two examples, the returned value is relative to the
 opposite frame edge from the edge indicated in the input spec.]

Again, dunno whether such an approach helps you.  It is based on
`x-display-pixel-(width|height)'.  Whether that helps when using
multiple monitors etc., I'm not sure.  The idea of letting users
override an available-space calculation might be something to
consider, at least.

4. In the same library, frame-cmds.el, I have commands that
move a frame incrementally up/down/left/right.  You can easily
move a frame off the display that way, so you no longer see it.
Or you can move it back onto the display, if off.

There is a user option, `move-frame-wrap-within-display-flag',
that determines whether continuing to move a frame in some
direction brings it back around from the opposite screen border,
i.e., wraps the movement so the frame comes back onto the display.
If the option is nil then you can keep moving a frame as far off
the display as you like.

IIRC, with multiple displays, moving a frame off of one display
can move it onto another.

HTH.



  reply	other threads:[~2013-06-29 23:48 UTC|newest]

Thread overview: 264+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-22 13:45 How to restore the layout? Angelo Graziosi
2013-06-22 23:01 ` Xue Fuqiao
2013-06-23 10:24   ` Angelo Graziosi
2013-06-23  8:26 ` martin rudalics
2013-06-23 10:35   ` Angelo Graziosi
2013-06-24 17:05     ` martin rudalics
2013-06-24 17:23       ` Juanma Barranquero
2013-06-24 17:30         ` Eli Zaretskii
2013-06-24 17:52           ` Juanma Barranquero
2013-06-24 18:18             ` Eli Zaretskii
2013-06-24 18:33               ` Stephen Berman
2013-06-24 18:33             ` Stephen Berman
2013-06-24 20:10               ` Juanma Barranquero
2013-06-24 20:11                 ` Juanma Barranquero
2013-06-24 20:22                 ` Jambunathan K
2013-06-24 20:28                   ` Juanma Barranquero
2013-06-24 20:57                     ` martin rudalics
2013-06-24 22:47                       ` Juanma Barranquero
2013-06-24 23:38                         ` Juri Linkov
2013-06-24 23:43                           ` Juanma Barranquero
2013-06-25  6:03                             ` Juri Linkov
2013-06-25 16:05                               ` Juanma Barranquero
2013-06-25  6:46                         ` martin rudalics
2013-06-25 15:32                           ` Juanma Barranquero
2013-06-25 16:32                             ` Stefan Monnier
2013-06-25 16:38                               ` martin rudalics
2013-06-25 17:21                                 ` Juanma Barranquero
2013-06-25 21:36                                   ` Angelo Graziosi
2013-06-25 21:40                                     ` Juanma Barranquero
2013-06-26  0:52                                       ` chad
2013-06-26 14:03                                         ` chad
2013-06-26 17:21                                           ` Juanma Barranquero
2013-06-26 18:27                                             ` martin rudalics
2013-06-26 23:05                                               ` Juanma Barranquero
2013-06-27  2:35                                                 ` Stefan Monnier
2013-06-27  2:57                                                   ` Juanma Barranquero
2013-06-27  4:30                                                     ` Stefan Monnier
2013-06-27  8:55                                                       ` Juanma Barranquero
2013-06-27 15:20                                                         ` Stefan Monnier
2013-06-27 15:23                                                           ` Juanma Barranquero
2013-06-27  8:05                                                 ` martin rudalics
2013-06-27  9:00                                                   ` Juanma Barranquero
2013-06-27  9:38                                                     ` martin rudalics
2013-06-27 21:02                                                       ` Juanma Barranquero
2013-06-28  6:34                                                         ` martin rudalics
2013-06-28 11:53                                                           ` Juanma Barranquero
2013-06-28 14:02                                                             ` martin rudalics
2013-06-27 13:29                                       ` Angelo Graziosi
2013-06-27 14:05                                         ` Juanma Barranquero
2013-06-27 14:31                                           ` Angelo Graziosi
2013-06-27 14:45                                             ` Juanma Barranquero
2013-06-27 18:27                                               ` martin rudalics
2013-06-27 20:30                                                 ` Juanma Barranquero
2013-06-27 20:49                                                   ` martin rudalics
2013-06-27 20:52                                                     ` Juanma Barranquero
2013-06-27 21:00                                                       ` martin rudalics
2013-06-27 21:03                                                         ` Juanma Barranquero
2013-06-27 23:33                                                           ` Juanma Barranquero
2013-06-28  6:07                                                             ` Eli Zaretskii
2013-06-28  8:17                                                               ` Jan Djärv
2013-06-28 11:54                                                                 ` Juanma Barranquero
2013-06-28 11:48                                                               ` Juanma Barranquero
2013-06-28 17:55                                                                 ` Eli Zaretskii
2013-06-28 18:15                                                                   ` Stefan Monnier
2013-06-28 17:22                                                               ` Stefan Monnier
2013-06-28 17:51                                                                 ` Juanma Barranquero
2013-06-28 19:36                                                                   ` Stefan Monnier
2013-06-29  0:54                                                                     ` Juanma Barranquero
2013-06-29  8:29                                                                       ` martin rudalics
2013-06-29 22:06                                                                         ` Juanma Barranquero
2013-06-30  9:35                                                                           ` martin rudalics
2013-06-30 10:32                                                                             ` Juanma Barranquero
2013-06-30 12:55                                                                               ` martin rudalics
2013-06-30 17:55                                                                                 ` Juanma Barranquero
2013-07-01  6:48                                                                                   ` martin rudalics
2013-07-04 20:41                                                                                   ` Angelo Graziosi
2013-07-04 21:34                                                                                     ` Juanma Barranquero
2013-07-04 23:10                                                                                       ` Angelo Graziosi
2013-07-04 23:19                                                                                         ` Juanma Barranquero
2013-07-05  7:45                                                                                           ` martin rudalics
2013-07-05  9:37                                                                                             ` Juanma Barranquero
2013-07-05 14:02                                                                                               ` Angelo Graziosi
2013-07-05 14:55                                                                                                 ` Juanma Barranquero
2013-07-05 15:02                                                                                                   ` Angelo Graziosi
2013-07-05 15:10                                                                                                     ` Juanma Barranquero
2013-07-05 15:30                                                                                                       ` martin rudalics
2013-07-05 15:39                                                                                                         ` Juanma Barranquero
2013-07-05 15:54                                                                                                           ` martin rudalics
2013-07-05 16:02                                                                                                             ` Juanma Barranquero
2013-07-05 17:03                                                                                                               ` martin rudalics
2013-07-05 17:06                                                                                                                 ` Juanma Barranquero
2013-07-05 17:37                                                                                                                   ` martin rudalics
2013-07-06 14:32                                                                                                                 ` Juanma Barranquero
2013-07-07 10:57                                                                                                                   ` martin rudalics
2013-07-05 15:21                                                                                                   ` martin rudalics
2013-07-05 15:26                                                                                                     ` Juanma Barranquero
2013-07-05 15:39                                                                                                       ` martin rudalics
2013-07-05 15:40                                                                                                         ` Juanma Barranquero
2013-07-05 15:55                                                                                                           ` martin rudalics
2013-07-05 17:04                                                                                                       ` Angelo Graziosi
2013-07-05 17:09                                                                                                         ` Juanma Barranquero
2013-07-05  7:45                                                                                         ` martin rudalics
2013-07-05 10:07                                                                                           ` Angelo Graziosi
2013-07-05 12:58                                                                                             ` martin rudalics
2013-07-05 13:13                                                                                               ` Jan Djärv
2013-07-05 13:41                                                                                               ` Angelo Graziosi
2013-07-05 14:42                                                                                                 ` martin rudalics
2013-07-05 18:22                                                                                                   ` Eli Zaretskii
2013-07-05 20:30                                                                                                     ` Angelo Graziosi
2013-07-06  8:47                                                                                                       ` martin rudalics
2013-07-06  9:10                                                                                                         ` Angelo Graziosi
2013-07-06 10:44                                                                                                           ` martin rudalics
2013-07-06 11:04                                                                                                             ` Angelo Graziosi
2013-07-06 13:06                                                                                                               ` martin rudalics
2013-07-06 13:18                                                                                                                 ` Eli Zaretskii
2013-07-06 13:43                                                                                                                   ` martin rudalics
2013-07-06 13:53                                                                                                                     ` Eli Zaretskii
2013-07-07 10:56                                                                                                                       ` martin rudalics
2013-07-06 14:27                                                                                                                 ` Angelo Graziosi
2013-07-06 18:57                                                                                                                 ` Drew Adams
2013-07-07 10:57                                                                                                                   ` martin rudalics
2013-07-07 11:32                                                                                                                     ` Juanma Barranquero
2013-07-07 12:46                                                                                                                       ` martin rudalics
2013-07-07 15:53                                                                                                                         ` Drew Adams
2013-07-08  6:47                                                                                                                           ` martin rudalics
2013-07-08 13:56                                                                                                                             ` Drew Adams
2013-07-08 17:29                                                                                                                               ` Juanma Barranquero
2013-07-09  9:08                                                                                                                                 ` martin rudalics
2013-07-09  9:07                                                                                                                               ` martin rudalics
2013-07-09 15:32                                                                                                                                 ` Drew Adams
2013-07-10  7:20                                                                                                                                   ` martin rudalics
2013-07-10 13:50                                                                                                                                     ` Drew Adams
2013-07-06  9:13                                                                                                         ` Juanma Barranquero
2013-07-06 10:44                                                                                                           ` martin rudalics
2013-07-06 14:39                                                                                                             ` Juanma Barranquero
2013-07-05  7:44                                                                                       ` martin rudalics
2013-06-29  8:51                                                                   ` Stephen Leake
2013-06-29 18:00                                                                     ` chad
2013-06-29 18:12                                                                       ` Eli Zaretskii
2013-06-29 22:36                                                                     ` Juanma Barranquero
2013-06-30 15:27                                                                       ` Stephen Leake
2013-06-30 18:12                                                                         ` Juanma Barranquero
2013-06-28  8:13                                                     ` Jan Djärv
2013-06-28  8:31                                                       ` martin rudalics
2013-06-28  8:46                                                         ` Jan Djärv
     [not found]                                                           ` <51CD5489.10902@g>
2013-06-28  9:16                                                           ` martin rudalics
2013-06-28 10:01                                                             ` Jan Djärv
2013-06-28 10:19                                                               ` martin rudalics
2013-06-28 10:26                                                                 ` Jan Djärv
2013-06-28 11:50                                                                   ` martin rudalics
2013-06-29  8:47                                                                     ` Stephen Leake
2013-06-29 22:26                                                                       ` Juanma Barranquero
2013-06-30 15:25                                                                         ` Stephen Leake
2013-06-30 18:09                                                                           ` Juanma Barranquero
2013-06-28 12:46                                                                   ` Eli Zaretskii
2013-06-28 14:03                                                                     ` martin rudalics
2013-06-28 14:58                                                                       ` Eli Zaretskii
2013-06-28 15:06                                                                         ` Juanma Barranquero
2013-06-28 17:53                                                                           ` Eli Zaretskii
2013-06-29  0:49                                                                             ` Juanma Barranquero
2013-06-28 15:22                                                                       ` Jan Djärv
2013-06-28 15:32                                                                         ` Juanma Barranquero
2013-06-28 15:53                                                                           ` Jan Djärv
2013-06-28 12:05                                                                 ` Juanma Barranquero
2013-06-28 13:06                                                                   ` Eli Zaretskii
2013-06-28 13:22                                                                     ` Juanma Barranquero
2013-06-28 14:51                                                                       ` Eli Zaretskii
2013-06-28 15:22                                                                         ` Juanma Barranquero
2013-06-28 17:52                                                                           ` Eli Zaretskii
2013-06-29  0:47                                                                             ` Juanma Barranquero
2013-06-29  8:39                                                                               ` Stephen Leake
2013-06-29 22:18                                                                                 ` Juanma Barranquero
2013-06-29 23:48                                                                                   ` Drew Adams [this message]
2013-06-30 10:16                                                                                     ` Juanma Barranquero
2013-06-30 16:30                                                                                       ` Drew Adams
2013-06-30 18:15                                                                                         ` Juanma Barranquero
2013-06-30  7:51                                                                                   ` Jan Djärv
2013-06-30  9:35                                                                                     ` martin rudalics
2013-06-30 10:01                                                                                       ` Jan Djärv
2013-06-30 10:11                                                                                         ` martin rudalics
2013-06-30 10:34                                                                                           ` Juanma Barranquero
2013-06-30 10:29                                                                                     ` Juanma Barranquero
2013-06-30 12:55                                                                                       ` martin rudalics
2013-06-30 18:03                                                                                         ` Juanma Barranquero
2013-06-30 21:32                                                                                           ` Jan Djärv
2013-07-01  0:28                                                                                             ` Juanma Barranquero
2013-07-01  3:31                                                                                               ` Juanma Barranquero
2013-07-01  6:50                                                                                                 ` martin rudalics
2013-07-01 10:38                                                                                                   ` Juanma Barranquero
2013-07-02 10:38                                                                                                     ` martin rudalics
2013-07-02 16:32                                                                                                       ` Juanma Barranquero
2013-07-03  9:27                                                                                                         ` martin rudalics
2013-07-03 10:36                                                                                                           ` Juanma Barranquero
2013-07-03 12:42                                                                                                             ` martin rudalics
2013-07-03 14:20                                                                                                               ` Juanma Barranquero
2013-07-03 14:32                                                                                                                 ` Juanma Barranquero
2013-07-04  9:35                                                                                                                 ` martin rudalics
2013-07-03 14:08                                                                                                           ` Drew Adams
2013-07-08  2:50                                                                                                       ` Juanma Barranquero
2013-07-08  6:47                                                                                                         ` martin rudalics
2013-07-08 12:13                                                                                                           ` Juanma Barranquero
2013-07-01 14:11                                                                                                   ` Drew Adams
2013-07-01 14:40                                                                                                     ` Juanma Barranquero
2013-07-01 16:03                                                                                                       ` Drew Adams
2013-07-01 16:37                                                                                                         ` Juanma Barranquero
2013-07-01 18:03                                                                                                           ` Drew Adams
2013-07-02  0:25                                                                                                             ` Juanma Barranquero
2013-07-02  3:46                                                                                                               ` Drew Adams
2013-07-02 17:32                                                                                                                 ` Juanma Barranquero
2013-07-02 19:40                                                                                                                   ` Drew Adams
2013-07-03  9:03                                                                                                                     ` Juanma Barranquero
2013-07-03  9:34                                                                                                                       ` martin rudalics
2013-07-03 10:38                                                                                                                         ` Juanma Barranquero
2013-07-03 12:42                                                                                                                           ` martin rudalics
2013-07-03 14:35                                                                                                                             ` Juanma Barranquero
2013-07-04  9:35                                                                                                                               ` martin rudalics
2013-07-04 14:17                                                                                                                                 ` Juanma Barranquero
2013-07-05  7:43                                                                                                                                   ` martin rudalics
2013-07-05  9:35                                                                                                                                     ` Juanma Barranquero
2013-07-03 14:08                                                                                                                       ` Drew Adams
2013-07-03 14:54                                                                                                                         ` Juanma Barranquero
2013-07-03  9:27                                                                                                                     ` martin rudalics
2013-07-03 14:08                                                                                                                       ` Drew Adams
2013-07-03  9:27                                                                                                                   ` martin rudalics
2013-07-03 10:37                                                                                                                     ` Juanma Barranquero
2013-07-03 14:08                                                                                                                       ` Drew Adams
2013-07-03 15:16                                                                                                                         ` Juanma Barranquero
2013-07-03 17:01                                                                                                                           ` Drew Adams
2013-06-30 15:23                                                                                   ` Stephen Leake
2013-06-30 15:34                                                                                     ` Eli Zaretskii
2013-06-28 14:03                                                                   ` martin rudalics
2013-06-28 15:12                                                                     ` Juanma Barranquero
2013-06-28 10:22                                                               ` Eli Zaretskii
2013-06-28 11:50                                                                 ` martin rudalics
2013-06-28 12:11                                                                   ` Juanma Barranquero
2013-06-28 12:24                                                                     ` Angelo Graziosi
2013-06-28 13:02                                                                   ` Eli Zaretskii
2013-06-28 14:07                                                                     ` martin rudalics
2013-06-28 14:59                                                                       ` Eli Zaretskii
2013-06-28 12:08                                                                 ` Juanma Barranquero
2013-06-28 13:07                                                                   ` Eli Zaretskii
2013-06-28 13:29                                                                     ` Juanma Barranquero
2013-06-28 14:53                                                                       ` Eli Zaretskii
2013-06-28 15:24                                                                         ` Juanma Barranquero
2013-06-29  8:03                                                                     ` Stephen Leake
2013-06-29  8:11                                                                       ` Eli Zaretskii
2013-06-30 15:29                                                                         ` Stephen Leake
2013-06-30 15:39                                                                           ` Eli Zaretskii
2013-06-28 12:00                                                               ` Juanma Barranquero
2013-06-28 12:31                                                                 ` Jan Djärv
2013-06-28 13:18                                                                   ` Juanma Barranquero
2013-06-28 14:26                                                                     ` Jan Djärv
2013-06-28 15:19                                                                       ` Juanma Barranquero
2013-06-28 14:03                                                                   ` martin rudalics
2013-06-28 15:13                                                                     ` Jan Djärv
2013-06-28 15:14                                                                     ` Juanma Barranquero
2013-06-28 14:02                                                                 ` martin rudalics
2013-06-28 15:10                                                                   ` Juanma Barranquero
2013-06-28 16:17                                                                     ` martin rudalics
2013-06-29  8:41                                                                 ` Stephen Leake
2013-06-28 13:29                                                             ` Drew Adams
2013-06-25  3:22               ` Stephen J. Turnbull
2013-06-24 17:38         ` martin rudalics
2013-06-23 12:28   ` Juanma Barranquero

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b4f9bbb0-35de-40de-8fef-d93a489a97f6@default \
    --to=drew.adams@oracle.com \
    --cc=emacs-devel@gnu.org \
    --cc=lekktu@gmail.com \
    --cc=stephen_leake@member.fsf.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).