diff -dPNur xterm-207-new/menu.c xterm-207/menu.c --- xterm-207-new/menu.c 2005-11-13 23:10:36.000000000 +0000 +++ xterm-207/menu.c 2005-12-26 13:58:51.000000000 +0000 @@ -175,6 +175,10 @@ static void do_font_loadable PROTO_XT_CALLBACK_ARGS; #endif +#if OPT_WIDE_CHARS +static void do_font_multibyte PROTO_XT_CALLBACK_ARGS; +#endif + #if OPT_HP_FUNC_KEYS static void do_hp_fkeys PROTO_XT_CALLBACK_ARGS; #endif @@ -339,6 +343,7 @@ { "render-font", do_font_renderfont,NULL }, #endif #if OPT_WIDE_CHARS + { "font-multibyte", do_font_multibyte, NULL }, { "utf8-mode", do_font_utf8_mode,NULL }, #endif #endif /* toggles for other font extensions */ @@ -683,6 +688,15 @@ #if OPT_WIDE_CHARS update_font_utf8_mode(); #endif +#if OPT_WIDE_CHARS + if ((term->screen.utf8_mode==2)||(!term->screen.wide_chars)) { + set_sensitivity(mw, + fontMenuEntries[fontMenu_font_multibyte].widget, + False); + } else { + update_font_multibyte(); + } +#endif } FindFontSelection(NULL, True); set_sensitivity(mw, @@ -1423,6 +1437,23 @@ } #endif +#if OPT_WIDE_CHARS +static void +do_font_multibyte(Widget gw GCC_UNUSED, + XtPointer closure GCC_UNUSED, + XtPointer data GCC_UNUSED) +{ + term->screen.font_multibyte = !term->screen.font_multibyte; + if (term->screen.font_multibyte) { + term->screen.utf8_mode=1; + } else { + term->screen.utf8_mode=0; + } + update_font_multibyte(); + Redraw(); +} +#endif + /* * tek menu */ @@ -2054,6 +2085,18 @@ } #endif +#if OPT_WIDE_CHARS +void +HandleFontMultibyte(Widget w, + XEvent * event GCC_UNUSED, + String * params, + Cardinal * param_count) +{ + handle_toggle(do_font_multibyte, (int) term->screen.font_multibyte, + params, *param_count, w, (XtPointer) 0, (XtPointer) 0); +} +#endif + #if OPT_BOX_CHARS void HandleFontBoxChars(Widget w, diff -dPNur xterm-207-new/menu.h xterm-207/menu.h --- xterm-207-new/menu.h 2005-11-03 13:17:28.000000000 +0000 +++ xterm-207/menu.h 2005-12-26 13:58:51.000000000 +0000 @@ -87,6 +87,7 @@ extern void HandleFontBoxChars PROTO_XT_ACTIONS_ARGS; extern void HandleFontDoublesize PROTO_XT_ACTIONS_ARGS; extern void HandleFontLoading PROTO_XT_ACTIONS_ARGS; +extern void HandleFontMultibyte PROTO_XT_ACTIONS_ARGS; extern void HandleHardReset PROTO_XT_ACTIONS_ARGS; extern void HandleHpFunctionKeys PROTO_XT_ACTIONS_ARGS; extern void HandleJumpscroll PROTO_XT_ACTIONS_ARGS; @@ -252,6 +253,9 @@ fontMenu_font_loadable, #endif #endif +#if OPT_WIDE_CHARS + fontMenu_font_multibyte, +#endif #if OPT_RENDERFONT || OPT_WIDE_CHARS fontMenu_line2, @@ -430,6 +434,15 @@ #define FS2MI(n) (n) /* font_size_to_menu_item */ #define MI2FS(n) (n) /* menu_item_to_font_size */ +#if OPT_WIDE_CHARS +#define update_font_multibyte() \ + update_menu_item (term->screen.fontMenu, \ + fontMenuEntries[fontMenu_font_multibyte].widget, \ + term->screen.font_multibyte) +#else +#define update_font_multibyte() /* nothing */ +#endif + #if OPT_TEK4014 extern void set_tekfont_menu_item(int n,int val); #else diff -dPNur xterm-207-new/ptyx.h xterm-207/ptyx.h --- xterm-207-new/ptyx.h 2005-11-03 13:17:28.000000000 +0000 +++ xterm-207/ptyx.h 2005-12-26 13:59:17.000000000 +0000 @@ -1237,6 +1237,7 @@ int unicode_font; /* font uses unicode encoding */ int utf_count; /* state of utf_char */ IChar utf_char; /* in-progress character */ + int font_multibyte; /* is UTF mode switched on */ int last_written_col; int last_written_row; #endif