all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Leo Liu <sdl.web@gmail.com>
Cc: 23026@debbugs.gnu.org
Subject: bug#23026: 25.0.92; menu-bar bug?
Date: Wed, 16 Mar 2016 17:36:47 +0200	[thread overview]
Message-ID: <83y49ia0z4.fsf@gnu.org> (raw)
In-Reply-To: <m14mc76kz7.fsf@gmail.com> (message from Leo Liu on Wed, 16 Mar 2016 13:38:20 +0800)

> From: Leo Liu <sdl.web@gmail.com>
> Date: Wed, 16 Mar 2016 13:38:20 +0800
> 
> 1. Start a GUI emacs with -q
> 2. load the attached t.el file
> 3. M-x test
> 4. look at the menu-bar and notice there is `Test' menu
> 5. mouse-click the first line and notice `Test' is gone
> 6. mouse-click the second line so that `Test' reappears
> 7. C-p to move to first line and notice `Test' doesn't disappear
> 
> The difference between 5 and 7 is puzzling. Is this a bug?

No, it's a redisplay optimization: Emacs doesn't redraw the menu bar
when all that's changed is cursor position.  In 99.999% of cases,
cursor motion doesn't require any changes in the menu-bar items, so
redrawing the menu bar after each movement of point would just slow
down cursor motion and cause annoying flickering of the menu bar.
Therefore, we don't do it.  I'm not sure I understand what's special
about this use case that we'd want to disable this optimization.

By contrast, a mouse click potentially activates/deactivates the mark
and extends or removes the region highlight, so many redisplay
optimizations are disabled when we process the click -- it isn't just
moving point.

> How to make the two behave consistently?

By "consistently" I believe you mean you'd like the menu bar updated
when point moves via keyboard commands, yes?  If so, you should force
a more thorough redisplay, e.g. by calling force-mode-line-update,
when point moves in a way that requires a change in the menu bar.  How
exactly to do that depends on your real-life use case -- it could be a
post-command-hook, or a special binding in the keymap which you put in
the property, or a function in cursor-sensor-functions property, or
something else.





  reply	other threads:[~2016-03-16 15:36 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-16  5:38 bug#23026: 25.0.92; menu-bar bug? Leo Liu
2016-03-16 15:36 ` Eli Zaretskii [this message]
2016-03-17  3:26   ` Leo Liu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=83y49ia0z4.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=23026@debbugs.gnu.org \
    --cc=sdl.web@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.