unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#16647: Imprecisions with window-resizing cursors
@ 2014-02-05  6:05 E Sabof
  2014-02-05 10:48 ` martin rudalics
  2014-02-27 19:58 ` martin rudalics
  0 siblings, 2 replies; 72+ messages in thread
From: E Sabof @ 2014-02-05  6:05 UTC (permalink / raw)
  To: 16647

On current trunk version, from emacs -Q

1)

(progn
  (scroll-bar-mode -1)
  (split-window-right)
  )

Slowly move the mouse from left to right across the vertical line splitting the windows. Once the mouse goes past the black line, it's still shown as <=>, although clicking-and-dragging on that area won't have any effect.

2)

C-x 2

Move the cursor from top to bottom, across the mode-line. Once the cursor enters the mode-line, it won't change to a "resize" cursor, although it's already possible to drag.

3)

C-x 1
(set-window-margins nil (car (window-margins)) 10)
C-x 3

Move the cursor from right to left, across the divider. Once the mouse enters the right margin, it will still be displayed as <=>, although it's not possible to resize by clicking there.

Evgeni

GNU Emacs 24.3.50.1 (x86_64-unknown-linux-gnu, GTK+ Version 3.6.4) of 2014-02-05 on ubuntu





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-05  6:05 bug#16647: Imprecisions with window-resizing cursors E Sabof
@ 2014-02-05 10:48 ` martin rudalics
  2014-02-06  9:21   ` Evgkeni Sampelnikof
  2014-02-27 19:58 ` martin rudalics
  1 sibling, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-05 10:48 UTC (permalink / raw)
  To: E Sabof; +Cc: 16647

 > On current trunk version, from emacs -Q
 >
 > 1)
 >
 > (progn
 >   (scroll-bar-mode -1)
 >   (split-window-right)
 >   )
 >
 > Slowly move the mouse from left to right across the vertical line splitting the windows. Once the mouse goes past the black line, it's still shown as <=>, although clicking-and-dragging on that area won't have any effect.

I can't reproduce that neither with GTK+ 3.4.2 nor on Windows XP.  The
cursor changes shape to <=> within one frame column distance on the left
of the vertical border (the "grabbable_width" in coordinates_in_window
IIUC) till right after that border.  When the cursor shows as <=> I can
also drag the border.  Clicking on the border doesn't have any effect.

 > 2)
 >
 > C-x 2
 >
 > Move the cursor from top to bottom, across the mode-line. Once the cursor enters the mode-line, it won't change to a "resize" cursor, although it's already possible to drag.

Emacs doesn't show a vertical resize cursor on the mode- or header-line
(for historical reasons, I presume).  You can now use bottom dividers to
show such a cursor.

 > 3)
 >
 > C-x 1
 > (set-window-margins nil (car (window-margins)) 10)
 > C-x 3
 >
 > Move the cursor from right to left, across the divider. Once the mouse enters the right margin, it will still be displayed as <=>, although it's not possible to resize by clicking there.

This is a arguably a bug.  I checked in a fix.  Please try again.

Thanks, martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-05 10:48 ` martin rudalics
@ 2014-02-06  9:21   ` Evgkeni Sampelnikof
  2014-02-06 10:26     ` martin rudalics
                       ` (2 more replies)
  0 siblings, 3 replies; 72+ messages in thread
From: Evgkeni Sampelnikof @ 2014-02-06  9:21 UTC (permalink / raw)
  To: martin rudalics; +Cc: 16647


martin rudalics <rudalics@gmx.at> writes:

> I can't reproduce that neither with GTK+ 3.4.2 nor on Windows XP.  The
> cursor changes shape to <=> within one frame column distance on the left
> of the vertical border (the "grabbable_width" in coordinates_in_window
> IIUC) till right after that border.  When the cursor shows as <=> I can
> also drag the border.  Clicking on the border doesn't have any effect.

Sometimes it works fine. Perhaps you could try moving the border to different locations.

>
> Emacs doesn't show a vertical resize cursor on the mode- or header-line
> (for historical reasons, I presume).  You can now use bottom dividers to
> show such a cursor.

Normally I'd say you know better, except I recall seeing a

                             ^
                             I
                             v

cursor on mode-lines, for as long as I remember.

> This is a arguably a bug.  I checked in a fix.  Please try again.

This works fine now, thanks.

Evgeni





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-06  9:21   ` Evgkeni Sampelnikof
@ 2014-02-06 10:26     ` martin rudalics
  2014-02-07 17:32       ` E Sabof
  2014-02-06 10:32     ` Eli Zaretskii
  2014-02-06 13:34     ` Stefan Monnier
  2 siblings, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-06 10:26 UTC (permalink / raw)
  To: Evgkeni Sampelnikof; +Cc: 16647

 >> I can't reproduce that neither with GTK+ 3.4.2 nor on Windows XP.  The
 >> cursor changes shape to <=> within one frame column distance on the left
 >> of the vertical border (the "grabbable_width" in coordinates_in_window
 >> IIUC) till right after that border.  When the cursor shows as <=> I can
 >> also drag the border.  Clicking on the border doesn't have any effect.
 >
 > Sometimes it works fine. Perhaps you could try moving the border to different locations.

Still seeing what I said above: "When the cursor shows as <=> I can also
drag the border."  You could try one of the following:

(1) Check whether setting the right-divider frame parameter to 1 suffers
     from the same problem.

(2) Try putting `coordinates-in-window-p' in a loop where you simulate
     (by incrementing the car of the first argument) the course of the
     mouse and display the return value via a message.

(3) In window.c DEFVAR_LISP a new variable, in coordinates_in_window set
     that variable to the value coordinates_in_window is about to return,
     display the value of that variable in the modeline, and then move
     the mouse to find out what it reports.

 >> Emacs doesn't show a vertical resize cursor on the mode- or header-line
 >> (for historical reasons, I presume).  You can now use bottom dividers to
 >> show such a cursor.
 >
 > Normally I'd say you know better, except I recall seeing a
 >
 >                              ^
 >                              I
 >                              v
 >
 > cursor on mode-lines, for as long as I remember.

Hmmm... on 2013-11-30 I have

* xterm.h (struct x_output): Add vertical_drag_cursor.

martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-06  9:21   ` Evgkeni Sampelnikof
  2014-02-06 10:26     ` martin rudalics
@ 2014-02-06 10:32     ` Eli Zaretskii
  2014-02-06 13:34     ` Stefan Monnier
  2 siblings, 0 replies; 72+ messages in thread
From: Eli Zaretskii @ 2014-02-06 10:32 UTC (permalink / raw)
  To: Evgkeni Sampelnikof; +Cc: 16647

> From: Evgkeni Sampelnikof <esabof@gmail.com>
> Date: Thu, 06 Feb 2014 09:21:40 +0000
> Cc: 16647@debbugs.gnu.org
> 
> > Emacs doesn't show a vertical resize cursor on the mode- or header-line
> > (for historical reasons, I presume).  You can now use bottom dividers to
> > show such a cursor.
> 
> Normally I'd say you know better, except I recall seeing a
> 
>                              ^
>                              I
>                              v
> 
> cursor on mode-lines, for as long as I remember.

Not on MS-Windows.  I tried Emacs 22, 23, and 24, and none of them
does that.





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-06  9:21   ` Evgkeni Sampelnikof
  2014-02-06 10:26     ` martin rudalics
  2014-02-06 10:32     ` Eli Zaretskii
@ 2014-02-06 13:34     ` Stefan Monnier
  2014-02-07 19:14       ` martin rudalics
  2 siblings, 1 reply; 72+ messages in thread
From: Stefan Monnier @ 2014-02-06 13:34 UTC (permalink / raw)
  To: Evgkeni Sampelnikof; +Cc: 16647

> Normally I'd say you know better, except I recall seeing a

>                              ^
>                              I
>                              v

> cursor on mode-lines, for as long as I remember.

Indeed, Debian's emacs22 and emacs24 both do that.


        Stefan





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-06 10:26     ` martin rudalics
@ 2014-02-07 17:32       ` E Sabof
  2014-02-07 19:14         ` martin rudalics
  0 siblings, 1 reply; 72+ messages in thread
From: E Sabof @ 2014-02-07 17:32 UTC (permalink / raw)
  To: martin rudalics; +Cc: 16647


martin rudalics <rudalics@gmx.at> writes:

> (1) Check whether setting the right-divider frame parameter to 1 suffers
>      from the same problem.

No change.

> (2) Try putting `coordinates-in-window-p' in a loop where you simulate
>      (by incrementing the car of the first argument) the course of the
>      mouse and display the return value via a message.
>
> (3) In window.c DEFVAR_LISP a new variable, in coordinates_in_window set
>      that variable to the value coordinates_in_window is about to return,
>      display the value of that variable in the modeline, and then move
>      the mouse to find out what it reports.
>

