summaryrefslogtreecommitdiffstats
path: root/x11-terms/xterm/files/xterm-ds-sm-243.patch
diff options
context:
space:
mode:
Diffstat (limited to 'x11-terms/xterm/files/xterm-ds-sm-243.patch')
-rw-r--r--x11-terms/xterm/files/xterm-ds-sm-243.patch144
1 files changed, 144 insertions, 0 deletions
diff --git a/x11-terms/xterm/files/xterm-ds-sm-243.patch b/x11-terms/xterm/files/xterm-ds-sm-243.patch
new file mode 100644
index 0000000..bb35ee2
--- /dev/null
+++ b/x11-terms/xterm/files/xterm-ds-sm-243.patch
@@ -0,0 +1,144 @@
+diff -dPNur xterm-243/menu.c xterm-243-sm/menu.c
+--- xterm-243/menu.c 2009-03-28 18:27:57.000000000 +0100
++++ xterm-243-sm/menu.c 2009-06-14 05:54:26.000000000 +0200
+@@ -186,6 +186,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
+@@ -245,6 +249,15 @@
+ static void do_font_utf8_title PROTO_XT_CALLBACK_ARGS;
+ #endif
+
++static void
++UpdateMenuItem(
++#if OPT_TRACE
++ const char *func,
++#endif
++ MenuEntry * menu,
++ int which,
++ Bool val);
++
+ /*
+ * The order of entries MUST match the values given in menu.h
+ */
+@@ -365,6 +378,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 },
+ { "utf8-title", do_font_utf8_title,NULL },
+ #endif
+@@ -697,6 +711,14 @@
+ }
+ }
+ #endif
++#if OPT_WIDE_CHARS
++ if ((term->screen.utf8_mode>255)||(!term->screen.wide_chars)) {
++ SetItemSensitivity(fontMenuEntries[fontMenu_font_multibyte].widget,
++ False);
++ } else {
++ update_font_multibyte();
++ }
++#endif
+ }
+ break;
+
+@@ -1560,6 +1582,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
+ */
+@@ -2221,6 +2260,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-243/menu.h xterm-243-sm/menu.h
+--- xterm-243/menu.h 2009-02-13 20:55:26.000000000 +0100
++++ xterm-243-sm/menu.h 2009-06-14 05:57:56.000000000 +0200
+@@ -90,6 +90,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;
+@@ -264,6 +265,9 @@
+ fontMenu_font_loadable,
+ #endif
+ #endif
++#if OPT_WIDE_CHARS
++ fontMenu_font_multibyte,
++#endif
+
+ #if OPT_RENDERFONT || OPT_WIDE_CHARS
+ fontMenu_line2,
+@@ -470,6 +474,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() \
++ UpdateMenuItem (fontMenuEntries, \
++ fontMenu_font_multibyte, \
++ 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-243/ptyx.h xterm-243-sm/ptyx.h
+--- xterm-243/ptyx.h 2009-03-24 23:20:06.000000000 +0100
++++ xterm-243-sm/ptyx.h 2009-06-14 05:59:38.000000000 +0200
+@@ -1358,6 +1358,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;
+ XChar2b *draw_buf; /* drawXtermText() data */