From: martin rudalics <rudalics@gmx.at>
To: rswgnu@gmail.com
Cc: Alan Third <alan@idiocy.org>, 28620@debbugs.gnu.org
Subject: bug#28620: Interact directly on Emacs bug#28620: mouse drag event records wrong release window
Date: Sun, 15 Oct 2017 11:40:10 +0200 [thread overview]
Message-ID: <59E32CFA.5080405@gmx.at> (raw)
In-Reply-To: <CA+OMD9iRrcU0YOA8rDDDTAVP=S2gUrrrQkcRv+u2HA_1vQNL-Q@mail.gmail.com>
> Ok, that indicates that drag-and-drop from Emacs to external applications
> is unlikely but it still leaves the issue of recognizing whether a drag
> release event maps to an Emacs frame or not (when the frame is covered by
> an external app's window). I already have code that recognizes this in
> Lisp; we should make it a primitive so the drag release code in Emacs could
> report more useful and accurate information in drag release events.
Even if the Emacs frame is covered by another application's frame,
nothing prevents us from having that covered Emacs frame accept the
drop. We could even give frames a "no-accept-drops" parameter and this
way have a drop on such frames pass the drop through to yet another
frame below that does accept drops.
> I guess you are saying that Emacs drag events must start and end within
> Emacs frames. I think about it a bit differently. Since the mouse can
> move in and out of Emacs frames and release events can occur (in logical
> Z-ordered OS window space) outside of Emacs, yet still register with Emacs
> (when the release occurs within the geometry of a frame but the frame is
> covered by another app's window), I think Emacs event handling should
> return different information when the release frame is not the topmost
> OS-level window at the point of release. Then handler code could dispatch
> as necessary.
But to be useful, that "handler code" must be written and such code must
follow a standard interface for the OS used. Consider the trivial task
that one Emacs instance wants to drop some text to a second Emacs
instance. How would we trigger the drop event on that second instance?
> Each window has a 'visible' attribute. Are you saying this is not
> accurate these days?
Yes. The GTK manual says that
Modern composited windowing systems with pervasive transparency make
it impossible to track the visibility of a window reliably,
>> (1) ‘frame-list-z-order’ would have to be able to return all windows on
>>
>> your system
>
>
> Is it likely we could build a multi-platform primitive that would supply
> that information given what you have said?
At least for top-level windows. This will work as long a child windows
are fully contained by their parents which IIUC is not necessarily true
for macOS systems.
>> and (2) a function would be needed to get the attributes of
>>
>> those windows.
>
>
> 2 seems straightforward.
How accurate these attributes will be depends on the windowing system
used. Look at how hard frame_geometry occasionally works to just get
the real screen estate of an Emacs frame.
martin
next prev parent reply other threads:[~2017-10-15 9:40 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CA+OMD9gfe-sUm_er47UmPzrCmvSEjUP0TdsCapBxeiFQS=E1dg@mail.gmail.com>
[not found] ` <83wp4e3nvx.fsf@gnu.org>
[not found] ` <DCD76686-AED1-4D1B-BF28-CAA693633E07@gmail.com>
[not found] ` <8360bx340d.fsf@gnu.org>
[not found] ` <CA+OMD9j9u1KTKFrQyGSVR43gcvmD16kqcVo9pw7dYhp+KULjcA@mail.gmail.com>
[not found] ` <8360bw19es.fsf@gnu.org>
[not found] ` <CA+OMD9h8i6DcxdS4pcrNxHiTbCmxZfU9=CqArJt9GKH8O6LPSw@mail.gmail.com>
2017-10-03 18:21 ` bug#28620: Interact directly on Emacs bug#28620: mouse drag event records wrong release window Robert Weiner
2017-10-03 18:42 ` Eli Zaretskii
2017-10-03 18:53 ` Robert Weiner
2017-10-03 22:40 ` Alan Third
2017-10-04 0:15 ` Robert Weiner
2017-10-04 16:30 ` Alan Third
2017-10-04 17:26 ` Robert Weiner
2017-10-04 18:59 ` Alan Third
2017-10-04 19:30 ` Robert Weiner
2017-10-04 20:11 ` Robert Weiner
2017-10-04 20:07 ` Robert Weiner
2017-10-04 22:09 ` Alan Third
2017-10-05 0:38 ` Robert Weiner
[not found] ` <83vajwytja.fsf@gnu.org>
[not found] ` <CA+OMD9gtwbg4gZzFryWCteN-gHuwvvqTYhVf2WUmpznZ9jo+Ng@mail.gmail.com>
[not found] ` <83poa4yqyq.fsf@gnu.org>
[not found] ` <CA+OMD9gM_3qgioX_RhhDHWF9GYA7=6++Hq5im2nwcwtdKLyDnA@mail.gmail.com>
[not found] ` <CA+OMD9g5dX8Dg92F1pRgYKt3j0yyg=8rBOpSc5SePPiodFnOWA@mail.gmail.com>
[not found] ` <83376qouoj.fsf@gnu.org>
[not found] ` <CA+OMD9hi52ZgCWFTSFPBEu2tOpF12kvHqpu8p4oi-f6jPdw2bA@mail.gmail.com>
2017-10-11 18:49 ` Robert Weiner
2017-10-12 1:35 ` Robert Weiner
2017-10-12 1:47 ` Robert Weiner
2017-10-12 8:05 ` martin rudalics
2017-10-12 13:08 ` Robert Weiner
2017-10-14 8:35 ` martin rudalics
2017-10-14 17:16 ` Robert Weiner
2017-10-14 18:47 ` Robert Weiner
2017-10-15 3:31 ` Robert Weiner
2017-10-15 9:40 ` martin rudalics [this message]
2017-10-16 16:31 ` Robert Weiner
2017-10-17 8:57 ` martin rudalics
2017-10-19 18:32 ` Robert Weiner
2017-10-20 7:55 ` martin rudalics
2017-10-20 14:26 ` Robert Weiner
2017-10-21 8:05 ` martin rudalics
2017-10-21 18:05 ` Richard Stallman
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=59E32CFA.5080405@gmx.at \
--to=rudalics@gmx.at \
--cc=28620@debbugs.gnu.org \
--cc=alan@idiocy.org \
--cc=rswgnu@gmail.com \
/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.