bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#12419: Mouse click changes layout


From: Daniel Pfeiffer
Subject: bug#12419: Mouse click changes layout
Date: Sun, 23 Sep 2012 23:56:06 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120827 Thunderbird/15.0

Hi Martin,

thanks for going into so much detail!

la 09/23/2012 11:21 AM martin rudalics skribis:
>> Can you try the attached patch?
>
> I now did, but in neither split direction anything seems to have changed
> from what I described before.

Let's look at your first scenario with emacs -Q: Do

C-x 2

C-x o

and in the lower window insert the form

(message (make-string 1000 ?a))

so the buffer *scratch* now contains this text:


;; This buffer is for notes you don't want to save, and for Lisp evaluation.
;; If you want to create a file, visit that file with C-x C-f,
;; then enter the text in that file's own buffer.

(message (make-string 1000 ?a))


Now evaluate the form inserted - the minibuffer window resizes and the
divider line between the upper and lower normal window moves up. Still
in the lower window press the left mouse button down (but don't release
it) with the mouse pointer on the "1" of the "1000".  Now release the
left mouse button and the region starting with the word "notes" up to
the space before "1000" gets higlighted.

This is the behavior I observe with an unpatched Emacs trunk. With the
patch, the divider line between the upper and lower window does not move
and there's no region highlighting when I release the mouse button.

Well, you have me dumbfounded here. To be honest I actually tried your patch in my configured Emacs. Since it didn't seem to catch on, I even opened the file, and reevaluated the defun you patched. Now however I can no longer reproduce it even there :-( Shame on me, I'm clueless...

However my first informatics lesson the professor told us: the most common bug is being off by one. That is alas still the case with your patch: After C-x 2 the lower window is one row higher than the upper one. After our little experiment, it's the other way round, with this result: When letting go of the mouse, I still marked to the line above, which is now in the position of my mouse-down event. Sounds like an integer division rounding problem, though I don't see such a thing in your patch. If both windows together have an even number of rows (by resizing the frame) it's fine.

If however I split either of the two windows again (even the top one, which is out of reach of the resizing echo area) the disturbing new before-your-patch behaviour comes back.

The second scenario you sketched is

> Independently of resizing, something similar happens for sideways
> scrolling: Split *scratch* vertically, click on the v of visit, nothing
> happens (that's where it dffers).  But then move the mouse 1 char right,
> this triggers a sideways scroll.  The mouse is now over the e of file.
> When letting go, it marks "visit that fil" but worse, it scrolls yet
> again by the same amount, so that the mouse is now at the end of the
> line, far from the text it marked.

I suppose what you mean here with emacs -Q is:

C-x 3

Now if I click in any of the two windows on the "v" of the word "visit",
I get the same sideways scroll behavior with my Emacs 23.3, Emacs 24.1
and the current trunk regardless of how long I keep the button pressed.

The point is moving the mouse over to the i, which causes the 1st scroll, and then letting go, which causes the scrolled region to be marked, plus it causes a 2nd scroll by the same amount. So the point is now far from the highlighted part. I guess this comes from a different code location. Only the user experience feels to me like both cases should be consistent with one another.

coralament / best Grötens / liebe Grüße / best regards / elkorajn salutojn
Daniel Pfeiffer

--
lerne / learn / apprends / lär dig / ucz się    Esperanto:
                    http://lernu.net  /  http://ikurso.net






reply via email to

[Prev in Thread] Current Thread [Next in Thread]