Fix assertion violations due to non-ASCII text in menus
* src/xdisp.c (tool_bar_height, redisplay_tool_bar) (display_menu_bar): If the Lisp string to be displayed in the menu-bar or tool-bar window is multibyte, tell the display engine to treat it as multibyte, instead of relying on the initial determination by init_iterator (which is based on the multibyteness of the current buffer). (Bug#37385)
This commit is contained in:
parent
a4c471c984
commit
5940ac6330
1 changed files with 5 additions and 3 deletions
|
@ -12907,7 +12907,8 @@ tool_bar_height (struct frame *f, int *n_rows, bool pixelwise)
|
|||
temp_row->reversed_p = false;
|
||||
it.first_visible_x = 0;
|
||||
it.last_visible_x = WINDOW_PIXEL_WIDTH (w);
|
||||
reseat_to_string (&it, NULL, f->desired_tool_bar_string, 0, 0, 0, -1);
|
||||
reseat_to_string (&it, NULL, f->desired_tool_bar_string,
|
||||
0, 0, 0, STRING_MULTIBYTE (f->desired_tool_bar_string));
|
||||
it.paragraph_embedding = L2R;
|
||||
|
||||
while (!ITERATOR_AT_END_P (&it))
|
||||
|
@ -12994,7 +12995,8 @@ redisplay_tool_bar (struct frame *f)
|
|||
|
||||
/* Build a string that represents the contents of the tool-bar. */
|
||||
build_desired_tool_bar_string (f);
|
||||
reseat_to_string (&it, NULL, f->desired_tool_bar_string, 0, 0, 0, -1);
|
||||
reseat_to_string (&it, NULL, f->desired_tool_bar_string,
|
||||
0, 0, 0, STRING_MULTIBYTE (f->desired_tool_bar_string));
|
||||
/* FIXME: This should be controlled by a user option. But it
|
||||
doesn't make sense to have an R2L tool bar if the menu bar cannot
|
||||
be drawn also R2L, and making the menu bar R2L is tricky due
|
||||
|
@ -23531,7 +23533,7 @@ display_menu_bar (struct window *w)
|
|||
/* Display the item, pad with one space. */
|
||||
if (it.current_x < it.last_visible_x)
|
||||
display_string (NULL, string, Qnil, 0, 0, &it,
|
||||
SCHARS (string) + 1, 0, 0, -1);
|
||||
SCHARS (string) + 1, 0, 0, STRING_MULTIBYTE (string));
|
||||
}
|
||||
|
||||
/* Fill out the line with spaces. */
|
||||
|
|
Loading…
Add table
Reference in a new issue