From unknown Tue Aug 19 10:09:22 2025 X-Loop: help-debbugs@gnu.org Subject: bug#24372: 25.1.50; After losing focus, cursor is hidden when moving point Resent-From: Philipp Stephani
> From: Philipp Stephani <p.stephani2@gmail.com>
> Date: Mon, 05 Sep 2016 21:16:40 +0200
>
> emacs -Q -eval '(setq blink-cursor-delay 0.0)'
>
> Move point around in the scratch buffer (e.g. press C-b a couple of
> times): the cursor stays visible, as it should be.=C2=A0 Then put the = mouse
> focus on a different GTK window (not Emacs window), put the mouse focu= s
> back on Emacs, and move point again: the cursor is hidden, making it > impossible to see until you stop moving.
Does it happen even if you wait with cursor motion until after the
cursor blinks one time, i.e. if you start moving point with the cursor
already visible after Emacs gets focus?
> From: Philipp Stephani <p.stephani2@gmail.com>
> Date: Fri, 09 Sep 2016 15:59:02 +0000
> Cc: 24372@debbugs.gnu.org
>
> Eli Zaretskii <eliz@gnu.org> schrieb am Di., 6. Sep. 2016 um 18:0= 3 Uhr:
>
>=C2=A0 > From: Philipp Stephani <p.stephani2@gmail.com>= ;
>=C2=A0 > Date: Mon, 05 Sep 2016 21:16:40 +0200
>=C2=A0 >
>=C2=A0 > emacs -Q -eval '(setq blink-cursor-delay 0.0)'
>=C2=A0 >
>=C2=A0 > Move point around in the scratch buffer (e.g. press C-b a c= ouple of
>=C2=A0 > times): the cursor stays visible, as it should be. Then put= the mouse
>=C2=A0 > focus on a different GTK window (not Emacs window), put the= mouse focus
>=C2=A0 > back on Emacs, and move point again: the cursor is hidden, = making it
>=C2=A0 > impossible to see until you stop moving.
>
>=C2=A0 Does it happen even if you wait with cursor motion until after t= he
>=C2=A0 cursor blinks one time, i.e. if you start moving point with the = cursor
>=C2=A0 already visible after Emacs gets focus?
>
> Yes. No matter what state the cursor is in and how often it has alread= y blinked, it becomes invisible when
> moving.
So what is the importance of moving focus out of the Emacs frame and
then back into it?=C2=A0 Is the problem reproducible without that?=C2=A0 Or= are
you saying that focus-out followed by focus-in event somehow changes
the behavior wrt displaying the cursor?
> From: Ph= ilipp Stephani <p.stephani2@gmail.com>
> Date: Fri, 09 Sep 2016 15:59:02 +0000
> Cc: 24372@debbugs.gnu.org
>
> Eli Zaretskii <eliz@gnu.org> schrieb am Di., 6. Sep. 2016 um 18:0= 3 Uhr:
>
>=C2=A0 > From: Philipp Stephani <p.stephani2@gmail.com>= ;
>=C2=A0 > Date: Mon, 05 Sep 2016 21:16:40 +0200
>=C2=A0 >
>=C2=A0 > emacs -Q -eval '(setq blink-cursor-delay 0.0)'
>=C2=A0 >
>=C2=A0 > Move point around in the scratch buffer (e.g. press C-b a c= ouple of
>=C2=A0 > times): the cursor stays visible, as it should be. Then put= the mouse
>=C2=A0 > focus on a different GTK window (not Emacs window), put the= mouse focus
>=C2=A0 > back on Emacs, and move point again: the cursor is hidden, = making it
>=C2=A0 > impossible to see until you stop moving.
>
>=C2=A0 Does it happen even if you wait with cursor motion until after t= he
>=C2=A0 cursor blinks one time, i.e. if you start moving point with the = cursor
>=C2=A0 already visible after Emacs gets focus?
>
> Yes. No matter what state the cursor is in and how often it has alread= y blinked, it becomes invisible when
> moving.
So what is the importance of moving focus out of the Emacs frame and
then back into it?=C2=A0 Is the problem reproducible without that?=C2=A0 Or= are
you saying that focus-out followed by focus-in event somehow changes
the behavior wrt displaying the cursor?
Eli Zaretskii <eliz@gnu.org= > schrieb am Fr., 9. Sep. 2016 um 18:07=C2=A0Uhr:> From: Philipp Stephani= <p.stephani2@gmail.com>
> Date: Fri, 09 Sep 2016 15:59:02 +0000
> Cc: 24372@debbugs.gnu.org
>
> Eli Zaretskii <eliz@gnu.org> schrieb am Di., 6. Sep. 2016 um 18:0= 3 Uhr:
>
>=C2=A0 > From: Philipp Stephani <p.stephani2@gmail.com>= ;
>=C2=A0 > Date: Mon, 05 Sep 2016 21:16:40 +0200
>=C2=A0 >
>=C2=A0 > emacs -Q -eval '(setq blink-cursor-delay 0.0)'
>=C2=A0 >
>=C2=A0 > Move point around in the scratch buffer (e.g. press C-b a c= ouple of
>=C2=A0 > times): the cursor stays visible, as it should be. Then put= the mouse
>=C2=A0 > focus on a different GTK window (not Emacs window), put the= mouse focus
>=C2=A0 > back on Emacs, and move point again: the cursor is hidden, = making it
>=C2=A0 > impossible to see until you stop moving.
>
>=C2=A0 Does it happen even if you wait with cursor motion until after t= he
>=C2=A0 cursor blinks one time, i.e. if you start moving point with the = cursor
>=C2=A0 already visible after Emacs gets focus?
>
> Yes. No matter what state the cursor is in and how often it has alread= y blinked, it becomes invisible when
> moving.
So what is the importance of moving focus out of the Emacs frame and
then back into it?=C2=A0 Is the problem reproducible without that?=C2=A0 Or= are
you saying that focus-out followed by focus-in event somehow changes
the behavior wrt displaying the cursor?Yes. The cursor only become invisible after a focus-out/fo= cus-in event.This isn't surprising given= that blink-cursor-mode changes focus-in-hook and focus-out-hook. Probably = the bug is hidden somewhere in the complex interaction between the various = blink-cursor timers and hooks.=C2=A0
Philipp Stephani <p.s= tephani2@gmail.com> schrieb am Fr., 9. Sep. 2016 um 18:20=C2=A0Uhr:<= br class=3D"gmail_msg">Eli Zaretskii <eliz@gnu.org> schrieb am= Fr., 9. Sep. 2016 um 18:07=C2=A0Uhr:> From: Philipp Stephani <p.step= hani2@gmail.com>
> Date: Fri, 09 Sep 2016 15:59:02 +0000
> Cc: 24372@debbugs.gnu.org
>
> Eli Zaretskii <eliz@gnu.org> schrieb am Di., 6. Sep. 2016 um 18:0= 3 Uhr:
>
>=C2=A0 > From: Philipp Stephani <p.stephani2@gmail.com>= ;
>=C2=A0 > Date: Mon, 05 Sep 2016 21:16:40 +0200
>=C2=A0 >
>=C2=A0 > emacs -Q -eval '(setq blink-cursor-delay 0.0)'
>=C2=A0 >
>=C2=A0 > Move point around in the scratch buffer (e.g. press C-b a c= ouple of
>=C2=A0 > times): the cursor stays visible, as it should be. Then put= the mouse
>=C2=A0 > focus on a different GTK window (not Emacs window), put the= mouse focus
>=C2=A0 > back on Emacs, and move point again: the cursor is hidden, = making it
>=C2=A0 > impossible to see until you stop moving.
>
>=C2=A0 Does it happen even if you wait with cursor motion until after t= he
>=C2=A0 cursor blinks one time, i.e. if you start moving point with the = cursor
>=C2=A0 already visible after Emacs gets focus?
>
> Yes. No matter what state the cursor is in and how often it has alread= y blinked, it becomes invisible when
> moving.
So what is the importance of moving focus out of the Emacs frame and
then back into it?=C2=A0 Is the problem reproducible without that?=C2=A0 Or= are
you saying that focus-out followed by focus-in event somehow changes
the behavior wrt displaying the cursor?Yes. The cursor only become invisible after a focus-out/fo= cus-in event.This isn't surprising given= that blink-cursor-mode changes focus-in-hook and focus-out-hook. Probably = the bug is hidden somewhere in the complex interaction between the various = blink-cursor timers and hooks.=C2=A0A simpler recipe that doesn't need explicit focus events isemacs -Q -eval '(progn (setq blink-cursor-delay 0.0) (blink-curs= or-suspend) (blink-cursor-check))'=C2=A0=and then start movin= g point.