unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Alan Mackenzie <acm@muc.de>
To: martin rudalics <rudalics@gmx.at>
Cc: acm@muc.de, 48409@debbugs.gnu.org, juri@linkov.net
Subject: bug#48409: Text runs away before user can copy it
Date: Sat, 22 May 2021 11:42:18 +0000	[thread overview]
Message-ID: <YKjuGtThrAFPwhmG@ACM> (raw)
In-Reply-To: <844b5fd3-7d5a-a00a-00e6-4b853de199fa@gmx.at>

Hello, Martin.

On Sat, May 22, 2021 at 10:05:05 +0200, martin rudalics wrote:
>  > I've been laboriously working out a patch, too, and have come up
>  > with the one below.  It takes a surprisingly similar approach to
>  > your own patch [snipped], but doesn't test for a minibuffer, so
>  > perhaps is more general.  I didn't actually study your patch till my
>  > own was nearly finished.

> I didn't include the minibuffer check initially.  But since I can't
> think of any other occasion where we would change window coordinates in
> between a down and up event, I thought it's cheaper to use it.

I can't think of any other sensible use where the window layout might
change, either.  But if somebody puts a command on down-mouse-1 which
does this, we might end up generating a spurious drag event.  It's
difficult to predict precisely what people might do with Emacs.

>  > To detect mouse movement, my patch changes from comparing window
>  > relative x, y to frame relative x, y.

> In order to identify clicks on the bottom line, I check whether the top
> y-coordinate of the (mini-)window has changed.  If it has changed, I
> simply declare that no mouse movement occurred.  Comparing frame
> relative coordinates is cleaner at the expense of having to store them
> always for each button down event.

Yes.  Such are the decisions one has, somewhat arbitrarily, to make.  ;-)

>  > If the code detects no movement, but a different window, the
>  > position of the up event is changed to be inside the window of the
>  > down event.

> I didn't check that part but I think that using `window-edges' here is
> slightly over-engineered.

I was considering using the available C functions, but in the end decided
it was too much bother.  ;-(  At least the processing here isn't
time-critical.

> OTOH, it gives you the body of the minibuffer window at no cost.  So
> I'm undecided what's better.  Am I right that you return a position
> near the upper right corner of the window?  If so why?

No, I don't think that's the case.  If the up event position is outside
the window, I move it to the nearest border (at a left/top border, or (1-
border) for a right/bottom border).

> Finally, I'm now completely lost wrt what our patches are trying to
> achieve.  Ruling out drag events when there are none is not a bad idea.

I think it's a good idea.  Diagnosing the original symptoms was quite a
bit harder than for most bugs, so it would be good to try to avoid
similar things happening again.

> But do we really want to show echo area messages even when there is no
> echo in the first place?

You mean, is view-echo-area-messages really a sensible command to bind to
mouse-1?  I wasn't actually aware of this facility until Juri (or was it
Drew?) pointed it out in the bug report.  It's not something I use myself
(on a Linux tty with gpm-mouse-mode disabled).

> Or am I missing something?

I don't think so.

> martin

-- 
Alan Mackenzie (Nuremberg, Germany).





  reply	other threads:[~2021-05-22 11:42 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-14  6:32 bug#48409: Text runs away before user can copy it 積丹尼 Dan Jacobson
2021-05-14  7:07 ` Eli Zaretskii
2021-05-14 17:58   ` Juri Linkov
2021-05-14 18:46     ` Eli Zaretskii
2021-05-15 12:29       ` 積丹尼 Dan Jacobson
2021-05-15 12:34         ` Eli Zaretskii
2021-05-14 19:45     ` Eli Zaretskii
2021-05-14 19:51       ` bug#48409: [External] : " Drew Adams
2021-05-14 20:13       ` Eli Zaretskii
2021-05-14 20:53         ` Alan Mackenzie
2021-05-15  5:56           ` Eli Zaretskii
2021-05-15 11:15             ` Alan Mackenzie
2021-05-17 20:53       ` Juri Linkov
2021-05-18 13:13         ` Eli Zaretskii
2021-05-18 18:42           ` Alan Mackenzie
2021-05-18 19:05             ` Eli Zaretskii
2021-05-18 20:23               ` Alan Mackenzie
2021-05-19 12:12                 ` Eli Zaretskii
2021-05-19 15:49                   ` Alan Mackenzie
2021-05-19 17:40                 ` martin rudalics
2021-05-20 16:54                   ` martin rudalics
2021-05-21 20:55                     ` Alan Mackenzie
2021-05-22  8:05                       ` martin rudalics
2021-05-22 11:42                         ` Alan Mackenzie [this message]
2021-05-22 14:36                           ` martin rudalics
2021-05-22 15:12                             ` Eli Zaretskii
2021-05-22 16:36                               ` martin rudalics
2021-05-30 15:44                           ` Alan Mackenzie
2021-05-31  7:55                             ` martin rudalics
2021-05-31 10:44       ` Alan Mackenzie

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=YKjuGtThrAFPwhmG@ACM \
    --to=acm@muc.de \
    --cc=48409@debbugs.gnu.org \
    --cc=juri@linkov.net \
    --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 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).