unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Pascal Lambrechts <pascal.lambrechts@uclouvain.be>
To: "38452@debbugs.gnu.org" <38452@debbugs.gnu.org>
Subject: bug#38452: [Pascal Lambrechts] Re: bug#38452: 26.3; set-frame-position is slightly drifted
Date: Tue, 3 Dec 2019 15:04:51 +0000	[thread overview]
Message-ID: <845zixbgbx.fsf@PC-1S0-327.i-did-not-set--mail-host-address--so-tickle-me> (raw)
In-Reply-To: <84r21nl8qq.fsf@PC-1S0-327.i-did-not-set--mail-host-address--so-tickle-me>

[-- Attachment #1: Type: text/plain, Size: 232 bytes --]



-- 
Pascal Lambrechts  --  UCLouvain (SST/SC/MATH IRMP)
building: Marc De Hemptinne (Louvain-la-Neuve) - Local: B 430
phone: +32 (0)104x73161 
IRMP bte L7.01.02 // Chemin du Cyclotron 2 //  1348 Louvain-la-Neuve // Belgium

[-- Attachment #2: Type: message/rfc822, Size: 9732 bytes --]

From: Pascal Lambrechts <pascal.lambrechts@uclouvain.be>
To: martin rudalics <rudalics@gmx.at>
Subject: Re: bug#38452: 26.3; set-frame-position is slightly drifted
Date: Tue, 03 Dec 2019 15:08:23 +0100
Message-ID: <84blspbiy0.fsf@PC-1S0-327.i-did-not-set--mail-host-address--so-tickle-me>

Martin,

I answer some of your quesions inside your mail.
Also at the end of the mail I add a copy of a scratch buffer on which I did
more experiments (with one or two displays).
As you can read in this scratch the behaviour is even more mysterious
now. Indeed if I set the parameters and read them back by
frame-parameter both evaluated in a enclosing progn then I get the
expected values. But if I reread right after the parameters I get 
different values !?

martin rudalics <rudalics@gmx.at> writes:
> Pascal, thanks for replying.  I quote your mail in full below so it
> appears that way on the bug tracker.  Please always use "reply to all"
> when answering, so none of your mails get lost.
>
>  > When I does
>  > (set-frame-position nil 0 0)
>  > the frame jump to the left topmost point of the avalaible screen not
>  > counting the dock (which on my gnome-3 desktop is on the left side) neither the
>  > main menu line.
>  > If I repeat that command the frame does not move.
>  >
>  > But in that situation I get the evaluations:
>  > (frame-parameter nil 'left) ==> 45
>  > (frame-parameter nil 'top)  ==>  19
>  >
>  > Now if I evaluate (set-frame-position nil 45 19)
>  > the frame does not move (comparing with putting the frame at (0,0))
>  > and the parameters left and top keep unchanged values 45 and 19
>  >
>  > If now I evaluate:
>  >
>  > (set-frame-position nil 100 60)
>  > (frame-parameter nil 'left)
>  > (frame-parameter nil 'top)
>  > I get the values 90 and 52 for left and top.
>  >
>  > If reconfigure gnome so that the dock  appears on the bottom of
>  > my screen instead of the left edge, then
>  > (set-frame-position nil 0 0)
>  > moves the frame on the leftmost position of the screen and
>  > (frame-parameter nil 'left) ==> (+ -10)
>
>  From this I conclude that the dock should be responsible for the
> behavior you see.  Which window manager do you use?  What do you get
> when you evaluate (display-monitor-attributes-list) in Emacs?
Here are the values of 
(display-monitor-attributes-list)  
when the dock is on the left or the bottom of the screen (the workarea
are distinct)

pl-dock-left’s value is
(((name . "eDP-1")
  (geometry 0 0 1920 1080)
  (workarea 55 27 1865 1053)
  (mm-size 309 174)
  (frames #<frame  *Minibuf-2* 0x4e723c0> #<frame *unsent mail to martin rudalics* 0x5289930>)
  (source . "Gdk")))


pl-dock-bottom’s value is
(((name . "eDP-1")
  (geometry 0 0 1920 1080)
  (workarea 0 27 1920 1000)
  (mm-size 309 174)
  (frames #<frame  *Minibuf-2* 0x4e723c0> #<frame *unsent mail to martin rudalics* 0x5289930>)
  (source . "Gdk")))



>Are > there differences in the workarea values when you evaluate that
> expression with the dock on the left and at the bottom?
Indeed see above
>
> Also you say that
>
> (set-frame-position nil 0 0)
>
> and
>
> (set-frame-position nil 45 19)
>
> both put the frame at the same position on the screen and in both
> cases the following evaluations result:
>
> (frame-parameter nil 'left) ==> 45
> (frame-parameter nil 'top)  ==>  19
>
> Is my reading of your text right?  If so, then the "problems" seem to
> start when the X-value is somewhere between 45 and 100 and the Y-value
> between 19 and 60.  Right?
Yes I did some experiment in the scratch file.
In the first configuration (my laptop screen as a unique scrren) it
seems that when the frame is at the top left corner the parameters
take values (L=45,T=19) (which probably correspond to the width of the
dock and height of the menu line).
If I set-frame-position at (x,y) with 0<=x<=55 and 0<=y<=27 then the
frame does not move and the values are reset to (45,19).
If I set-frame-position at (60,30) then the frame moved a little bit and
the parameters evaluate to (50,22).
>
> Since the behavior apparently changes when you move the dock to the
> bottom, the X-positioning seems clearly related to the position of the
> dock.  Would the Y-positioning then be related to the presence of the
> main menu line (presumably on the bottom)?  The one thing that
> stupefies me then in either case is why the deviations are 10 and 8
> pixels only.  I presume that both, your dock and the menu line, are
> wider.

Yes the dock and menu line are certainly wider than 10 et 8 pixels.
>
> Thanks, martin


Here is a scratch file on which I did some experiment commented.
Th function pl-lt is defined to easily show the values of the parameters
left/top of the frame:

========================== SCRACTCH INTERACTIVE LISP FILE WITH EXPERMINTS ========================================
;; This buffer is for text that is not saved, and for Lisp evaluation.
;; To create a file, visit it with <open> and enter text in its buffer.

;; Experiments with set-frame-position and the result values of the parameters left and top of the frame
;; Each parenthesis sexp has been evaluated with C-j = eval-print-last-sexp
(defun pl-lt ()
  "Returns a string giving the left/top positions of the current frame"
  (concat " LEFT="
	  (prin1-to-string (frame-parameter nil 'left))
	  "  TOP="
	  (prin1-to-string (frame-parameter nil 'top))))


;; First experiments with the laptop as only display and  the gnome-3 dock on the left:
(display-monitor-attributes-list)
(((name . "eDP-1") (geometry 0 0 1920 1080) (workarea 55 27 1865 1053) (mm-size 309 174) (frames #<frame *scratch* 0x4e723c0> #<frame *unsent mail to martin rudalics* 0x5289930>) (source . "Gdk")))


(set-frame-position nil 0 0)
t
;; the frame is immediately below the menu line and on the immediate right of  the left dock
(pl-lt)
" LEFT=45  TOP=19"
(progn (set-frame-position nil 0 0) (pl-lt))
" LEFT=0  TOP=0"
 (pl-lt)
" LEFT=45  TOP=19"
(set-frame-position nil 45 19)
t
;; this did not move the frame: still at left corner but not overlaping the dock or menu line
(pl-lt)
" LEFT=45  TOP=19"
(progn (set-frame-position nil 45 19) (pl-lt))
" LEFT=45  TOP=19"
(pl-lt)
" LEFT=45  TOP=19"
(progn (set-frame-position nil 50 25) (pl-lt))
" LEFT=50  TOP=25"
;; this did not move the frame 
(pl-lt)
" LEFT=45  TOP=19"
;; the parameters changed between the (pl-lt) inside the progn and after !!!
(progn (set-frame-position nil 55 27) (pl-lt))
" LEFT=55  TOP=27"
;; this did not move the frame 
(pl-lt)
" LEFT=45  TOP=19"
(progn (set-frame-position nil 60 30) (pl-lt))
" LEFT=60  TOP=30"
;; this moved very slight the frame away from the left-top corner
(pl-lt)
" LEFT=50  TOP=22"



(set-frame-position nil 400 100)
t
;; this moved the frame sowewhere in the middle of the screen
(pl-lt)
" LEFT=390  TOP=92"
(progn (set-frame-position nil 390 92) (pl-lt))
" LEFT=390  TOP=92"
;; this moved a bit the frame towars the top left corner
(pl-lt)
" LEFT=380  TOP=84"

;; ---------------------------
;; Second experiments with an external screen as single display
(display-monitor-attributes-list)
(((name . "DP-1-2") (geometry 0 0 1920 1080) (workarea 55 27 1865 1053) (mm-size 598 336) (frames #<frame *scratch* 0x4e723c0> #<frame *unsent mail to martin rudalics* 0x5289930>) (source . "Gdk")))

(set-frame-position nil 0 0)
;; the frame is immediately below the menu line and on the immediate right of  the left dock
t
(pl-lt)
" LEFT=45  TOP=19"
(progn (set-frame-position nil 0 0) (pl-lt))
" LEFT=0  TOP=0"
(pl-lt)

;; Third experiment with a double display: internal display of laptop + external display
;; The external display is set as the 'primary' display and is supposed to be on the right
;; of the laptop display. So the menu bar and dock are only on the external display
(display-monitor-attributes-list)
(((name . "DP-1-2") (geometry 1920 0 1920 1080) (workarea 1920 27 1920 1053) (mm-size 598 336) (frames #<frame *scratch* 0x4e723c0> #<frame *unsent mail to martin rudalics* 0x5289930>) (source . "Gdk")) ((name . "eDP-1") (geometry 0 0 1920 1080) (workarea 0 0 1920 1080) (mm-size 309 174) (frames) (source . "Gdk")))
(set-frame-position nil 0 0)
t
;; the frame is now in the left-top corner of the laptoop screen (no menu neither dock here)
(pl-lt)
" LEFT=(+ -10)  TOP=(+ -8)"
(progn (set-frame-position nil 0 0) (pl-lt))
" LEFT=0  TOP=0"
(pl-lt)
" LEFT=(+ -10)  TOP=(+ -8)"
(progn (set-frame-position nil (+ -10) (+ -8)) (pl-lt))
" LEFT=2842  TOP=288"
;; the previous evaluation has moved the frame on the external display close to the right corner
(pl-lt)
" LEFT=2832  TOP=280"
(progn (set-frame-position nil 2832 280) (pl-lt))
" LEFT=2832  TOP=280"
;; the previous sexpevaluation has moved the frame slighly to the left and top 



 













-- 
Pascal Lambrechts  --  UCLouvain (SST/SC/MATH IRMP)
building: Marc De Hemptinne (Louvain-la-Neuve) - Local: B 430
phone: +32 (0)104x73161 
IRMP bte L7.01.02 // Chemin du Cyclotron 2 //  1348 Louvain-la-Neuve // Belgium

  parent reply	other threads:[~2019-12-03 15:04 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <84blspbiy0.fsf@PC-1S0-327.i-did-not-set--mail-host-address--so-tickle-me>
2019-12-02  3:14 ` bug#38452: 26.3; set-frame-position is slightly drifted Pascal Lambrechts
2019-12-02  9:41   ` martin rudalics
     [not found]     ` <84h82iwio0.fsf@PC-1S0-327.i-did-not-set--mail-host-address--so-tickle-me>
2019-12-03  9:40       ` martin rudalics
2019-12-03 15:04   ` Pascal Lambrechts [this message]
2019-12-03 15:59 ` martin rudalics
2019-12-03 18:18   ` Pascal Lambrechts
2019-12-03 18:37     ` martin rudalics
2019-12-03 18:53       ` Pascal Lambrechts
2019-12-04  9:20         ` martin rudalics
     [not found]           ` <84eexjjy5g.fsf@PC-1S0-327.i-did-not-set--mail-host-address--so-tickle-me>
2019-12-05  9:06             ` martin rudalics
2019-12-06  9:12               ` Pascal Lambrechts
2019-12-07  9:40                 ` martin rudalics
2019-12-07 16:37                   ` Pascal Lambrechts
2019-12-08  8:58                     ` martin rudalics
2019-12-08 10:02                       ` Pascal Lambrechts
2019-12-09  9:20                         ` martin rudalics
2022-04-13  2:01                           ` Lars Ingebrigtsen
2022-04-13  8:45                             ` martin rudalics
2022-04-13 11:55                               ` Lars Ingebrigtsen

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=845zixbgbx.fsf@PC-1S0-327.i-did-not-set--mail-host-address--so-tickle-me \
    --to=pascal.lambrechts@uclouvain.be \
    --cc=38452@debbugs.gnu.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).