all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Robert Weiner <rsw@gnu.org>
To: martin rudalics <rudalics@gmx.at>
Cc: emacs-devel <emacs-devel@gnu.org>
Subject: Re: Possible Bug: Mouse drag event records wrong window for release when crossing frames
Date: Wed, 27 Sep 2017 09:44:09 -0400	[thread overview]
Message-ID: <CA+OMD9i=HbB_CMSpA=eKh6H-kb08WbgoHZ52QstM-nm+zPnRbg@mail.gmail.com> (raw)
In-Reply-To: <59CB5D45.9070603@gmx.at>

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

On Wed, Sep 27, 2017 at 4:11 AM, martin rudalics <rudalics@gmx.at> wrote:

> > With Emacs 25.2 under MacOS 10.12, I use a mouse key that has bindings on
> > both its depress and release states.  The depress is in a frame with 2
> > windows (one showing *Buffer List* and the other showing hmouse-drv.el).
> > The depress occurs in the *Buffer List* window.
> >
> > The release occurs in another frame and the release window is showing
> > hui-window.el.
>
> Are the frames occupying separate areas on your screen or do they
> intersect?


​The behavior is the same either way.  It is definitely a bug in Emacs 25.2
and 25.3 as I have confirmed it on both MacOS and Windows 7 using just
default mouse-1 ​drags between frames.

>
> > Here is the drag event generated.  Element 2 shows the proper depress
> > window but element 3 shows the depress frame rather than the release
> > frame.  And element 3 has a frame rather than a window as its first
> > argument even though the Elisp manual says it should be a window.
>
> IIRC it's a frame when there's no suitable window at the specified
> position.  This is largely undocumented and has been sometimes even used
> wrongly in the Emacs code base itself.


​Yes, I found this documented in the Emacs Lisp manual, i.e. that
posn-window can return a frame, but it is not documented in the code nor do
all the posn-* and mouse point setting functions handle frame results from
posn-window.  I have some suggested fixes I will post for this but the bug
we are talking about here is generated in the C event-handling code, I
believe.​

>
>
> > (drag-mouse-2 (#<window 90 on *Buffer List*> 2905 (88 . 467) 4050744642
> nil
> > 2905 (12 . 33) nil (4 . 5) (7 . 14)) (#<frame hmouse-drv.el
> > "/Users/bk/Dropbox/emacs/hyperbole/" 0x102f5bde8> nil (-1373 . 463)
> > 4050749802))
>
> The start event seems to look OK.  As for the end event, an X-coordinate
> of -1373 does not look reasonable.


​Right.  Is a negative value ever valid in this context?
​

>   Please post results for dragging from
> one to another window on the same frame.
>

​That works fine, so I'd rather not complicate things with that.

Eli, could you help us debug this or at least point us to where to set a
breakpoint and what internal structures to look at?

My claim is that if you put 2 frames on screen (start with non-overlapping)
and drag mouse-1 from the text area of one to the second, that the drag
event generated upon the release of mouse-1 will contain frame1 rather than
frame2 (where the release happened).​

The need for this is in some code that selects a buffer or file name and
displays it in the window of the drag release.  It works within a single
frame but fails across frames due to this issue.

Bob

[-- Attachment #2: Type: text/html, Size: 4904 bytes --]

  reply	other threads:[~2017-09-27 13:44 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-26  6:06 Possible Bug: Mouse drag event records wrong window for release when crossing frames Robert Weiner
2017-09-27  8:11 ` martin rudalics
2017-09-27 13:44   ` Robert Weiner [this message]
2017-09-29  8:34     ` martin rudalics
2017-09-29 13:03       ` Robert Weiner
2017-09-29 18:19         ` martin rudalics
2017-09-29 17:31       ` Stefan Monnier
2017-09-29 18:20         ` martin rudalics
2017-09-29 19:08           ` Robert Weiner
2017-09-29 19:20             ` Stefan Monnier
2017-09-29 19:25               ` Robert Weiner

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

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

  git send-email \
    --in-reply-to='CA+OMD9i=HbB_CMSpA=eKh6H-kb08WbgoHZ52QstM-nm+zPnRbg@mail.gmail.com' \
    --to=rsw@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=rswgnu@gmail.com \
    --cc=rudalics@gmx.at \
    /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 external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.