aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKarl Heuer1996-07-07 22:40:53 +0000
committerKarl Heuer1996-07-07 22:40:53 +0000
commit3c8feb4a2075ea76577efd18928d686da61f9bb3 (patch)
tree81e919f56db04f609348a8e1bd2c85eb97562c5e /src
parent33d5e9cc8fdbd14172135e1d91e703458c8f748a (diff)
downloademacs-3c8feb4a2075ea76577efd18928d686da61f9bb3.tar.gz
emacs-3c8feb4a2075ea76577efd18928d686da61f9bb3.zip
(IT_menu_display): Display control characters as ^X.
(XMenuAddPane, XMenuAddSelection): Adjust menu width for control characters (displayed as ^X).
Diffstat (limited to 'src')
-rw-r--r--src/msdos.c34
1 files changed, 31 insertions, 3 deletions
diff --git a/src/msdos.c b/src/msdos.c
index 99cb08e71ef..447e6a5d203 100644
--- a/src/msdos.c
+++ b/src/msdos.c
@@ -1854,7 +1854,17 @@ IT_menu_display (XMenu *menu, int y, int x, int *faces)
1854 p = text; 1854 p = text;
1855 *p++ = FAST_MAKE_GLYPH (' ', face); 1855 *p++ = FAST_MAKE_GLYPH (' ', face);
1856 for (j = 0, q = menu->text[i]; *q; j++) 1856 for (j = 0, q = menu->text[i]; *q; j++)
1857 *p++ = FAST_MAKE_GLYPH (*q++, face); 1857 {
1858 if (*q > 26)
1859 *p++ = FAST_MAKE_GLYPH (*q++, face);
1860 else /* make '^x' */
1861 {
1862 *p++ = FAST_MAKE_GLYPH ('^', face);
1863 j++;
1864 *p++ = FAST_MAKE_GLYPH (*q++ + 64, face);
1865 }
1866 }
1867
1858 for (; j < width; j++) 1868 for (; j < width; j++)
1859 *p++ = FAST_MAKE_GLYPH (' ', face); 1869 *p++ = FAST_MAKE_GLYPH (' ', face);
1860 *p++ = FAST_MAKE_GLYPH (menu->submenu[i] ? 16 : ' ', face); 1870 *p++ = FAST_MAKE_GLYPH (menu->submenu[i] ? 16 : ' ', face);
@@ -1891,6 +1901,7 @@ int
1891XMenuAddPane (Display *foo, XMenu *menu, char *txt, int enable) 1901XMenuAddPane (Display *foo, XMenu *menu, char *txt, int enable)
1892{ 1902{
1893 int len; 1903 int len;
1904 char *p;
1894 1905
1895 if (!enable) 1906 if (!enable)
1896 abort (); 1907 abort ();
@@ -1900,8 +1911,16 @@ XMenuAddPane (Display *foo, XMenu *menu, char *txt, int enable)
1900 menu->text[menu->count] = txt; 1911 menu->text[menu->count] = txt;
1901 menu->panenumber[menu->count] = ++menu->panecount; 1912 menu->panenumber[menu->count] = ++menu->panecount;
1902 menu->count++; 1913 menu->count++;
1903 if ((len = strlen (txt)) > menu->width) 1914
1915 /* Adjust length for possible control characters (which will
1916 be written as ^x). */
1917 for (len = strlen (txt), p = txt; *p; p++)
1918 if (*p < 27)
1919 len++;
1920
1921 if (len > menu->width)
1904 menu->width = len; 1922 menu->width = len;
1923
1905 return menu->panecount; 1924 return menu->panecount;
1906} 1925}
1907 1926
@@ -1912,6 +1931,7 @@ XMenuAddSelection (Display *bar, XMenu *menu, int pane,
1912 int foo, char *txt, int enable) 1931 int foo, char *txt, int enable)
1913{ 1932{
1914 int len; 1933 int len;
1934 char *p;
1915 1935
1916 if (pane) 1936 if (pane)
1917 if (!(menu = IT_menu_search_pane (menu, pane))) 1937 if (!(menu = IT_menu_search_pane (menu, pane)))
@@ -1921,8 +1941,16 @@ XMenuAddSelection (Display *bar, XMenu *menu, int pane,
1921 menu->text[menu->count] = txt; 1941 menu->text[menu->count] = txt;
1922 menu->panenumber[menu->count] = enable; 1942 menu->panenumber[menu->count] = enable;
1923 menu->count++; 1943 menu->count++;
1924 if ((len = strlen (txt)) > menu->width) 1944
1945 /* Adjust length for possible control characters (which will
1946 be written as ^x). */
1947 for (len = strlen (txt), p = txt; *p; p++)
1948 if (*p < 27)
1949 len++;
1950
1951 if (len > menu->width)
1925 menu->width = len; 1952 menu->width = len;
1953
1926 return XM_SUCCESS; 1954 return XM_SUCCESS;
1927} 1955}
1928 1956