(progn
  (scroll-bar-mode -1)
  (require 'cl-lib)
  (run-with-timer 0 0.1
                  (lambda ()
                    (let ((win-list (window-list))
                          (func (apply-partially
                                 'coordinates-in-window-p
                                 (cdr (mouse-position)))))
                      (message "%s" (cl-find-if func win-list))))))

I've tried the snippet above. There where imprecisions, but shouldn't that be expected, given `coordinates-in-window-p' returns characters and not pixels? Should I try something similar with `track-mouse' and pixels?

Evgeni





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-07 17:32       ` E Sabof
@ 2014-02-07 19:14         ` martin rudalics
  2014-02-13  9:46           ` E Sabof
  0 siblings, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-07 19:14 UTC (permalink / raw)
  To: E Sabof; +Cc: 16647

 >> (1) Check whether setting the right-divider frame parameter to 1 suffers
 >>      from the same problem.
 >
 > No change.

Sorry, the parameter is called right-divider-width.  Does it still show
a <-> cursor when moving the mouse to the right and that is 1?  What
happens when you increase the width?

 >> (2) Try putting `coordinates-in-window-p' in a loop where you simulate
 >>      (by incrementing the car of the first argument) the course of the
 >>      mouse and display the return value via a message.
 >>
 >> (3) In window.c DEFVAR_LISP a new variable, in coordinates_in_window set
 >>      that variable to the value coordinates_in_window is about to return,
 >>      display the value of that variable in the modeline, and then move
 >>      the mouse to find out what it reports.
 >>
 >
 > (progn
 >   (scroll-bar-mode -1)
 >   (require 'cl-lib)
 >   (run-with-timer 0 0.1
 >                   (lambda ()
 >                     (let ((win-list (window-list))
 >                           (func (apply-partially
 >                                  'coordinates-in-window-p
 >                                  (cdr (mouse-position)))))
 >                       (message "%s" (cl-find-if func win-list))))))
 >
 > I've tried the snippet above. There where imprecisions, but shouldn't that be expected, given `coordinates-in-window-p' returns characters and not pixels?

I forgot that `coordinates-in-window-p' can't be given pixels as
arguments.  Please try the patch below.

 > Should I try something similar with `track-mouse' and pixels?

And the pixelized version of `coordinates-in-window-p', if possible.  We
want to know what that function returns when your mouse is right after
the border.

martin

=== modified file 'src/window.c'
--- src/window.c	2014-02-07 10:55:28 +0000
+++ src/window.c	2014-02-07 18:05:15 +0000
@@ -1401,13 +1401,15 @@


  DEFUN ("coordinates-in-window-p", Fcoordinates_in_window_p,
-       Scoordinates_in_window_p, 2, 2, 0,
+       Scoordinates_in_window_p, 2, 3, 0,
         doc: /* Return non-nil if COORDINATES are in WINDOW.
  WINDOW must be a live window and defaults to the selected one.
  COORDINATES is a cons of the form (X . Y), X and Y being distances
  measured in characters from the upper-left corner of the frame.
  \(0 . 0) denotes the character in the upper left corner of the
-frame.
+frame.  Third argument PIXELWISE non-nil means interpret coordinates
+pixelwise.
+
  If COORDINATES are in the text portion of WINDOW,
     the coordinates relative to the window are returned.
  If they are in the mode line of WINDOW, `mode-line' is returned.
@@ -1418,7 +1420,7 @@
    `vertical-line' is returned.
  If they are in the windows's left or right marginal areas, `left-margin'\n\
    or `right-margin' is returned.  */)
-  (register Lisp_Object coordinates, Lisp_Object window)
+  (register Lisp_Object coordinates, Lisp_Object window, Lisp_Object pixelwise)
  {
    struct window *w;
    struct frame *f;
@@ -1430,10 +1432,16 @@
    CHECK_CONS (coordinates);
    lx = Fcar (coordinates);
    ly = Fcdr (coordinates);
-  CHECK_NUMBER_OR_FLOAT (lx);
-  CHECK_NUMBER_OR_FLOAT (ly);
-  x = FRAME_PIXEL_X_FROM_CANON_X (f, lx) + FRAME_INTERNAL_BORDER_WIDTH (f);
-  y = FRAME_PIXEL_Y_FROM_CANON_Y (f, ly) + FRAME_INTERNAL_BORDER_WIDTH (f);
+  CHECK_NUMBER (lx);
+  CHECK_NUMBER (ly);
+  x = ((!NILP (pixelwise)
+	? XINT (lx)
+	: FRAME_PIXEL_X_FROM_CANON_X (f, lx))
+       + FRAME_INTERNAL_BORDER_WIDTH (f));
+  y = ((!NILP (pixelwise)
+	? XINT (ly)
+	: FRAME_PIXEL_Y_FROM_CANON_Y (f, ly))
+       + FRAME_INTERNAL_BORDER_WIDTH (f));

    switch (coordinates_in_window (w, x, y))
      {







^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-06 13:34     ` Stefan Monnier
@ 2014-02-07 19:14       ` martin rudalics
  0 siblings, 0 replies; 72+ messages in thread
From: martin rudalics @ 2014-02-07 19:14 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Evgkeni Sampelnikof, 16647

 > Indeed, Debian's emacs22 and emacs24 both do that.

Indeed.  Maybe it checks the shape of the object.  Anyway, IIUC the
vertical drag cursor is shown only when no text appears under the mouse.
So I suppose the current behavior is intentional.

martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-07 19:14         ` martin rudalics
@ 2014-02-13  9:46           ` E Sabof
  2014-02-14 11:39             ` martin rudalics
  0 siblings, 1 reply; 72+ messages in thread
From: E Sabof @ 2014-02-13  9:46 UTC (permalink / raw)
  To: martin rudalics; +Cc: 16647

martin rudalics <rudalics@gmx.at> writes:

> Sorry, the parameter is called right-divider-width.  Does it still show
> a <-> cursor when moving the mouse to the right and that is 1?  What
> happens when you increase the width?

I didn't manage to get the patch working for some reason. Assuming the
below is equivalent, there is still no change with right-divider-width.

The window I get in the messages, may also be off by a few pixels.
(Although the cursor doesn't change at all with the above snippet).

Evgeni

(progn
  (setq-local track-mouse t)
  (scroll-bar-mode -1)
  (global-set-key (kbd "<mouse-movement>")
                  (lambda (event)
                    (interactive "e")
                    (message "%s" (car (event-end event))))))





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-13  9:46           ` E Sabof
@ 2014-02-14 11:39             ` martin rudalics
  2014-02-14 16:13               ` N. Jackson
  2014-02-14 23:13               ` Drew Adams
  0 siblings, 2 replies; 72+ messages in thread
From: martin rudalics @ 2014-02-14 11:39 UTC (permalink / raw)
  To: E Sabof; +Cc: 16647

 > I didn't manage to get the patch working for some reason. Assuming the
 > below is equivalent, there is still no change with right-divider-width.
 >
 > The window I get in the messages, may also be off by a few pixels.

Here on Windows XP the window is never "off".

 > (Although the cursor doesn't change at all with the above snippet).

Probably mouse tracking disables showing the <=> cursor.

Maybe this depends on the window manager used?  Can someone else
reproduce this behavior with emacs -Q:

(progn
   (scroll-bar-mode -1)
   (split-window-right)
   )

Slowly move the mouse from left to right across the vertical line
splitting the windows. Once the mouse goes past the black line, it's
still shown as <=>, although clicking-and-dragging on that area won't
have any effect.

martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-14 11:39             ` martin rudalics
@ 2014-02-14 16:13               ` N. Jackson
  2014-02-14 18:25                 ` martin rudalics
  2014-02-27 19:58                 ` martin rudalics
  2014-02-14 23:13               ` Drew Adams
  1 sibling, 2 replies; 72+ messages in thread
From: N. Jackson @ 2014-02-14 16:13 UTC (permalink / raw)
  To: 16647

martin rudalics <rudalics@gmx.at> writes:

> Maybe this depends on the window manager used?  Can someone else
> reproduce this behavior with emacs -Q:
>
> (progn
>   (scroll-bar-mode -1) (split-window-right) )
>
> Slowly move the mouse from left to right across the vertical line
> splitting the windows. Once the mouse goes past the black line, it's
> still shown as <=>, although clicking-and-dragging on that area won't
> have any effect.

On GTK3 with Emacs built from trunk on 2014-02-10, I do not see the
symptoms above exactly, but I do see another bug.

With the recipe above:

lag in appearance of <=> handle (probably okay?)
================================================ 
As the mouse cursor crosses the vertical line there _is_ a distinct lag
in the appearance of the <=> handle, so that it _does_ appear to the
left or right of the line (depending upon which direction the mouse was
moving), unless the mouse movement is _extremely_ slow. I don't think
this behaviour is particularly unusual (although it seems part of a
distinct sluggishness in the windowing interface that wasn't there in
Emacs 24.3.1). The <=> handle never first appears further from the
vertical line than (roughly?) the width of the fringe. That is, the <=>
handle doesn't appear at all if one moves the mouse over the vertical
line too quickly, and this seems okay too.

Clicking on and dragging with <=> handle works correctly consistently
=====================================================================
Clicking on and dragging the <=> handle works every time. I cannot
duplicate any case in which doing so has no effect, _unless_ the
vertical line is already as far to the left or right in the frame as it
will go, in which case one can only drag it in one direction, which
behaviour is obviously correct.

Another bug
=========== 
When the vertical line is as far to the right in the frame as it will go
(i.e., when the right window is as narrow as permitted), then the <=>
handle only appears when the mouse cursor approaches the vertical line
from the right. If the mouse cursor approaches the vertical line from
the left, the <=> handle fails to appear. (Ditto with "left" and "right"
reversed in that statement.)

I hope this information helps.

Regards,
N.






^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-14 16:13               ` N. Jackson
@ 2014-02-14 18:25                 ` martin rudalics
  2014-02-14 22:53                   ` N. Jackson
  2014-02-27 19:58                 ` martin rudalics
  1 sibling, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-14 18:25 UTC (permalink / raw)
  To: N. Jackson; +Cc: 16647

 > On GTK3 with Emacs built from trunk on 2014-02-10, I do not see the
 > symptoms above exactly, but I do see another bug.
 >
 > With the recipe above:
 >
 > lag in appearance of <=> handle (probably okay?)
 > ================================================
 > As the mouse cursor crosses the vertical line there _is_ a distinct lag
 > in the appearance of the <=> handle, so that it _does_ appear to the
 > left or right of the line (depending upon which direction the mouse was
 > moving), unless the mouse movement is _extremely_ slow. I don't think
 > this behaviour is particularly unusual (although it seems part of a
 > distinct sluggishness in the windowing interface

... maybe due to the fact that dragging now happens pixelwise ...

 > that wasn't there in
 > Emacs 24.3.1). The <=> handle never first appears further from the
 > vertical line than (roughly?) the width of the fringe.

 From reading the code and from my personal experience (GTK, Lucid, Motif
and Windows) with emacs -Q:

(1) When moving the mouse from left to right the <=> appears as soon as
     the mouse enters the right fringe of the window on the left and
     disappears when I cross the vertical border.

(2) When moving the mouse from right to left the <=> appears as soon as
     the mouse crosses the vertical border and disappears when leaving
     the right fringe of the window on the left.

I see no lag when I just move the mouse over the border.  I see a lag
only when I'm actually dragging the border.  Maybe our mouse settings
are different.

 > That is, the <=>
 > handle doesn't appear at all if one moves the mouse over the vertical
 > line too quickly, and this seems okay too.

I see the same here.

 > Clicking on and dragging with <=> handle works correctly consistently
 > =====================================================================
 > Clicking on and dragging the <=> handle works every time. I cannot
 > duplicate any case in which doing so has no effect, _unless_ the
 > vertical line is already as far to the left or right in the frame as it
 > will go, in which case one can only drag it in one direction, which
 > behaviour is obviously correct.

Same here.

 > Another bug
 > ===========
 > When the vertical line is as far to the right in the frame as it will go
 > (i.e., when the right window is as narrow as permitted), then the <=>
 > handle only appears when the mouse cursor approaches the vertical line
 > from the right. If the mouse cursor approaches the vertical line from
 > the left, the <=> handle fails to appear. (Ditto with "left" and "right"
 > reversed in that statement.)

Interesting.  I cannot observe that here.

 > I hope this information helps.

Yes.  Can you please try conducting the same experiments with emacs -Q

(set-frame-parameter nil 'right-divider-width 6)

and with scrollbars en-/and disabled?

Thanks, martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-14 18:25                 ` martin rudalics
@ 2014-02-14 22:53                   ` N. Jackson
  2014-02-16 10:32                     ` martin rudalics
  0 siblings, 1 reply; 72+ messages in thread
From: N. Jackson @ 2014-02-14 22:53 UTC (permalink / raw)
  To: 16647

martin rudalics <rudalics@gmx.at> writes:

> Can you please try conducting the same experiments with emacs -Q
>
> (set-frame-parameter nil 'right-divider-width 6)
>
> and with scrollbars en-/and disabled?

emacs -Q
M-: (set-frame-parameter nil 'right-divider-width 6)
M-x split-window-right

With this I see Evgeni's original bug -- when the <=> handle first
appears beyond the vertical line, clicking on it and dragging has no
effect, if just disappears and returns to a normal cursor. It's
disorienting behaviour but I think it might be due to the lag --
i.e. maybe it's about to turn back to the normal mouse cursor but hasn't
gotten around to actually doing so yet.

I do _not_ see my "Another bug" with this configuration -- when the
vertical line is at its extreme left or right position, it doesn't
matter from which side one approaches it, one still get's the <=> handle
displayed.

emacs -Q
M-: (progn
  (scroll-bar-mode -1) (set-frame-parameter nil 'right-divider-width 6)
  (split-window-right) )

With this recipe I see nothing wrong at all (except for the
sluggishness).


Also I have a slight amendment to what I wrote earlier about my "Another
bug":

>> Another bug =========== When the vertical line is as far to the right
>> in the frame as it will go (i.e., when the right window is as narrow
>> as permitted), then the <=> handle only appears when the mouse cursor
>> approaches the vertical line from the right. If the mouse cursor
>> approaches the vertical line from the left, the <=> handle fails to
>> appear. (Ditto with "left" and "right" reversed in that statement.)
>
> Interesting.  I cannot observe that here.

I double checked this. I definitely see this happening, but I was
mistaken about the "ditto". When the vertical line is as far to the left
as it will go, the <=> handle only appears when the mouse cursor
approaches the vertical line from the _right_ -- the same direction as
for the case with the vertical line as far to the left as it will go.






^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-14 11:39             ` martin rudalics
  2014-02-14 16:13               ` N. Jackson
@ 2014-02-14 23:13               ` Drew Adams
  1 sibling, 0 replies; 72+ messages in thread
From: Drew Adams @ 2014-02-14 23:13 UTC (permalink / raw)
  To: martin rudalics, E Sabof; +Cc: 16647

> Maybe this depends on the window manager used?  Can someone else
> reproduce this behavior with emacs -Q:
> 
> (progn
>    (scroll-bar-mode -1)
>    (split-window-right))
> 
> Slowly move the mouse from left to right across the vertical line
> splitting the windows. Once the mouse goes past the black line, it's
> still shown as <=>, although clicking-and-dragging on that area
  ^^^^^^^^^^^^^^^^^^
> won't have any effect.

That's not what I see, with Windows 7.

As soon as the mouse pointer gets to the solid black line, the
pointer changes from <=> to the normal outline arrow that points
to the upper left.





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-14 22:53                   ` N. Jackson
@ 2014-02-16 10:32                     ` martin rudalics
  2014-02-16 18:17                       ` N. Jackson
  0 siblings, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-16 10:32 UTC (permalink / raw)
  To: N. Jackson; +Cc: 16647

 >> Can you please try conducting the same experiments with emacs -Q
 >>
 >> (set-frame-parameter nil 'right-divider-width 6)
 >>
 >> and with scrollbars en-/and disabled?
 >
 > emacs -Q
 > M-: (set-frame-parameter nil 'right-divider-width 6)
 > M-x split-window-right
 >
 > With this I see Evgeni's original bug -- when the <=> handle first
 > appears beyond the vertical line, clicking on it and dragging has no
 > effect, if just disappears and returns to a normal cursor. It's
 > disorienting behaviour but I think it might be due to the lag --
 > i.e. maybe it's about to turn back to the normal mouse cursor but hasn't
 > gotten around to actually doing so yet.

Suppose you

(set-frame-parameter nil 'right-divider-width 24)

Then the <=> shows for a width of 24 pixels here.  Doesn't it with your
setup?

 > With this recipe I see nothing wrong at all (except for the
 > sluggishness).

How would you describe the sluggishness?

 > Also I have a slight amendment to what I wrote earlier about my "Another
 > bug":
 >
 >>> Another bug =========== When the vertical line is as far to the right
 >>> in the frame as it will go (i.e., when the right window is as narrow
 >>> as permitted), then the <=> handle only appears when the mouse cursor
 >>> approaches the vertical line from the right. If the mouse cursor
 >>> approaches the vertical line from the left, the <=> handle fails to
 >>> appear. (Ditto with "left" and "right" reversed in that statement.)
 >> Interesting.  I cannot observe that here.
 >
 > I double checked this. I definitely see this happening, but I was
 > mistaken about the "ditto". When the vertical line is as far to the left
 > as it will go, the <=> handle only appears when the mouse cursor
 > approaches the vertical line from the _right_ -- the same direction as
 > for the case with the vertical line as far to the left as it will go.

Double checked this too.  I still can't see what you describe.

martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-16 10:32                     ` martin rudalics
@ 2014-02-16 18:17                       ` N. Jackson
  2014-02-20  4:32                         ` N. Jackson
  2014-02-27 19:58                         ` martin rudalics
  0 siblings, 2 replies; 72+ messages in thread
From: N. Jackson @ 2014-02-16 18:17 UTC (permalink / raw)
  To: 16647

At 06:32 -0400 on Sunday 2014-02-16, martin rudalics wrote:

> Suppose you
>
> (set-frame-parameter nil 'right-divider-width 24)
>
> Then the <=> shows for a width of 24 pixels here.  Doesn't it with your
> setup?

Well, my eyesight isn't up for counting the pixels on this display, but
if the divider is the correct 24 pixels wide with this recipe, then the
<=> handle is displayed in a region with a width of maybe 30 pixels. It
doesn't appear until the mouse has crossed over into the vertical bar,
but it continues to be displayed as the mouse continues to move beyond
the width of the vertical bar.

To the right of the vertical bar, it is displayed well in to the left
fringe of the right window. To the left of the vertical bar it is
displayed over the right "border" of the scroll bar (but not as far to
the left as the slider thing inside the scroll bar).

In these regions, beyond the width of the divider, when it is clicked it
turns immediately to a normal mouse cursor, and no dragging is
possible. This is Evgeni's original bug, I believe.

Note: I am defining the location of the <=> cursor as the centre of it.

>> With this recipe I see nothing wrong at all (except for the
>> sluggishness).
>
> How would you describe the sluggishness?

I am not seeing the sluggishness any more (after a restart of the
computer). The Emacs windowing seems roughtly as snappy now as other
running applications.

What I was previously seeing was when maximaizing and restoring an Emacs
frame (which is done here by pressing the logo key and the up or down
arrow key), instead of the frame instantly appearing at its new size, I
could see a very jerky animation of its resizing, and had to actually
wait for it to be finished.

Likewise, Gnome 3, amongst the extraordinary annoyances of its user
interface, has no application menus, so to run those programs that I
don't run from the command line, I have to hit the logo key to get a
completion text box in which I type the name of the program. While this
text box is displayed, all the open windows shrink to medium-sized
thumnbnails that are desplayed on the "desktop", and the shrinking of
Emacs frames into this display was also very much slower than I have
ever seen any other program be.

But as I said, I can no longer observe this sluggishness, but I don't
know what has changed. Sorry.

>>>> Another bug
>>>> ===========
>>>> When the vertical line is as far to the right in the frame as it
>>>> will go (i.e., when the right window is as narrow as permitted),
>>>> then the <=> handle only appears when the mouse cursor approaches
>>>> the vertical line from the right. If the mouse cursor approaches
>>>> the vertical line from the left, the <=> handle fails to
>>>> appear. (Ditto with "left" and "right" reversed in that statement.)
>>>>
>>> Interesting.  I cannot observe that here.
>>
>> I double checked this. I definitely see this happening, but I was
>> mistaken about the "ditto". When the vertical line is as far to the left
>> as it will go, the <=> handle only appears when the mouse cursor
>> approaches the vertical line from the _right_ -- the same direction as
>> for the case with the vertical line as far to the left as it will go.
                                                     ^^^^
I should have said "right" here of course.                                                     

> Double checked this too.  I still can't see what you describe.

Recipe:

Emacs -Q

M-: (progn (scroll-bar-mode -1) (split-window-right) )

Drag vertical line as far as it will go to the right.

Approach (and cross) vertical line with mouse cursor from the
left. (Bug: I do not see the mouse cursor turn into the <=> handle.)

Approach (and cross) vertical line with mouse cursor from the right. (I
see the mouse cursor correctly turn into <=> handle.)

N.





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-16 18:17                       ` N. Jackson
@ 2014-02-20  4:32                         ` N. Jackson
  2014-02-21 18:53                           ` martin rudalics
  2014-02-27 19:58                         ` martin rudalics
  1 sibling, 1 reply; 72+ messages in thread
From: N. Jackson @ 2014-02-20  4:32 UTC (permalink / raw)
  To: 16647

At 14:17 -0400 on Sunday 2014-02-16, N. Jackson wrote:

> At 06:32 -0400 on Sunday 2014-02-16, martin rudalics wrote:
>
>> Suppose you
>>
>> (set-frame-parameter nil 'right-divider-width 24)
>>
>> Then the <=> shows for a width of 24 pixels here.  Doesn't it with your
>> setup?

I tested again running GNU Emacs 24.3.50 (x86_64-unknown-linux-gnu, GTK+
Version 3.8.8) of 2014-02-19 Repository revision: 116484
lekktu@gmail.com-20140219210406-y2s7lx244ojfl5on

With the recipe above I no longer see the bug. The <=> handle now never
seems to be displayed much beyond the vertical line, and it seems I can
always click and drag it.

>>>>> Another bug
>>>>> ===========
>>>>> When the vertical line is as far to the right in the frame as it
>>>>> will go (i.e., when the right window is as narrow as permitted),
>>>>> then the <=> handle only appears when the mouse cursor approaches
>>>>> the vertical line from the right. If the mouse cursor approaches
>>>>> the vertical line from the left, the <=> handle fails to
>>>>> appear. (Ditto with "left" and "right" reversed in that statement.)
>>>>>
>>>> Interesting.  I cannot observe that here.
>>>
>>> I double checked this. I definitely see this happening, but I was
>>> mistaken about the "ditto". When the vertical line is as far to the left
>>> as it will go, the <=> handle only appears when the mouse cursor
>>> approaches the vertical line from the _right_ -- the same direction as
>>> for the case with the vertical line as far to the left as it will go.
>                                                      ^^^^
> I should have said "right" here of course.                                                     
>
>> Double checked this too.  I still can't see what you describe.
>
> Recipe:
>
> Emacs -Q
>
> M-: (progn (scroll-bar-mode -1) (split-window-right) )
>
> Drag vertical line as far as it will go to the right.
>
> Approach (and cross) vertical line with mouse cursor from the
> left. (Bug: I do not see the mouse cursor turn into the <=> handle.)
>
> Approach (and cross) vertical line with mouse cursor from the right. (I
> see the mouse cursor correctly turn into <=> handle.)

Regardless of where the vertical line is, it is now almost impossible to
get the <=> handle to appear at all when approaching the vertical line
from the left -- I get it once in about fifty attempts. When approaching
the vertical line from the right, the <=> handle appears normally (and
it now appears normally when the vertical line is all the way to the
left as well).

N.





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-20  4:32                         ` N. Jackson
@ 2014-02-21 18:53                           ` martin rudalics
  2014-02-21 23:33                             ` N. Jackson
  0 siblings, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-21 18:53 UTC (permalink / raw)
  To: N. Jackson; +Cc: 16647

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

 > Regardless of where the vertical line is, it is now almost impossible to
 > get the <=> handle to appear at all when approaching the vertical line
 > from the left -- I get it once in about fifty attempts. When approaching
 > the vertical line from the right, the <=> handle appears normally (and
 > it now appears normally when the vertical line is all the way to the
 > left as well).

If you can apply the patch I posted earlier (and I attach here again)
you could try the following snippet with emacs -Q:

(let ((i 200)
       (window-on-left (selected-window))
       (window-on-right (split-window-right))
       (lhits 0)
       (rhits 0))
   (tooltip-mode -1)
   (scroll-bar-mode -1)
   (set-mouse-pixel-position (selected-frame) i 200)
   (while (car (setq position (cdr (mouse-pixel-position))))
     (let ((coordinates (coordinates-in-window-p position window-on-left t)))
       (when (eq coordinates 'vertical-line)
	(setq lhits (1+ lhits))))
     (let ((coordinates (coordinates-in-window-p position window-on-right t)))
       (when (eq coordinates 'vertical-line)
	(setq rhits (1+ rhits))))
     (sit-for 0.001)
     (set-mouse-pixel-position
      (selected-frame) (setq i (1+ i)) 200))
   (cons lhits rhits))

Evaluating this returns (8 . 0) here, the cdr of which amounts to the
width of one character on my frame.  So here I have an 8 pixel-wide
corridor entirely in the left window where I am "on the vertical line"
(which occupies virtually the 7 right pixels of the right fringe of the
window on the left).  Evaluating

(let ((i 600)
       (window-on-left (selected-window))
       (window-on-right (split-window-right))
       (lhits 0)
       (rhits 0))
   (tooltip-mode -1)
   (scroll-bar-mode -1)
   (set-mouse-pixel-position (selected-frame) i 200)
   (while (car (setq position (cdr (mouse-pixel-position))))
     (let ((coordinates (coordinates-in-window-p position window-on-left t)))
       (when (eq coordinates 'vertical-line)
	(setq lhits (1+ lhits))))
     (let ((coordinates (coordinates-in-window-p position window-on-right t)))
       (when (eq coordinates 'vertical-line)
	(setq rhits (1+ rhits))))
     (sit-for 0.001)
     (set-mouse-pixel-position
      (selected-frame) (setq i (1- i)) 200))
   (cons lhits rhits))

gets me the same results.  What do you get?  You might have to change
the initial values of `i' to "be in the frame" accordingly.

martin

[-- Attachment #2: coordinates-in-window-p.diff --]
[-- Type: text/plain, Size: 1918 bytes --]

=== modified file 'src/window.c'
--- src/window.c	2014-02-21 08:02:05 +0000
+++ src/window.c	2014-02-21 18:16:00 +0000
@@ -1410,13 +1410,15 @@


 DEFUN ("coordinates-in-window-p", Fcoordinates_in_window_p,
-       Scoordinates_in_window_p, 2, 2, 0,
+       Scoordinates_in_window_p, 2, 3, 0,
        doc: /* Return non-nil if COORDINATES are in WINDOW.
 WINDOW must be a live window and defaults to the selected one.
 COORDINATES is a cons of the form (X . Y), X and Y being distances
 measured in characters from the upper-left corner of the frame.
 \(0 . 0) denotes the character in the upper left corner of the
-frame.
+frame.  Third argument PIXELWISE non-nil means interpret coordinates
+pixelwise.
+
 If COORDINATES are in the text portion of WINDOW,
    the coordinates relative to the window are returned.
 If they are in the mode line of WINDOW, `mode-line' is returned.
@@ -1427,7 +1429,7 @@
   `vertical-line' is returned.
 If they are in the windows's left or right marginal areas, `left-margin'\n\
   or `right-margin' is returned.  */)
-  (register Lisp_Object coordinates, Lisp_Object window)
+  (register Lisp_Object coordinates, Lisp_Object window, Lisp_Object pixelwise)
 {
   struct window *w;
   struct frame *f;
@@ -1439,10 +1441,16 @@
   CHECK_CONS (coordinates);
   lx = Fcar (coordinates);
   ly = Fcdr (coordinates);
-  CHECK_NUMBER_OR_FLOAT (lx);
-  CHECK_NUMBER_OR_FLOAT (ly);
-  x = FRAME_PIXEL_X_FROM_CANON_X (f, lx) + FRAME_INTERNAL_BORDER_WIDTH (f);
-  y = FRAME_PIXEL_Y_FROM_CANON_Y (f, ly) + FRAME_INTERNAL_BORDER_WIDTH (f);
+  CHECK_NUMBER (lx);
+  CHECK_NUMBER (ly);
+  x = ((!NILP (pixelwise)
+    ? XINT (lx)
+    : FRAME_PIXEL_X_FROM_CANON_X (f, lx))
+       + FRAME_INTERNAL_BORDER_WIDTH (f));
+  y = ((!NILP (pixelwise)
+    ? XINT (ly)
+    : FRAME_PIXEL_Y_FROM_CANON_Y (f, ly))
+       + FRAME_INTERNAL_BORDER_WIDTH (f));

   switch (coordinates_in_window (w, x, y))
     {



^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-21 18:53                           ` martin rudalics
@ 2014-02-21 23:33                             ` N. Jackson
  2014-02-22  9:17                               ` martin rudalics
  0 siblings, 1 reply; 72+ messages in thread
From: N. Jackson @ 2014-02-21 23:33 UTC (permalink / raw)
  To: martin rudalics; +Cc: 16647

At 14:53 -0400 on Friday 2014-02-21, martin rudalics wrote:

>> Regardless of where the vertical line is, it is now almost impossible to
>> get the <=> handle to appear at all when approaching the vertical line
>> from the left -- I get it once in about fifty attempts. When approaching
>> the vertical line from the right, the <=> handle appears normally (and
>> it now appears normally when the vertical line is all the way to the
>> left as well).
>
> If you can apply the patch I posted earlier (and I attach here again)

Okay, I have applied the patch (on top of GNU Emacs 24.3.50
(x86_64-unknown-linux-gnu, GTK+ Version 3.8.8) of 2014-02-19 Repository
revision: 116484)

With the patch I see the same behaviour I described above.

> you could try the following snippet with emacs -Q:
>
> (let ((i 200)
>       (window-on-left (selected-window))
>       (window-on-right (split-window-right))
>       (lhits 0)
>       (rhits 0))
>   (tooltip-mode -1)
>   (scroll-bar-mode -1)
>   (set-mouse-pixel-position (selected-frame) i 200)
>   (while (car (setq position (cdr (mouse-pixel-position))))
>     (let ((coordinates (coordinates-in-window-p position window-on-left t)))
>       (when (eq coordinates 'vertical-line)
> 	(setq lhits (1+ lhits))))
>     (let ((coordinates (coordinates-in-window-p position window-on-right t)))
>       (when (eq coordinates 'vertical-line)
> 	(setq rhits (1+ rhits))))
>     (sit-for 0.001)
>     (set-mouse-pixel-position
>      (selected-frame) (setq i (1+ i)) 200))
>   (cons lhits rhits))
>
> Evaluating this returns (8 . 0) here, the cdr of which amounts to the
> width of one character on my frame.  So here I have an 8 pixel-wide
> corridor entirely in the left window where I am "on the vertical line"
> (which occupies virtually the 7 right pixels of the right fringe of the
> window on the left).

Here I get (6 . 0).

> Evaluating
>
> (let ((i 600)
>       (window-on-left (selected-window))
>       (window-on-right (split-window-right))
>       (lhits 0)
>       (rhits 0))
>   (tooltip-mode -1)
>   (scroll-bar-mode -1)
>   (set-mouse-pixel-position (selected-frame) i 200)
>   (while (car (setq position (cdr (mouse-pixel-position))))
>     (let ((coordinates (coordinates-in-window-p position window-on-left t)))
>       (when (eq coordinates 'vertical-line)
> 	(setq lhits (1+ lhits))))
>     (let ((coordinates (coordinates-in-window-p position window-on-right t)))
>       (when (eq coordinates 'vertical-line)
> 	(setq rhits (1+ rhits))))
>     (sit-for 0.001)
>     (set-mouse-pixel-position
>      (selected-frame) (setq i (1- i)) 200))
>   (cons lhits rhits))
>
> gets me the same results.  What do you get?  You might have to change
> the initial values of `i' to "be in the frame" accordingly.

I get (6 . 0) (with initial i = 400).

Nevertheless, I can almost never get the <=> handle when I approach from
the left.






^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-21 23:33                             ` N. Jackson
@ 2014-02-22  9:17                               ` martin rudalics
  2014-02-22 18:06                                 ` N. Jackson
  0 siblings, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-22  9:17 UTC (permalink / raw)
  To: N. Jackson; +Cc: 16647, esabof

 > Okay, I have applied the patch (on top of GNU Emacs 24.3.50
 > (x86_64-unknown-linux-gnu, GTK+ Version 3.8.8) of 2014-02-19 Repository
 > revision: 116484)
 >
 > With the patch I see the same behaviour I described above.

Genya - can you try once more whether the patch applies now (and, if not,
why so) on your system and which results you get?

 >> Evaluating this returns (8 . 0) here, the cdr of which amounts to the
 >> width of one character on my frame.  So here I have an 8 pixel-wide
 >> corridor entirely in the left window where I am "on the vertical line"
 >> (which occupies virtually the 7 right pixels of the right fringe of the
 >> window on the left).
 >
 > Here I get (6 . 0).

What does M-: (frame-char-width) give on your system?

 > I get (6 . 0) (with initial i = 400).
 >
 > Nevertheless, I can almost never get the <=> handle when I approach from
 > the left.

You could try slowing down the movement by (1) starting with a higher
initial value for i (so you don't have to wait too long) and (2)
increasing the `sit-for' argument so you can see more of the cursor
shape.  This way we would know whether the cursor is actually shown in
the expected shape as long as it is within the grabbable width.

Anyway, in the future I recommend to use window dividers instead of the
"vertical line overlaying the fringe" approach.

martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-22  9:17                               ` martin rudalics
@ 2014-02-22 18:06                                 ` N. Jackson
  2014-02-22 18:33                                   ` E Sabof
  2014-02-22 18:44                                   ` martin rudalics
  0 siblings, 2 replies; 72+ messages in thread
From: N. Jackson @ 2014-02-22 18:06 UTC (permalink / raw)
  To: martin rudalics; +Cc: 16647, esabof

Hi Martin,

At 05:17 -0400 on Saturday 2014-02-22, martin rudalics wrote:

>> Okay, I have applied the patch (on top of GNU Emacs 24.3.50
>> (x86_64-unknown-linux-gnu, GTK+ Version 3.8.8) of 2014-02-19 Repository
>> revision: 116484)
>>
>> With the patch I see the same behaviour I described above.
>
> Genya - can you try once more whether the patch applies now (and, if not,
> why so) on your system and which results you get?

I'm assuming "Genya" is another name of Evgeni's? (Or perhaps the
construct of an overly busy mind?!)

>>> Evaluating this returns (8 . 0) here, the cdr of which amounts to the
>>> width of one character on my frame.  So here I have an 8 pixel-wide
>>> corridor entirely in the left window where I am "on the vertical line"
>>> (which occupies virtually the 7 right pixels of the right fringe of the
>>> window on the left).
>>
>> Here I get (6 . 0).
>
> What does M-: (frame-char-width) give on your system?

6 (#o6, #x6, ?\C-f)

>> I get (6 . 0) (with initial i = 400).
>>
>> Nevertheless, I can almost never get the <=> handle when I approach from
>> the left.
>
> You could try slowing down the movement by (1) starting with a higher
> initial value for i (so you don't have to wait too long) and (2)
> increasing the `sit-for' argument so you can see more of the cursor
> shape.  This way we would know whether the cursor is actually shown in
> the expected shape as long as it is within the grabbable width.

I had to put the sit-for immediately after the set-mouse-pixel-position
rather than immediately before it or I didn't get a <=> at all --
presumably there wasn't enough time to update the cursor the way you had
it written?

Then, with a sit-for of 0.2 seconds, I got the <=> perfectly fine,
exactly where expected, going in both directions. I still almost never
see it when I move the mouse manually, going from left to right --
possibly a defect in my trackpad?

> Anyway, in the future I recommend to use window dividers instead of the
> "vertical line overlaying the fringe" approach.

Sorry, I don't understand. Do you intend that to be advice for the user,
(In which case it is moot for me at least, as the only time I ever use a
mouse on my computer is to get around a resume-from-suspend bug in
Fedora, which locks out the keyboard until a mouse button has been
pressed.), or an implementation annotation to accompany the discussion
of the bug (in which case I can safely ignore it for the time being).

N.






^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-22 18:06                                 ` N. Jackson
@ 2014-02-22 18:33                                   ` E Sabof
  2014-02-22 18:52                                     ` martin rudalics
  2014-02-22 18:44                                   ` martin rudalics
  1 sibling, 1 reply; 72+ messages in thread
From: E Sabof @ 2014-02-22 18:33 UTC (permalink / raw)
  To: N. Jackson; +Cc: 16647


N. Jackson <nljlistbox2@gmail.com> writes:

>> Genya - can you try once more whether the patch applies now (and, if not,
>> why so) on your system and which results you get?
>
> I'm assuming "Genya" is another name of Evgeni's? (Or perhaps the
> construct of an overly busy mind?!)

Yes that's my "small" name, and a pleasant surprise.

I'm getting (9 . 0) from both snippets (9 being the frame-char-width). I haven't "read" them yet, maybe I'll find something reproducible.

I'm also getting the same results on openbox as I did on xmonad.

Evgeni





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-22 18:06                                 ` N. Jackson
  2014-02-22 18:33                                   ` E Sabof
@ 2014-02-22 18:44                                   ` martin rudalics
  2014-02-22 23:33                                     ` N. Jackson
  1 sibling, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-22 18:44 UTC (permalink / raw)
  To: N. Jackson; +Cc: 16647, esabof

 > I'm assuming "Genya" is another name of Evgeni's?

Hopefully.  My MUA calls him Evgkeni.

 > (Or perhaps the
 > construct of an overly busy mind?!)

Not overly.

 > I had to put the sit-for immediately after the set-mouse-pixel-position
 > rather than immediately before it or I didn't get a <=> at all --
 > presumably there wasn't enough time to update the cursor the way you had
 > it written?

I have no idea why this should matter.  Maybe `mouse-pixel-position'
calls interact in some strange way.

 > Then, with a sit-for of 0.2 seconds, I got the <=> perfectly fine,
 > exactly where expected, going in both directions. I still almost never
 > see it when I move the mouse manually, going from left to right --
 > possibly a defect in my trackpad?

Can't you try with a real mouse?

 >> Anyway, in the future I recommend to use window dividers instead of the
 >> "vertical line overlaying the fringe" approach.
 >
 > Sorry, I don't understand. Do you intend that to be advice for the user,
 > (In which case it is moot for me at least, as the only time I ever use a
 > mouse on my computer is to get around a resume-from-suspend bug in
 > Fedora, which locks out the keyboard until a mouse button has been
 > pressed.),

I recently read in a thread on help-gnu-emacs:

   Horizontal scroll bar is missing entirely from window.

How would the OP use it without a mouse?  Or do we have a second
N. Jackson?

 > or an implementation annotation to accompany the discussion
 > of the bug (in which case I can safely ignore it for the time being).

The vertical border (including the feature that hovering the mouse over
the adjacent fringe or text on the left should allow to drag it) is IMHO
a very fragile construct and moreover absent when scrollbars are used.
Hence I'd rather shift the discussion of problems with the <=> cursor to
dividers which should not suffer these drawbacks.

martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-22 18:33                                   ` E Sabof
@ 2014-02-22 18:52                                     ` martin rudalics
  2014-02-22 19:07                                       ` E Sabof
  0 siblings, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-22 18:52 UTC (permalink / raw)
  To: E Sabof; +Cc: nljlistbox2, 16647

 > I'm getting (9 . 0) from both snippets (9 being the frame-char-width). I haven't "read" them yet, maybe I'll find something reproducible.
 >
 > I'm also getting the same results on openbox as I did on xmonad.

I'm beginning to suspect that something strange is going on somewhere
between Emacs and the input device.  Could you try playing a bit with
`mouse-autoselect-window'?  More precisely, how soon (in pixels) it
selects a window when you move the mouse into it from another one.

martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-22 18:52                                     ` martin rudalics
@ 2014-02-22 19:07                                       ` E Sabof
  2014-02-23  0:27                                         ` N. Jackson
  2014-02-23 10:53                                         ` martin rudalics
  0 siblings, 2 replies; 72+ messages in thread
From: E Sabof @ 2014-02-22 19:07 UTC (permalink / raw)
  To: martin rudalics; +Cc: nljlistbox2, 16647


martin rudalics <rudalics@gmx.at> writes:

> I'm beginning to suspect that something strange is going on somewhere
> between Emacs and the input device.  Could you try playing a bit with
> `mouse-autoselect-window'?  More precisely, how soon (in pixels) it
> selects a window when you move the mouse into it from another one.

Everything works as it should, as far as I can tell. Both horizontally and vertically.

Evgeni





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-22 18:44                                   ` martin rudalics
@ 2014-02-22 23:33                                     ` N. Jackson
  0 siblings, 0 replies; 72+ messages in thread
From: N. Jackson @ 2014-02-22 23:33 UTC (permalink / raw)
  To: martin rudalics; +Cc: 16647, esabof

At 14:44 -0400 on Saturday 2014-02-22, martin rudalics wrote:

>> I had to put the sit-for immediately after the set-mouse-pixel-position
>> rather than immediately before it or I didn't get a <=> at all --
>> presumably there wasn't enough time to update the cursor the way you had
>> it written?
>
> I have no idea why this should matter.  Maybe `mouse-pixel-position'
> calls interact in some strange way.

Does it not make a difference for you? Perhaps that's something worth
understanding?

>> Then, with a sit-for of 0.2 seconds, I got the <=> perfectly fine,
>> exactly where expected, going in both directions. I still almost never
>> see it when I move the mouse manually, going from left to right --
>> possibly a defect in my trackpad?
>
> Can't you try with a real mouse?

Yes. Indeed. I dug out two different real mice and also plugged in my
23" desktop monitor so I can see the pixels.

The behaviour is the same as I reported with my trackpad and laptop
display.

>> the only time I ever use a mouse on my computer is to get around a
>> resume-from-suspend bug in Fedora, which locks out the keyboard until
>> a mouse button has been pressed.),
>
> I recently read in a thread on help-gnu-emacs:
>
>   Horizontal scroll bar is missing entirely from window.
>
> How would the OP use it without a mouse?  Or do we have a second
> N. Jackson?

Haha. Well to check out the behaviour of images in Emacs, after my
cursor keys didn't work, I admit I tried to make the image scroll with
the trackpad and the scrollbars, so maybe I'm not completely consistent
in my mouse abstinence. Although, in four years of using Emacs every
day, I never noticed that there was no horizontal scroll bar! And I use
the thumb on the vertical scroll bar to tell me how far down the
document I am.

N.





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-22 19:07                                       ` E Sabof
@ 2014-02-23  0:27                                         ` N. Jackson
  2014-02-23 10:53                                           ` martin rudalics
  2014-02-23 10:53                                         ` martin rudalics
  1 sibling, 1 reply; 72+ messages in thread
From: N. Jackson @ 2014-02-23  0:27 UTC (permalink / raw)
  To: martin rudalics; +Cc: 16647, esabof

At 15:07 -0400 on Saturday 2014-02-22, E. Sabof wrote:

> martin rudalics <rudalics@gmx.at> writes:
>
>> I'm beginning to suspect that something strange is going on somewhere
>> between Emacs and the input device.  Could you try playing a bit with
>> `mouse-autoselect-window'?  More precisely, how soon (in pixels) it
>> selects a window when you move the mouse into it from another one.
>
> Everything works as it should, as far as I can tell. Both horizontally and vertically.
>
> Evgeni

With mouse-autoselect-window set to t, I also see everything working as
I expect it should (with GTK+ Version 3.8.8 as before). (But note the
interesting "however" in the last paragraph.)

    emacs -Q
    M-: (setq mouse-autoselect-window t) RET
    M-: (setq scroll-bar-mode -1) RET
    M-x (split-window-right) RET

Moving the mouse from the right, into the left window, the left window
is selected immediately I cross the vertical line and the mouse cursor
changes to the <=> at the same time.

Moving the mouse from the left, into the right window, the right window
is selected immediately I cross the vertical line. Mostly the mouse cursor
does not change though (as previously reported).

    emacs -Q
    M-: (setq mouse-autoselect-window t) RET
    M-: (set-frame-parameter nil 'right-divider-width 24) RET
    M-x (split-window-right) RET

Moving the mouse from the right, towards the left window, the left
window is selected immediately I cross the right edge of the vertical
line and the mouse cursor changes to the <=> at the same time.

Moving the mouse from the left, towards the right window, the mouse
cursor changes to the <=> immediately I cross the left edge of the
vertical line. The right window is selected immediately the mouse cursor
crosses the right edge of the the vertical line. _However_, the mouse
cursor stays as a <=> for a few pixels more movement to the right, and
it is at this time that, if it is clicked, it doesn't do anything, as
per Evgeni's original bug.

N.






^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-22 19:07                                       ` E Sabof
  2014-02-23  0:27                                         ` N. Jackson
@ 2014-02-23 10:53                                         ` martin rudalics
  2014-02-23 23:29                                           ` E Sabof
  1 sibling, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-23 10:53 UTC (permalink / raw)
  To: E Sabof; +Cc: nljlistbox2, 16647

 >> I'm beginning to suspect that something strange is going on somewhere
 >> between Emacs and the input device.  Could you try playing a bit with
 >> `mouse-autoselect-window'?  More precisely, how soon (in pixels) it
 >> selects a window when you move the mouse into it from another one.
 >
 > Everything works as it should, as far as I can tell. Both horizontally and vertically.

Two more things: What happens when you turn off tooltip-mode?

And please try (again) with these

(set-frame-parameter nil 'right-divider-width 10)
(set-frame-parameter nil 'bottom-divider-width 10)

and tell me whether and where/how long the <=> and

^
|
v

cursor shapes appear.

martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-23  0:27                                         ` N. Jackson
@ 2014-02-23 10:53                                           ` martin rudalics
  2014-02-24  2:01                                             ` N. Jackson
  0 siblings, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-23 10:53 UTC (permalink / raw)
  To: N. Jackson; +Cc: 16647, esabof

 > Moving the mouse from the left, towards the right window, the mouse
 > cursor changes to the <=> immediately I cross the left edge of the
 > vertical line. The right window is selected immediately the mouse cursor
 > crosses the right edge of the the vertical line. _However_, the mouse
 > cursor stays as a <=> for a few pixels more movement to the right, and
 > it is at this time that, if it is clicked, it doesn't do anything, as
 > per Evgeni's original bug.

Hmmm...  It's the most concrete description of the problem I read so far
but it still doesn't help me explaining it :-(

How does this behave when you do

(set-frame-parameter nil 'bottom-divider-width 10)

and move from an upper to the lower window and vice-versa?

martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-23 10:53                                         ` martin rudalics
@ 2014-02-23 23:29                                           ` E Sabof
  2014-02-24  7:39                                             ` martin rudalics
  2014-02-27 19:59                                             ` martin rudalics
  0 siblings, 2 replies; 72+ messages in thread
From: E Sabof @ 2014-02-23 23:29 UTC (permalink / raw)
  To: martin rudalics; +Cc: nljlistbox2, 16647


martin rudalics <rudalics@gmx.at> writes:

> Two more things: What happens when you turn off tooltip-mode?

No change. Also the timing of the messages in the echo area is consistent with the cursor misbehaviour.

> And please try (again) with these
>
> (set-frame-parameter nil 'right-divider-width 10)
> (set-frame-parameter nil 'bottom-divider-width 10)
>
> and tell me whether and where/how long the <=> and
>
> ^
> |
> v
>
> cursor shapes appear.

This also makes no difference. The cursor changes as I enter the right divider, and fails to change when I enter the left fringe of the next window.

The cursor always changed when moving from top to bottom, half-way through the mode-line. When moving from bottom to top, everything works, like it used to.

It might be interesting to note, that if I

(setq mode-line-format nil)

, and move from top to bottom, the cursor change is consistently too late, or not happening at all, depending on the position of the bottom divider.

To me it looks like some code expects a full "character" movement, before it registers a change in location.

I've also modified the elisp snippet you've sent to use a timer instead of a loop (otherwise the cursor wouldn't refresh). I still got (9 . 0), even in cases with delayed transformation.

Evgeni





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-23 10:53                                           ` martin rudalics
@ 2014-02-24  2:01                                             ` N. Jackson
  2014-02-24  7:40                                               ` martin rudalics
  2014-02-27 19:59                                               ` martin rudalics
  0 siblings, 2 replies; 72+ messages in thread
From: N. Jackson @ 2014-02-24  2:01 UTC (permalink / raw)
  To: martin rudalics; +Cc: 16647, esabof

At 06:53 -0400 on Sunday 2014-02-23, martin rudalics wrote:

>> Moving the mouse from the left, towards the right window, the mouse
>> cursor changes to the <=> immediately I cross the left edge of the
>> vertical line. The right window is selected immediately the mouse cursor
>> crosses the right edge of the the vertical line. _However_, the mouse
>> cursor stays as a <=> for a few pixels more movement to the right, and
>> it is at this time that, if it is clicked, it doesn't do anything, as
>> per Evgeni's original bug.
>
> Hmmm...  It's the most concrete description of the problem I read so far
> but it still doesn't help me explaining it :-(
>
> How does this behave when you do
>
> (set-frame-parameter nil 'bottom-divider-width 10)
>
> and move from an upper to the lower window and vice-versa?
>
> martin

Badly.

First impressions: Before splitting the window horizontally (with the
backwardsly-named split-window-vertically), I notice that I get the
changed mouse cursor indicating that I can resize the window whenever I
cross the mode line / bottom divider, but, in fact, I am only able to
use it (to increase the size of the minibuffer) when the minibuffer is
active. When the minibuffer is inactive, I can't resize it, yet the
mouse cursor still changes indicating that I can. Presumably this is a
bug.

Okay, continuing:

    emacs -Q
    M-: (set-frame-parameter nil 'bottom-divider-width 10) RET
    M-: (setq mouse-autoselect-window t)
    M-x split-window-vertically

Moving the mouse cursor upwards from the bottom window towards the top
window, as soon as I reach the bottom of the bottom divider the focus
changes to the upper window and the resizing mouse cursor appear. The
resizing cursor continues to be displayed until I cross the top of the
mode line into the top window. (Reasonable behaviour.)

Moving the mouse cursor downwards from the top window to the bottom
window, when I am about half way down the mode line the resizing cursor
appears and continues to be displayed until I cross the bottom of the
bottom divider into the bottom window, when the focus changes to the
lower window and the mouse cursor resumes its normal form. (Reasonable
behaviour.)

But:

    emacs -Q
    M-: (set-frame-parameter nil 'bottom-divider-width 10) RET
    M-: (setq mouse-autoselect-window t)
    Drag the window divider up a few pixels (but less than one line)

Moving the mouse cursor upwards is as before. 

Moving the mouse cursor downwards is as before except that when it
crosses the bottom of the bottom divider into the bottom window, the
focus changes to the bottom window, _but_ the resizing mouse cursor
continues to be displayed well in to the bottom window, but will not
resize the window if clicked on there -- indeed clicking on it, I can
select text in the bottom window while it is still displayed as a
resizing cursor!

At 19:29 -0400 on Sunday 2014-02-23, E. Sabof wrote:

> To me it looks like some code expects a full "character" movement, before it registers a change in location.

I get a similar impression. Noticing that split-window-below is
documented to take only an argument that is an integral number of lines
(it does something when passed a decimal fraction but I can't figure out
what it is -- I thought it might then treat the argument as pixels but
that's not it), I wondered if the code assumes that the split can only
be an integral number of lines below the top of the window above, or
something, and fails to take into account a fractional position?

Regards,
N.





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-23 23:29                                           ` E Sabof
@ 2014-02-24  7:39                                             ` martin rudalics
  2014-02-24 13:00                                               ` E Sabof
  2014-02-27 19:59                                             ` martin rudalics
  1 sibling, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-24  7:39 UTC (permalink / raw)
  To: E Sabof; +Cc: nljlistbox2, 16647

 > To me it looks like some code expects a full "character" movement, before it registers a change in location.

Window manager size hints?  What happens when you set
`frame-resize-pixelwise' to t in your .emacs?

martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-24  2:01                                             ` N. Jackson
@ 2014-02-24  7:40                                               ` martin rudalics
  2014-02-24 15:30                                                 ` N. Jackson
  2014-02-27 19:59                                               ` martin rudalics
  1 sibling, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-24  7:40 UTC (permalink / raw)
  To: N. Jackson; +Cc: 16647, esabof

 > First impressions: Before splitting the window horizontally (with the
 > backwardsly-named split-window-vertically), I notice that I get the
 > changed mouse cursor indicating that I can resize the window whenever I
 > cross the mode line / bottom divider, but, in fact, I am only able to
 > use it (to increase the size of the minibuffer) when the minibuffer is
 > active. When the minibuffer is inactive, I can't resize it, yet the
 > mouse cursor still changes indicating that I can. Presumably this is a
 > bug.

I know.  I'll look into this eventually.

 > But:
 >
 >     emacs -Q
 >     M-: (set-frame-parameter nil 'bottom-divider-width 10) RET
 >     M-: (setq mouse-autoselect-window t)
 >     Drag the window divider up a few pixels (but less than one line)
 >
 > Moving the mouse cursor upwards is as before.
 >
 > Moving the mouse cursor downwards is as before except that when it
 > crosses the bottom of the bottom divider into the bottom window, the
 > focus changes to the bottom window, _but_ the resizing mouse cursor
 > continues to be displayed well in to the bottom window, but will not
 > resize the window if clicked on there -- indeed clicking on it, I can
 > select text in the bottom window while it is still displayed as a
 > resizing cursor!
 >
 > At 19:29 -0400 on Sunday 2014-02-23, E. Sabof wrote:
 >
 >> To me it looks like some code expects a full "character" movement, before it registers a change in location.
 >
 > I get a similar impression. Noticing that split-window-below is
 > documented to take only an argument that is an integral number of lines
 > (it does something when passed a decimal fraction but I can't figure out
 > what it is -- I thought it might then treat the argument as pixels but
 > that's not it), I wondered if the code assumes that the split can only
 > be an integral number of lines below the top of the window above, or
 > something, and fails to take into account a fractional position?

Try with `frame-resize-pixelwise' non-nil in your .emacs.  Maybe it's
the size hints.

martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-24  7:39                                             ` martin rudalics
@ 2014-02-24 13:00                                               ` E Sabof
  2014-02-24 18:12                                                 ` martin rudalics
  0 siblings, 1 reply; 72+ messages in thread
From: E Sabof @ 2014-02-24 13:00 UTC (permalink / raw)
  To: martin rudalics; +Cc: nljlistbox2, 16647


martin rudalics <rudalics@gmx.at> writes:

> Window manager size hints?  What happens when you set
> `frame-resize-pixelwise' to t in your .emacs?

Changing frame-resize-pixelwise didn't have an effect. However, everything seems to work fine after (setq window-resize-pixelwise t).

Evgeni





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-24  7:40                                               ` martin rudalics
@ 2014-02-24 15:30                                                 ` N. Jackson
  2014-02-24 18:12                                                   ` martin rudalics
  0 siblings, 1 reply; 72+ messages in thread
From: N. Jackson @ 2014-02-24 15:30 UTC (permalink / raw)
  To: martin rudalics; +Cc: 16647, esabof

At 03:40 -0400 on Monday 2014-02-24, martin rudalics wrote:

> Try with `frame-resize-pixelwise' non-nil in your .emacs.  Maybe it's
> the size hints.

At 09:00 -0400 on Monday 2014-02-24, E. Sabof wrote:

> Changing frame-resize-pixelwise didn't have an effect. However, everything seems to work fine after (setq window-resize-pixelwise t).

I see the same as Evgeni here on GTK+ Version 3.8.8:

    emacs -Q
    M-: (setq frame-resize-pixelwise t) RET
    M-x make-frame-command RET
    Switch to new frame
    M-: (set-frame-parameter nil 'bottom-divider-width 10) RET
    M-x split-window-below RET

As before, the bug is not observed.

    Drag the window divider up a few pixels (but less than one line)

As before, the bug is observed.

But with

    emacs -Q
    M-: (set-frame-parameter nil 'bottom-divider-width 10) RET
    M-x split-window-below RET
    Drag the window divider up a few pixels (but less than one line)
    Observe bug
    M-: (setq window-resize-pixelwise t)

The bug is no longer observed. Note that I didn't move the divider after
setting window-resize-pixelwise, the bug was immediately no longer
manifest.

N.






^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-24 13:00                                               ` E Sabof
@ 2014-02-24 18:12                                                 ` martin rudalics
  2014-02-24 23:06                                                   ` E Sabof
  0 siblings, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-24 18:12 UTC (permalink / raw)
  To: E Sabof; +Cc: nljlistbox2, 16647

 > Changing frame-resize-pixelwise didn't have an effect. However, everything seems to work fine after (setq window-resize-pixelwise t).

I think you found it.  Just to make sure - xdisp.c has this code:

   if (window_resize_pixelwise)
     {
       width = height = 1;
       goto virtual_glyph;
     }

Can you please comment it out and try once more?  In that case setting
`window-resize-pixelwise' to t should not help any more.

Thanks, martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-24 15:30                                                 ` N. Jackson
@ 2014-02-24 18:12                                                   ` martin rudalics
  2014-02-24 18:39                                                     ` N. Jackson
  0 siblings, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-24 18:12 UTC (permalink / raw)
  To: N. Jackson; +Cc: 16647, esabof

 > But with
 >
 >     emacs -Q
 >     M-: (set-frame-parameter nil 'bottom-divider-width 10) RET
 >     M-x split-window-below RET
 >     Drag the window divider up a few pixels (but less than one line)
 >     Observe bug
 >     M-: (setq window-resize-pixelwise t)
 >
 > The bug is no longer observed. Note that I didn't move the divider after
 > setting window-resize-pixelwise, the bug was immediately no longer
 > manifest.

OK.  Can you try the same I asked Evgeni?  In xdisp.c remove this code

   if (window_resize_pixelwise)
     {
       width = height = 1;
       goto virtual_glyph;
     }

and check whether setting `window-resize-pixelwise' to t still changes
the behavior.  The expected answer is "no".

Thanks, martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-24 18:12                                                   ` martin rudalics
@ 2014-02-24 18:39                                                     ` N. Jackson
  2014-02-24 18:58                                                       ` martin rudalics
  0 siblings, 1 reply; 72+ messages in thread
From: N. Jackson @ 2014-02-24 18:39 UTC (permalink / raw)
  To: martin rudalics; +Cc: 16647, esabof

At 14:12 -0400 on Monday 2014-02-24, martin rudalics wrote:

>> But with
>>
>>     emacs -Q
>>     M-: (set-frame-parameter nil 'bottom-divider-width 10) RET
>>     M-x split-window-below RET
>>     Drag the window divider up a few pixels (but less than one line)
>>     Observe bug
>>     M-: (setq window-resize-pixelwise t)
>>
>> The bug is no longer observed. Note that I didn't move the divider after
>> setting window-resize-pixelwise, the bug was immediately no longer
>> manifest.
>
> OK.  Can you try the same I asked Evgeni?  In xdisp.c remove this code
>
>   if (window_resize_pixelwise)
>     {
>       width = height = 1;
>       goto virtual_glyph;
>     }
>
> and check whether setting `window-resize-pixelwise' to t still changes
> the behavior.  The expected answer is "no".
>
> Thanks, martin

No, that's no good. Commenting out the body of that if statement results
in a seg fault when I approach the divider with the mouse cursor.

[nlj@moondust trunk]$ src/emacs -Q
Fatal error 11: Segmentation fault
Backtrace:
src/emacs[0x4f9d6b]
src/emacs[0x4e0e4e]
src/emacs[0x4f8d8e]
src/emacs[0x4f8f93]
/lib64/libpthread.so.0[0x359600ef90]
src/emacs[0x434ad3]
src/emacs[0x4b3cab]
src/emacs[0x4bbed3]
src/emacs[0x4bd378]
/lib64/libgdk-3.so.0[0x31f004e941]
/lib64/libgdk-3.so.0[0x31f004ebce]
/lib64/libgdk-3.so.0(gdk_display_get_event+0x68)[0x31f0023aa8]
/lib64/libgdk-3.so.0[0x31f004e9c2]
/lib64/libglib-2.0.so.0(g_main_context_dispatch+0x146)[0x31ed047dc6]
/lib64/libglib-2.0.so.0[0x31ed048118]
/lib64/libglib-2.0.so.0(g_main_context_iteration+0x2c)[0x31ed0481bc]
/lib64/libgtk-3.so.0(gtk_main_iteration+0x15)[0x31f058a5b5]
src/emacs[0x4b5e52]
src/emacs[0x4e7a11]
src/emacs[0x4e7435]
src/emacs[0x537a22]
src/emacs[0x555df0]
src/emacs[0x556901]
src/emacs[0x4e622f]
src/emacs[0x4e6761]
src/emacs[0x4e7b18]
src/emacs[0x4eadd4]
src/emacs[0x58e726]
src/emacs[0x420b14]
src/emacs[0x4ebaf4]
src/emacs[0x4ecfb3]
src/emacs[0x4eebd0]
src/emacs[0x54f26e]
src/emacs[0x4e12de]
src/emacs[0x54f17b]
src/emacs[0x4e5737]
src/emacs[0x4e5a22]
src/emacs[0x417135]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x3595421b45]
src/emacs[0x417bf1]
Segmentation fault (core dumped)





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-24 18:39                                                     ` N. Jackson
@ 2014-02-24 18:58                                                       ` martin rudalics
  0 siblings, 0 replies; 72+ messages in thread
From: martin rudalics @ 2014-02-24 18:58 UTC (permalink / raw)
  To: N. Jackson; +Cc: 16647, esabof

 >> OK.  Can you try the same I asked Evgeni?  In xdisp.c remove this code
 >>
 >>   if (window_resize_pixelwise)
 >>     {
 >>       width = height = 1;
 >>       goto virtual_glyph;
 >>     }
 >>
 >> and check whether setting `window-resize-pixelwise' to t still changes
 >> the behavior.  The expected answer is "no".
 >>
 >> Thanks, martin
 >
 > No, that's no good. Commenting out the body of that if statement results
 > in a seg fault when I approach the divider with the mouse cursor.

Sorry, that's all too obvious.  What I meant was to remove the entire

   if (window_resize_pixelwise)
     {
       width = height = 1;
       goto virtual_glyph;
     }
   else

stuff, that is from the "if" up to and including the following "else".

Anyway, I'm just about to be able to reproduce the bug here.  All I had
to do was to change the default font to some unusual value.

martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-24 18:12                                                 ` martin rudalics
@ 2014-02-24 23:06                                                   ` E Sabof
  2014-02-26 10:17                                                     ` martin rudalics
  2014-02-27 19:59                                                     ` martin rudalics
  0 siblings, 2 replies; 72+ messages in thread
From: E Sabof @ 2014-02-24 23:06 UTC (permalink / raw)
  To: martin rudalics; +Cc: nljlistbox2, 16647


martin rudalics <rudalics@gmx.at> writes:

>    if (window_resize_pixelwise)
>      {
>        width = height = 1;
>        goto virtual_glyph;
>      }
>
> Can you please comment it out and try once more?  In that case setting
> `window-resize-pixelwise' to t should not help any more.

Not sure if it still matters, but this no longer helps as you've predicted.

Evgeni





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-24 23:06                                                   ` E Sabof
@ 2014-02-26 10:17                                                     ` martin rudalics
  2014-02-26 16:45                                                       ` Eli Zaretskii
  2014-02-27 19:59                                                     ` martin rudalics
  1 sibling, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-26 10:17 UTC (permalink / raw)
  To: E Sabof; +Cc: nljlistbox2, 16647

 >>    if (window_resize_pixelwise)
 >>      {
 >>        width = height = 1;
 >>        goto virtual_glyph;
 >>      }
 >>
 >> Can you please comment it out and try once more?  In that case setting
 >> `window-resize-pixelwise' to t should not help any more.
 >
 > Not sure if it still matters, but this no longer helps as you've predicted.

In revision 116565 I hopefully fixed the problem with dividers.  The
problem with the vertical border remains and I might not be able to fix
it at all (at least not in a reasonable way).  If you are on X Windows
you can look into it as follows.  At the end of remember_mouse_glyph in
xdisp.c you can find this code:

   /* Visible feedback for debugging.  */
#if 0
#if HAVE_X_WINDOWS
   XDrawRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
		  f->output_data.x->normal_gc,
		  gx, gy, width, height);
#endif
#endif

You have to "comment it in" by removing the #if 0 and one #endif,
recompile, and with emacs -Q start moving the mouse.  It will start
filling your frame with rectangles around glyphs.  These are the mouse
glyph rectangles remember_mouse_glyph remembers and you will see them
drawn around your characters.  It might help to increase the default
font to see them better.  These rectangles are important because the
mouse tracking code decides that something "significant" has happened
only when the mouse ends up in another rectangle than the last time.

Now remove the scrollbars, split your frame via C-x 3 and watch the
rectangles fill up around the border between the windows (to redraw the
frame move the border).  You can notice two strange things when the size
of the left window is not an integral multiple of the default font:

(1) The <=> starts to appear only in a rectangle at the left of the
     border.  If that rectangle extends across the border, the <=> will
     continue to appear if you move the mouse to the right crossing the
     border.  As soon as the <=> is on the right of the border, you can't
     start dragging the border.

(2) The shape of the rectangle on the left of the border may vary.  If
     your right fringe is larger than the width for the default font, you
     will usually see a rectangle that is as wide as the fringe when you
     move into the fringe horizontally from the left.  If you move inside
     the fringe up and down (very near to the border but still on the
     left of it) you can observe less wide rectangles.

Confusing, isn't it?  A basic problem is that remember_mouse_glyph
doesn't know anything about windows or vertical borders.  It treats the
frame as one huge area and I haven't been able yet to clip mouse glyph
rectangles at window borders.  If anyone knows how to do that - and it
should be certainly doable and done, please tell me.  I'm too silly to
understand that because the value calculate for "gx + width" here always
remains less than the window's pixel width.

And if you set `window-resize-pixelwise' to t, you will immediately
notice that the rectangles reduce to single pixels.  So there are no
rectangles overlapping with window borders and the problem disappears
just as you discovered recently.

martin






^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-26 10:17                                                     ` martin rudalics
@ 2014-02-26 16:45                                                       ` Eli Zaretskii
  2014-02-27 20:00                                                         ` martin rudalics
  0 siblings, 1 reply; 72+ messages in thread
From: Eli Zaretskii @ 2014-02-26 16:45 UTC (permalink / raw)
  To: martin rudalics; +Cc: nljlistbox2, esabof, 16647

> Date: Wed, 26 Feb 2014 11:17:06 +0100
> From: martin rudalics <rudalics@gmx.at>
> Cc: nljlistbox2@gmail.com, 16647@debbugs.gnu.org
> 
> (1) The <=> starts to appear only in a rectangle at the left of the
>      border.  If that rectangle extends across the border, the <=> will
>      continue to appear if you move the mouse to the right crossing the
>      border.  As soon as the <=> is on the right of the border, you can't
>      start dragging the border.
> 
> (2) The shape of the rectangle on the left of the border may vary.  If
>      your right fringe is larger than the width for the default font, you
>      will usually see a rectangle that is as wide as the fringe when you
>      move into the fringe horizontally from the left.  If you move inside
>      the fringe up and down (very near to the border but still on the
>      left of it) you can observe less wide rectangles.
> 
> Confusing, isn't it?  A basic problem is that remember_mouse_glyph
> doesn't know anything about windows or vertical borders.  It treats the
> frame as one huge area and I haven't been able yet to clip mouse glyph
> rectangles at window borders.  If anyone knows how to do that - and it
> should be certainly doable and done, please tell me.

I didn't read this thread attentively enough -- could you tell what
problem are you trying to solve?  If I know the answer,  I will be
happy to help.





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-05  6:05 bug#16647: Imprecisions with window-resizing cursors E Sabof
  2014-02-05 10:48 ` martin rudalics
@ 2014-02-27 19:58 ` martin rudalics
  2014-02-27 20:33   ` Eli Zaretskii
  1 sibling, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-27 19:58 UTC (permalink / raw)
  To: E Sabof; +Cc: 16647

I now tried to address the following issues reported here:

 > On current trunk version, from emacs -Q
 >
 > 1)
 >
 > (progn
 >   (scroll-bar-mode -1)
 >   (split-window-right)
 >   )
 >
 > Slowly move the mouse from left to right across the vertical line splitting the windows. Once the mouse goes past the black line, it's still shown as <=>, although clicking-and-dragging on that area won't have any effect.

Confirmed.  The reason was that a mouse glyph could cross window
borders.  Should be fixed now.

 > 2)
 >
 > C-x 2
 >
 > Move the cursor from top to bottom, across the mode-line. Once the cursor enters the mode-line, it won't change to a "resize" cursor, although it's already possible to drag.

Confirmed (on a Gtk build).  The reason was that a mouse glyph from the
text area could extend into the mode line.  Should be fixed now.

martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-14 16:13               ` N. Jackson
  2014-02-14 18:25                 ` martin rudalics
@ 2014-02-27 19:58                 ` martin rudalics
  2014-02-28  0:38                   ` N. Jackson
  1 sibling, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-27 19:58 UTC (permalink / raw)
  To: N. Jackson; +Cc: 16647

I now tried to address the following issues reported here:

 > On GTK3 with Emacs built from trunk on 2014-02-10, I do not see the
 > symptoms above exactly, but I do see another bug.
 >
 > With the recipe above:
 >
 > lag in appearance of <=> handle (probably okay?)
 > ================================================
 > As the mouse cursor crosses the vertical line there _is_ a distinct lag
 > in the appearance of the <=> handle, so that it _does_ appear to the
 > left or right of the line (depending upon which direction the mouse was
 > moving), unless the mouse movement is _extremely_ slow. I don't think
 > this behaviour is particularly unusual (although it seems part of a
 > distinct sluggishness in the windowing interface that wasn't there in
 > Emacs 24.3.1). The <=> handle never first appears further from the
 > vertical line than (roughly?) the width of the fringe. That is, the <=>
 > handle doesn't appear at all if one moves the mouse over the vertical
 > line too quickly, and this seems okay too.

I'm not all to sure about this.  But with a right fringe larger than the
default character width it was possible to not show the <=> until the
mouse was right over the vertical border.  This should be fixed now.
Please try again.

 > Another bug
 > ===========
 > When the vertical line is as far to the right in the frame as it will go
 > (i.e., when the right window is as narrow as permitted), then the <=>
 > handle only appears when the mouse cursor approaches the vertical line
 > from the right. If the mouse cursor approaches the vertical line from
 > the left, the <=> handle fails to appear. (Ditto with "left" and "right"
 > reversed in that statement.)

This might be due to the same reason as the issue described above.  The
mouse cursor won't appear when approaching the border from the left.
Please try again.

martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-16 18:17                       ` N. Jackson
  2014-02-20  4:32                         ` N. Jackson
@ 2014-02-27 19:58                         ` martin rudalics
  2014-02-28  0:39                           ` N. Jackson
  1 sibling, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-27 19:58 UTC (permalink / raw)
  To: N. Jackson; +Cc: 16647

 > Recipe:
 >
 > Emacs -Q
 >
 > M-: (progn (scroll-bar-mode -1) (split-window-right) )
 >
 > Drag vertical line as far as it will go to the right.
 >
 > Approach (and cross) vertical line with mouse cursor from the
 > left. (Bug: I do not see the mouse cursor turn into the <=> handle.)

Hopefully fixed now as mentioned in my previous post.  Please try again.

martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-24  2:01                                             ` N. Jackson
  2014-02-24  7:40                                               ` martin rudalics
@ 2014-02-27 19:59                                               ` martin rudalics
  2014-02-28  0:49                                                 ` N. Jackson
  1 sibling, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-27 19:59 UTC (permalink / raw)
  To: N. Jackson; +Cc: 16647, esabof

 > First impressions: Before splitting the window horizontally (with the
 > backwardsly-named split-window-vertically), I notice that I get the
 > changed mouse cursor indicating that I can resize the window whenever I
 > cross the mode line / bottom divider, but, in fact, I am only able to
 > use it (to increase the size of the minibuffer) when the minibuffer is
 > active. When the minibuffer is inactive, I can't resize it, yet the
 > mouse cursor still changes indicating that I can. Presumably this is a
 > bug.

Should be fixed now.  Please look again.

 > But:
 >
 >     emacs -Q
 >     M-: (set-frame-parameter nil 'bottom-divider-width 10) RET
 >     M-: (setq mouse-autoselect-window t)
 >     Drag the window divider up a few pixels (but less than one line)
 >
 > Moving the mouse cursor upwards is as before.
 >
 > Moving the mouse cursor downwards is as before except that when it
 > crosses the bottom of the bottom divider into the bottom window, the
 > focus changes to the bottom window, _but_ the resizing mouse cursor
 > continues to be displayed well in to the bottom window, but will not
 > resize the window if clicked on there -- indeed clicking on it, I can
 > select text in the bottom window while it is still displayed as a
 > resizing cursor!

Should work with my previous fix.  Please check again.

martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-23 23:29                                           ` E Sabof
  2014-02-24  7:39                                             ` martin rudalics
@ 2014-02-27 19:59                                             ` martin rudalics
  1 sibling, 0 replies; 72+ messages in thread
From: martin rudalics @ 2014-02-27 19:59 UTC (permalink / raw)
  To: E Sabof; +Cc: nljlistbox2, 16647

 >> And please try (again) with these
 >>
 >> (set-frame-parameter nil 'right-divider-width 10)
 >> (set-frame-parameter nil 'bottom-divider-width 10)
 >>
 >> and tell me whether and where/how long the <=> and
 >>
 >> ^
 >> |
 >> v
 >>
 >> cursor shapes appear.
 >
 > This also makes no difference. The cursor changes as I enter the right divider, and fails to change when I enter the left fringe of the next window.

Should work now.  Please try again.

 > The cursor always changed when moving from top to bottom, half-way through the mode-line. When moving from bottom to top, everything works, like it used to.
 >
 > It might be interesting to note, that if I
 >
 > (setq mode-line-format nil)
 >
 > , and move from top to bottom, the cursor change is consistently too late, or not happening at all, depending on the position of the bottom divider.

Should work as well, please try again.

martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-24 23:06                                                   ` E Sabof
  2014-02-26 10:17                                                     ` martin rudalics
@ 2014-02-27 19:59                                                     ` martin rudalics
  1 sibling, 0 replies; 72+ messages in thread
From: martin rudalics @ 2014-02-27 19:59 UTC (permalink / raw)
  To: E Sabof; +Cc: nljlistbox2, 16647

> Not sure if it still matters, but this no longer helps as you've predicted.

Thanks.  I'll remove this feature soon provided everything else works.

martin






^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-26 16:45                                                       ` Eli Zaretskii
@ 2014-02-27 20:00                                                         ` martin rudalics
  2014-02-27 20:38                                                           ` Eli Zaretskii
  0 siblings, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-27 20:00 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: nljlistbox2, esabof, 16647

 > I didn't read this thread attentively enough -- could you tell what
 > problem are you trying to solve?  If I know the answer,  I will be
 > happy to help.

Thanks for the offer.  The mouse glyph code was pretty broken (I suppose
already for quite some time) but I hopefully now fixed most issues.

If you are good at this - I need a function like XDrawRectangle with the
same signature but for debugging with the Windows API.  It would take me
at least an hour to write it.  Could you do that?

martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-27 19:58 ` martin rudalics
@ 2014-02-27 20:33   ` Eli Zaretskii
  2014-02-28 11:00     ` martin rudalics
  0 siblings, 1 reply; 72+ messages in thread
From: Eli Zaretskii @ 2014-02-27 20:33 UTC (permalink / raw)
  To: martin rudalics; +Cc: 16647, evgkeni.sampelnikof

> Date: Thu, 27 Feb 2014 20:58:35 +0100
> From: martin rudalics <rudalics@gmx.at>
> Cc: 16647@debbugs.gnu.org
> 
> The reason was that a mouse glyph from the text area could extend
> into the mode line.

That's news to me.  Can you describe how it happens?





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-27 20:00                                                         ` martin rudalics
@ 2014-02-27 20:38                                                           ` Eli Zaretskii
  2014-02-28 11:00                                                             ` martin rudalics
  0 siblings, 1 reply; 72+ messages in thread
From: Eli Zaretskii @ 2014-02-27 20:38 UTC (permalink / raw)
  To: martin rudalics; +Cc: nljlistbox2, esabof, 16647

> Date: Thu, 27 Feb 2014 21:00:22 +0100
> From: martin rudalics <rudalics@gmx.at>
> CC: esabof@gmail.com, nljlistbox2@gmail.com, 16647@debbugs.gnu.org
> 
> If you are good at this - I need a function like XDrawRectangle with the
> same signature but for debugging with the Windows API.  It would take me
> at least an hour to write it.  Could you do that?

I'm not good at all at that, but is w32_draw_rectangle what you want?





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-27 19:58                 ` martin rudalics
@ 2014-02-28  0:38                   ` N. Jackson
  0 siblings, 0 replies; 72+ messages in thread
From: N. Jackson @ 2014-02-28  0:38 UTC (permalink / raw)
  To: martin rudalics; +Cc: 16647

At 15:58 -0400 on Thursday 2014-02-27, martin rudalics wrote:

> I now tried to address the following issues reported here:

>> lag in appearance of <=> handle (probably okay?)

> I'm not all to sure about this.  But with a right fringe larger than the
> default character width it was possible to not show the <=> until the
> mouse was right over the vertical border.  This should be fixed now.
> Please try again.

Yes, I believe I only saw this sluggishness/lag the first day I was
testing.

>> Another bug
>> ===========
>> When the vertical line is as far to the right in the frame as it will go
>> (i.e., when the right window is as narrow as permitted), then the <=>
>> handle only appears when the mouse cursor approaches the vertical line
>> from the right. If the mouse cursor approaches the vertical line from
>> the left, the <=> handle fails to appear. (Ditto with "left" and "right"
>> reversed in that statement.)
>
> This might be due to the same reason as the issue described above.  The
> mouse cursor won't appear when approaching the border from the left.
> Please try again.

I think I amended my description of this in later reports, wrt
s/left/right, but in any case the misbehaviour I was seeing is now fixed.





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-27 19:58                         ` martin rudalics
@ 2014-02-28  0:39                           ` N. Jackson
  0 siblings, 0 replies; 72+ messages in thread
From: N. Jackson @ 2014-02-28  0:39 UTC (permalink / raw)
  To: martin rudalics; +Cc: 16647

At 15:58 -0400 on Thursday 2014-02-27, martin rudalics wrote:

>> Recipe:
>>
>> Emacs -Q
>>
>> M-: (progn (scroll-bar-mode -1) (split-window-right) )
>>
>> Drag vertical line as far as it will go to the right.
>>
>> Approach (and cross) vertical line with mouse cursor from the
>> left. (Bug: I do not see the mouse cursor turn into the <=> handle.)
>
> Hopefully fixed now as mentioned in my previous post.  Please try again.

Yes, fixed using today's trunk.





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-27 19:59                                               ` martin rudalics
@ 2014-02-28  0:49                                                 ` N. Jackson
  2014-02-28  6:47                                                   ` Eli Zaretskii
  2014-02-28 10:59                                                   ` bug#16647: Imprecisions with window-resizing cursors martin rudalics
  0 siblings, 2 replies; 72+ messages in thread
From: N. Jackson @ 2014-02-28  0:49 UTC (permalink / raw)
  To: martin rudalics; +Cc: 16647, esabof

At 15:59 -0400 on Thursday 2014-02-27, martin rudalics wrote:

>> First impressions: Before splitting the window horizontally (with the
>> backwardsly-named split-window-vertically), I notice that I get the
>> changed mouse cursor indicating that I can resize the window whenever I
>> cross the mode line / bottom divider, but, in fact, I am only able to
>> use it (to increase the size of the minibuffer) when the minibuffer is
>> active. When the minibuffer is inactive, I can't resize it, yet the
>> mouse cursor still changes indicating that I can. Presumably this is a
>> bug.
>
> Should be fixed now.  Please look again.

No, this is the only misbehaviour I saw that is not fixed now. With

    GNU Emacs 24.3.50 (x86_64-unknown-linux-gnu, GTK+ Version 3.8.8) of
    2014-02-27 Repository revision: 116586
    rudalics@gmx.at-20140227192210-27ciko3o65i7w9pv 
    Windowing system distributor `Fedora Project', version 11.0.11404000

I still get the handle indicating I can resize the minibuffer, but I
cannot actually resize it unless it is active.

(But didn't you say you were going to defer fixing this for now?)

>> But:
>>
>>     emacs -Q
>>     M-: (set-frame-parameter nil 'bottom-divider-width 10) RET
>>     M-: (setq mouse-autoselect-window t)
>>     Drag the window divider up a few pixels (but less than one line)
>>
>> Moving the mouse cursor upwards is as before.
>>
>> Moving the mouse cursor downwards is as before except that when it
>> crosses the bottom of the bottom divider into the bottom window, the
>> focus changes to the bottom window, _but_ the resizing mouse cursor
>> continues to be displayed well in to the bottom window, but will not
>> resize the window if clicked on there -- indeed clicking on it, I can
>> select text in the bottom window while it is still displayed as a
>> resizing cursor!
>
> Should work with my previous fix.  Please check again.

Yes, seems fixed with today's trunk. :)

N.





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-28  0:49                                                 ` N. Jackson
@ 2014-02-28  6:47                                                   ` Eli Zaretskii
  2014-02-28 17:30                                                     ` bug#16647: OT: window-resizing cursor for minibuffer (Imprecisions with window-resizing cursors) N. Jackson
  2014-02-28 10:59                                                   ` bug#16647: Imprecisions with window-resizing cursors martin rudalics
  1 sibling, 1 reply; 72+ messages in thread
From: Eli Zaretskii @ 2014-02-28  6:47 UTC (permalink / raw)
  To: N. Jackson; +Cc: 16647, esabof

> From: nljlistbox2@gmail.com (N. Jackson)
> Date: Thu, 27 Feb 2014 20:49:47 -0400
> Cc: 16647@debbugs.gnu.org, esabof@gmail.com
> 
> No, this is the only misbehaviour I saw that is not fixed now. With
> 
>     GNU Emacs 24.3.50 (x86_64-unknown-linux-gnu, GTK+ Version 3.8.8) of
>     2014-02-27 Repository revision: 116586
>     rudalics@gmx.at-20140227192210-27ciko3o65i7w9pv 
>     Windowing system distributor `Fedora Project', version 11.0.11404000
> 
> I still get the handle indicating I can resize the minibuffer, but I
> cannot actually resize it unless it is active.

And indeed you can't, and shouldn't.  This issue has nothing to do
with when the mouse pointer changes shape, it's an entirely different
issue.





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-28  0:49                                                 ` N. Jackson
  2014-02-28  6:47                                                   ` Eli Zaretskii
@ 2014-02-28 10:59                                                   ` martin rudalics
  2014-02-28 17:25                                                     ` bug#16647: OT: window-resizing cursor for minibuffer (Imprecisions with window-resizing cursors) N. Jackson
  1 sibling, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-28 10:59 UTC (permalink / raw)
  To: N. Jackson; +Cc: 16647, esabof

 >>> First impressions: Before splitting the window horizontally (with the
 >>> backwardsly-named split-window-vertically), I notice that I get the
 >>> changed mouse cursor indicating that I can resize the window whenever I
 >>> cross the mode line / bottom divider, but, in fact, I am only able to
 >>> use it (to increase the size of the minibuffer) when the minibuffer is
 >>> active. When the minibuffer is inactive, I can't resize it, yet the
 >>> mouse cursor still changes indicating that I can. Presumably this is a
 >>> bug.
 >> Should be fixed now.  Please look again.
 >
 > No, this is the only misbehaviour I saw that is not fixed now. With
 >
 >     GNU Emacs 24.3.50 (x86_64-unknown-linux-gnu, GTK+ Version 3.8.8) of
 >     2014-02-27 Repository revision: 116586
 >     rudalics@gmx.at-20140227192210-27ciko3o65i7w9pv
 >     Windowing system distributor `Fedora Project', version 11.0.11404000
 >
 > I still get the handle indicating I can resize the minibuffer, but I
 > cannot actually resize it unless it is active.

I did fix the behavior for the bottom divider only.  The mode line
itself behaves differently.  I think I fixed that now as well.  Please
try again.

martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-27 20:33   ` Eli Zaretskii
@ 2014-02-28 11:00     ` martin rudalics
  2014-02-28 11:28       ` Eli Zaretskii
  0 siblings, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-28 11:00 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 16647, evgkeni.sampelnikof

 >> The reason was that a mouse glyph from the text area could extend
 >> into the mode line.
 >
 > That's news to me.  Can you describe how it happens?

With a partially-visible line at the bottom of the window.  In that case
the mouse glyph covers the non-visible part of the character.  Moving
the mouse from top to bottom will not show the drag cursor on the
modeline as long as the cursor is within the invisible part of the mouse
glyph.  Now if only one or two pixels of that character are visible, you
will see the drag cursor only on the lowest two or four pixles of the
modeline.

martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-27 20:38                                                           ` Eli Zaretskii
@ 2014-02-28 11:00                                                             ` martin rudalics
  2014-02-28 11:32                                                               ` Eli Zaretskii
  0 siblings, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-28 11:00 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: nljlistbox2, esabof, 16647

 > I'm not good at all at that, but is w32_draw_rectangle what you want?

Not really - the signature differs from that of XDrawRectangle :-(

martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-28 11:00     ` martin rudalics
@ 2014-02-28 11:28       ` Eli Zaretskii
  2014-02-28 12:47         ` martin rudalics
  0 siblings, 1 reply; 72+ messages in thread
From: Eli Zaretskii @ 2014-02-28 11:28 UTC (permalink / raw)
  To: martin rudalics; +Cc: 16647, evgkeni.sampelnikof

> Date: Fri, 28 Feb 2014 12:00:02 +0100
> From: martin rudalics <rudalics@gmx.at>
> CC: evgkeni.sampelnikof@gmail.com, 16647@debbugs.gnu.org
> 
>  >> The reason was that a mouse glyph from the text area could extend
>  >> into the mode line.
>  >
>  > That's news to me.  Can you describe how it happens?
> 
> With a partially-visible line at the bottom of the window.

So you mean to say that the pixel values were not limited by the
maximum visible y pixel of the window, and now they are?





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-28 11:00                                                             ` martin rudalics
@ 2014-02-28 11:32                                                               ` Eli Zaretskii
  2014-02-28 12:47                                                                 ` martin rudalics
  0 siblings, 1 reply; 72+ messages in thread
From: Eli Zaretskii @ 2014-02-28 11:32 UTC (permalink / raw)
  To: martin rudalics; +Cc: nljlistbox2, esabof, 16647

> Date: Fri, 28 Feb 2014 12:00:12 +0100
> From: martin rudalics <rudalics@gmx.at>
> CC: esabof@gmail.com, nljlistbox2@gmail.com, 16647@debbugs.gnu.org
> 
>  > I'm not good at all at that, but is w32_draw_rectangle what you want?
> 
> Not really - the signature differs from that of XDrawRectangle :-(

Why do you need an exactly the same signature?  Can't a macro or a
wrapper function take care of the differences?  The code will have to
be separately compiled on each platform anyway.






^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-28 11:28       ` Eli Zaretskii
@ 2014-02-28 12:47         ` martin rudalics
  0 siblings, 0 replies; 72+ messages in thread
From: martin rudalics @ 2014-02-28 12:47 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 16647, evgkeni.sampelnikof

 > So you mean to say that the pixel values were not limited by the
 > maximum visible y pixel of the window, and now they are?

The problem was that a pixel value was not limited by the maximum y of
the text area of a window but was allowed to extend into the mode line
area of the window.  In addition, parts of the mode line and the entire
header line did not have any glyphs at all but that hardly affected the
cursor problem we are discussing here.

martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-28 11:32                                                               ` Eli Zaretskii
@ 2014-02-28 12:47                                                                 ` martin rudalics
  2014-02-28 14:29                                                                   ` Eli Zaretskii
  0 siblings, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-28 12:47 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: nljlistbox2, esabof, 16647

 > Why do you need an exactly the same signature?  Can't a macro or a
 > wrapper function take care of the differences?  The code will have to
 > be separately compiled on each platform anyway.

Sure.  But for me writing a macro or a wrapper is tantamount to writing
that function from scratch.  Having it in the RIF would be optimal.

martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-28 12:47                                                                 ` martin rudalics
@ 2014-02-28 14:29                                                                   ` Eli Zaretskii
  2014-02-28 18:23                                                                     ` martin rudalics
  0 siblings, 1 reply; 72+ messages in thread
From: Eli Zaretskii @ 2014-02-28 14:29 UTC (permalink / raw)
  To: martin rudalics; +Cc: nljlistbox2, esabof, 16647

> Date: Fri, 28 Feb 2014 13:47:20 +0100
> From: martin rudalics <rudalics@gmx.at>
> CC: esabof@gmail.com, nljlistbox2@gmail.com, 16647@debbugs.gnu.org
> 
>  > Why do you need an exactly the same signature?  Can't a macro or a
>  > wrapper function take care of the differences?  The code will have to
>  > be separately compiled on each platform anyway.
> 
> Sure.  But for me writing a macro or a wrapper is tantamount to writing
> that function from scratch.  Having it in the RIF would be optimal.

RIF doesn't go to such low levels (and shouldn't, if you ask me).





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: OT: window-resizing cursor for minibuffer (Imprecisions with window-resizing cursors)
  2014-02-28 10:59                                                   ` bug#16647: Imprecisions with window-resizing cursors martin rudalics
@ 2014-02-28 17:25                                                     ` N. Jackson
  2014-02-28 18:24                                                       ` martin rudalics
  0 siblings, 1 reply; 72+ messages in thread
From: N. Jackson @ 2014-02-28 17:25 UTC (permalink / raw)
  To: martin rudalics; +Cc: 16647, esabof

At 06:59 -0400 on Friday 2014-02-28, martin rudalics wrote:

>>>> First impressions: Before splitting the window horizontally (with the
>>>> backwardsly-named split-window-vertically), I notice that I get the
>>>> changed mouse cursor indicating that I can resize the window whenever I
>>>> cross the mode line / bottom divider, but, in fact, I am only able to
>>>> use it (to increase the size of the minibuffer) when the minibuffer is
>>>> active. When the minibuffer is inactive, I can't resize it, yet the
>>>> mouse cursor still changes indicating that I can. Presumably this is a
>>>> bug.
>>> Should be fixed now.  Please look again.
>>
>> No, this is the only misbehaviour I saw that is not fixed now. With
>>
>>     GNU Emacs 24.3.50 (x86_64-unknown-linux-gnu, GTK+ Version 3.8.8) of
>>     2014-02-27 Repository revision: 116586
>>     rudalics@gmx.at-20140227192210-27ciko3o65i7w9pv
>>     Windowing system distributor `Fedora Project', version 11.0.11404000
>>
>> I still get the handle indicating I can resize the minibuffer, but I
>> cannot actually resize it unless it is active.
>
> I did fix the behavior for the bottom divider only.  The mode line
> itself behaves differently.  I think I fixed that now as well.  Please
> try again.
>
> martin

Hi Martin,

Yes, I rebuilt with this morning's trunk (Repository revision: 116611)
and this is now fixed. :)

Regards,
N.





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: OT: window-resizing cursor for minibuffer (Imprecisions with window-resizing cursors)
  2014-02-28  6:47                                                   ` Eli Zaretskii
@ 2014-02-28 17:30                                                     ` N. Jackson
  2014-03-01  7:18                                                       ` Eli Zaretskii
  0 siblings, 1 reply; 72+ messages in thread
From: N. Jackson @ 2014-02-28 17:30 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 16647, esabof

At 02:47 -0400 on Friday 2014-02-28, Eli Zaretskii wrote:

>> From: nljlistbox2@gmail.com (N. Jackson)
>> 
>> No, this is the only misbehaviour I saw that is not fixed now. With
>> 
>>     GNU Emacs 24.3.50 (x86_64-unknown-linux-gnu, GTK+ Version 3.8.8) of
>>     2014-02-27 Repository revision: 116586
>>     rudalics@gmx.at-20140227192210-27ciko3o65i7w9pv 
>>     Windowing system distributor `Fedora Project', version 11.0.11404000
>> 
>> I still get the handle indicating I can resize the minibuffer, but I
>> cannot actually resize it unless it is active.
>
> And indeed you can't, and shouldn't.  This issue has nothing to do
> with when the mouse pointer changes shape, it's an entirely different
> issue.

That was certainly to do with when the mouse pointer changed shape. The
mouse pointer was changing shape, indicating that the minibuffer could
be resized, when in fact it could not be. 

I don't believe anyone ever suggested that that was the same issue as, or
even directly related to, the current bug.

I merely mentioned in passing when I noticed it while helping explore
the current bug, as it seemed worth bringing to Martin's attention, but
too minor to create yet another bug report for if he could fix it
immediately, Martin asked me to check that it was fixed. It turned out
that it wasn't (then), so I reported back with that information.

I'm not sure why you decided to object so adamantly to that.

N.





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-28 14:29                                                                   ` Eli Zaretskii
@ 2014-02-28 18:23                                                                     ` martin rudalics
  2014-03-01  7:43                                                                       ` Eli Zaretskii
  0 siblings, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-28 18:23 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: nljlistbox2, esabof, 16647

 > RIF doesn't go to such low levels (and shouldn't, if you ask me).

Drawing rectangles could be useful in other cases as well, maybe even
from Elisp.  But maybe we should leave this privilege to the XWindow
people ;-)

martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: OT: window-resizing cursor for minibuffer (Imprecisions with window-resizing cursors)
  2014-02-28 17:25                                                     ` bug#16647: OT: window-resizing cursor for minibuffer (Imprecisions with window-resizing cursors) N. Jackson
@ 2014-02-28 18:24                                                       ` martin rudalics
  2014-02-28 21:19                                                         ` bug#16647: Imprecisions with window-resizing cursors N. Jackson
  0 siblings, 1 reply; 72+ messages in thread
From: martin rudalics @ 2014-02-28 18:24 UTC (permalink / raw)
  To: N. Jackson; +Cc: 16647, esabof

 > Yes, I rebuilt with this morning's trunk (Repository revision: 116611)
 > and this is now fixed. :)

Thanks for checking.  Anything that remains to be done in this area?

martin





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-28 18:24                                                       ` martin rudalics
@ 2014-02-28 21:19                                                         ` N. Jackson
  2014-09-19  8:18                                                           ` martin rudalics
  0 siblings, 1 reply; 72+ messages in thread
From: N. Jackson @ 2014-02-28 21:19 UTC (permalink / raw)
  To: martin rudalics; +Cc: 16647, esabof

At 14:24 -0400 on Friday 2014-02-28, martin rudalics wrote:

>> Yes, I rebuilt with this morning's trunk (Repository revision: 116611)
>> and this is now fixed. :)
>
> Thanks for checking.  Anything that remains to be done in this area?

Not that I'm aware of. You seem to have fixed everything that I saw
not working.





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: OT: window-resizing cursor for minibuffer (Imprecisions with window-resizing cursors)
  2014-02-28 17:30                                                     ` bug#16647: OT: window-resizing cursor for minibuffer (Imprecisions with window-resizing cursors) N. Jackson
@ 2014-03-01  7:18                                                       ` Eli Zaretskii
  0 siblings, 0 replies; 72+ messages in thread
From: Eli Zaretskii @ 2014-03-01  7:18 UTC (permalink / raw)
  To: N. Jackson; +Cc: 16647, esabof

> From: nljlistbox2@gmail.com (N. Jackson)
> Cc: bug-gnu-emacs@gnu.org, martin rudalics <rudalics@gmx.at>, E Sabof <esabof@gmail.com>
> Date: Fri, 28 Feb 2014 13:30:42 -0400
> 
> I'm not sure why you decided to object so adamantly to that.

Because resizing the minibuffer has its own rules, different from
those of other buffers.  I tried what I thought you were doing and saw
expected behavior, given those special rules.

It is now clear that I misunderstood the description of the problem,
so I apologize for my misunderstanding.





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-28 18:23                                                                     ` martin rudalics
@ 2014-03-01  7:43                                                                       ` Eli Zaretskii
  0 siblings, 0 replies; 72+ messages in thread
From: Eli Zaretskii @ 2014-03-01  7:43 UTC (permalink / raw)
  To: martin rudalics; +Cc: nljlistbox2, esabof, 16647

> Date: Fri, 28 Feb 2014 19:23:48 +0100
> From: martin rudalics <rudalics@gmx.at>
> CC: esabof@gmail.com, nljlistbox2@gmail.com, 16647@debbugs.gnu.org
> 
>  > RIF doesn't go to such low levels (and shouldn't, if you ask me).
> 
> Drawing rectangles could be useful in other cases as well, maybe even
> from Elisp.  But maybe we should leave this privilege to the XWindow
> people ;-)

I meant to say that the line that separates users of RIF from their
implementations is on the xdisp.c and dispnew.c level, i.e. on the
level that implements high-level Emacs display functions.  Drawing a
rectangle is not one of them, because the display engine cares about
text, images, and cursors, not about rectangles and pixels.





^ permalink raw reply	[flat|nested] 72+ messages in thread

* bug#16647: Imprecisions with window-resizing cursors
  2014-02-28 21:19                                                         ` bug#16647: Imprecisions with window-resizing cursors N. Jackson
@ 2014-09-19  8:18                                                           ` martin rudalics
  0 siblings, 0 replies; 72+ messages in thread
From: martin rudalics @ 2014-09-19  8:18 UTC (permalink / raw)
  To: N. Jackson; +Cc: E Sabof, 16647-done

>> Thanks for checking.  Anything that remains to be done in this area?
>
> Not that I'm aware of. You seem to have fixed everything that I saw
> not working.

Closing this bug.

Thanks, martin







^ permalink raw reply	[flat|nested] 72+ messages in thread

end of thread, other threads:[~2014-09-19  8:18 UTC | newest]

Thread overview: 72+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-02-05  6:05 bug#16647: Imprecisions with window-resizing cursors E Sabof
2014-02-05 10:48 ` martin rudalics
2014-02-06  9:21   ` Evgkeni Sampelnikof
2014-02-06 10:26     ` martin rudalics
2014-02-07 17:32       ` E Sabof
2014-02-07 19:14         ` martin rudalics
2014-02-13  9:46           ` E Sabof
2014-02-14 11:39             ` martin rudalics
2014-02-14 16:13               ` N. Jackson
2014-02-14 18:25                 ` martin rudalics
2014-02-14 22:53                   ` N. Jackson
2014-02-16 10:32                     ` martin rudalics
2014-02-16 18:17                       ` N. Jackson
2014-02-20  4:32                         ` N. Jackson
2014-02-21 18:53                           ` martin rudalics
2014-02-21 23:33                             ` N. Jackson
2014-02-22  9:17                               ` martin rudalics
2014-02-22 18:06                                 ` N. Jackson
2014-02-22 18:33                                   ` E Sabof
2014-02-22 18:52                                     ` martin rudalics
2014-02-22 19:07                                       ` E Sabof
2014-02-23  0:27                                         ` N. Jackson
2014-02-23 10:53                                           ` martin rudalics
2014-02-24  2:01                                             ` N. Jackson
2014-02-24  7:40                                               ` martin rudalics
2014-02-24 15:30                                                 ` N. Jackson
2014-02-24 18:12                                                   ` martin rudalics
2014-02-24 18:39                                                     ` N. Jackson
2014-02-24 18:58                                                       ` martin rudalics
2014-02-27 19:59                                               ` martin rudalics
2014-02-28  0:49                                                 ` N. Jackson
2014-02-28  6:47                                                   ` Eli Zaretskii
2014-02-28 17:30                                                     ` bug#16647: OT: window-resizing cursor for minibuffer (Imprecisions with window-resizing cursors) N. Jackson
2014-03-01  7:18                                                       ` Eli Zaretskii
2014-02-28 10:59                                                   ` bug#16647: Imprecisions with window-resizing cursors martin rudalics
2014-02-28 17:25                                                     ` bug#16647: OT: window-resizing cursor for minibuffer (Imprecisions with window-resizing cursors) N. Jackson
2014-02-28 18:24                                                       ` martin rudalics
2014-02-28 21:19                                                         ` bug#16647: Imprecisions with window-resizing cursors N. Jackson
2014-09-19  8:18                                                           ` martin rudalics
2014-02-23 10:53                                         ` martin rudalics
2014-02-23 23:29                                           ` E Sabof
2014-02-24  7:39                                             ` martin rudalics
2014-02-24 13:00                                               ` E Sabof
2014-02-24 18:12                                                 ` martin rudalics
2014-02-24 23:06                                                   ` E Sabof
2014-02-26 10:17                                                     ` martin rudalics
2014-02-26 16:45                                                       ` Eli Zaretskii
2014-02-27 20:00                                                         ` martin rudalics
2014-02-27 20:38                                                           ` Eli Zaretskii
2014-02-28 11:00                                                             ` martin rudalics
2014-02-28 11:32                                                               ` Eli Zaretskii
2014-02-28 12:47                                                                 ` martin rudalics
2014-02-28 14:29                                                                   ` Eli Zaretskii
2014-02-28 18:23                                                                     ` martin rudalics
2014-03-01  7:43                                                                       ` Eli Zaretskii
2014-02-27 19:59                                                     ` martin rudalics
2014-02-27 19:59                                             ` martin rudalics
2014-02-22 18:44                                   ` martin rudalics
2014-02-22 23:33                                     ` N. Jackson
2014-02-27 19:58                         ` martin rudalics
2014-02-28  0:39                           ` N. Jackson
2014-02-27 19:58                 ` martin rudalics
2014-02-28  0:38                   ` N. Jackson
2014-02-14 23:13               ` Drew Adams
2014-02-06 10:32     ` Eli Zaretskii
2014-02-06 13:34     ` Stefan Monnier
2014-02-07 19:14       ` martin rudalics
2014-02-27 19:58 ` martin rudalics
2014-02-27 20:33   ` Eli Zaretskii
2014-02-28 11:00     ` martin rudalics
2014-02-28 11:28       ` Eli Zaretskii
2014-02-28 12:47         ` martin rudalics

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).