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 --]
next prev parent 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.