you're right, it shouldn't be invalidated with set-buffer. we should simply
record its buffer and then check it at redisplay time -- i.e. when
update_frame_menubars is called!
"William M. Perry" wrote:
Well, I tracked down _why_ the menubar in XEmacs/GTK is flickering so
much
when using 'speedbar' or 'grep'. Basically, the variable
current-menubar
is both buffer-local and magic. Its magic function calls
MARK_MENUBAR_CHANGED, which causes the menubar to get reconstructed. No
problem in and of itself, but when calling set-buffer, this causes the
buffer-local variables to be evaluated, which nukes the menubar, etc.
I don't think that the menubar should be invalidated just because of
set-buffer, because it isn't supposed to change the buffer for more than
the current command.
But menubar_variable_changed() in menubar.c does not / cannot know whether
the change is permanent or temporary.
I couldn't find any place in lwlib where it tries to be smart about this
type of thing, so either I am missing something or it is gobs faster than
the GTK menubar widget at updating itself.
Can anyone think of a way around this? The flicker is horrendous with
speedbar.
-Bill P.
--
Ben
In order to save my hands, I am cutting back on my mail. I also write
as succinctly as possible -- please don't be offended. If you send me
mail, you _will_ get a response, but please be patient, especially for
XEmacs-related mail. If you need an immediate response and it is not
apparent in your message, please say so. Thanks for your understanding.
See also
http://www.666.com/ben/chronic-pain/