diff options
| author | Richard M. Stallman | 1993-03-12 06:26:18 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1993-03-12 06:26:18 +0000 |
| commit | 7ce2c09547ff3180c6b8227d3be3b7fce46430f5 (patch) | |
| tree | c3275dd3a36d699414dede0a225afadc17f7fad1 /src | |
| parent | 5ec75a5586168826500d9444dc03dc663de78cc4 (diff) | |
| download | emacs-7ce2c09547ff3180c6b8227d3be3b7fce46430f5.tar.gz emacs-7ce2c09547ff3180c6b8227d3be3b7fce46430f5.zip | |
(display_menu_bar): New function.
(redisplay_window): Call display_menu_bar.
Diffstat (limited to 'src')
| -rw-r--r-- | src/xdisp.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/xdisp.c b/src/xdisp.c index 1ee9158fcd0..c38021f9c9d 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -128,6 +128,7 @@ static int display_mode_element (); | |||
| 128 | static char *fmodetrunc (); | 128 | static char *fmodetrunc (); |
| 129 | static char *decode_mode_spec (); | 129 | static char *decode_mode_spec (); |
| 130 | static int display_string (); | 130 | static int display_string (); |
| 131 | static void display_menu_bar (); | ||
| 131 | 132 | ||
| 132 | /* Prompt to display in front of the minibuffer contents */ | 133 | /* Prompt to display in front of the minibuffer contents */ |
| 133 | char *minibuf_prompt; | 134 | char *minibuf_prompt; |
| @@ -979,6 +980,12 @@ done: | |||
| 979 | && height != XFASTINT (w->height)) | 980 | && height != XFASTINT (w->height)) |
| 980 | display_mode_line (w); | 981 | display_mode_line (w); |
| 981 | 982 | ||
| 983 | /* When we reach a frame's selected window, redo the frame's menu bar. */ | ||
| 984 | if (!NILP (w->update_mode_line) | ||
| 985 | && FRAME_MENU_BAR_LINES (f) > 0 | ||
| 986 | && EQ (FRAME_SELECTED_WINDOW (f), window)) | ||
| 987 | display_menu_bar (w); | ||
| 988 | |||
| 982 | finish_scroll_bars: | 989 | finish_scroll_bars: |
| 983 | if (FRAME_HAS_VERTICAL_SCROLL_BARS (f)) | 990 | if (FRAME_HAS_VERTICAL_SCROLL_BARS (f)) |
| 984 | { | 991 | { |
| @@ -1824,6 +1831,44 @@ display_text_line (w, start, vpos, hpos, taboffset) | |||
| 1824 | return &val_display_text_line; | 1831 | return &val_display_text_line; |
| 1825 | } | 1832 | } |
| 1826 | 1833 | ||
| 1834 | /* Redisplay the menu bar in the frame for window W. */ | ||
| 1835 | |||
| 1836 | static void | ||
| 1837 | display_menu_bar (w) | ||
| 1838 | struct window *w; | ||
| 1839 | { | ||
| 1840 | Lisp_Object items, tail; | ||
| 1841 | register int vpos = 0; | ||
| 1842 | register FRAME_PTR f = XFRAME (WINDOW_FRAME (w)); | ||
| 1843 | int maxendcol = FRAME_WIDTH (f); | ||
| 1844 | int hpos = 0; | ||
| 1845 | |||
| 1846 | if (FRAME_MENU_BAR_LINES (f) <= 0) | ||
| 1847 | return; | ||
| 1848 | |||
| 1849 | get_display_line (f, vpos, 0); | ||
| 1850 | |||
| 1851 | items = menu_bar_items (); | ||
| 1852 | FRAME_MENU_BAR_ITEMS (f) = items; | ||
| 1853 | |||
| 1854 | for (tail = items; CONSP (tail); tail = XCONS (tail)->cdr) | ||
| 1855 | { | ||
| 1856 | Lisp_Object string; | ||
| 1857 | string = XCONS (XCONS (XCONS (tail)->car)->cdr)->car; | ||
| 1858 | |||
| 1859 | /* Record in each item its hpos. */ | ||
| 1860 | XFASTINT (XCONS (XCONS (XCONS (tail)->car)->cdr)->cdr) = hpos; | ||
| 1861 | |||
| 1862 | if (hpos < maxendcol) | ||
| 1863 | hpos = display_string (XWINDOW (FRAME_ROOT_WINDOW (f)), vpos, | ||
| 1864 | XSTRING (string)->data, | ||
| 1865 | hpos, 0, hpos, maxendcol) + 3; | ||
| 1866 | } | ||
| 1867 | |||
| 1868 | FRAME_DESIRED_GLYPHS (f)->bufp[vpos] = 0; | ||
| 1869 | FRAME_DESIRED_GLYPHS (f)->highlight[vpos] = mode_line_inverse_video; | ||
| 1870 | } | ||
| 1871 | |||
| 1827 | /* Display the mode line for window w */ | 1872 | /* Display the mode line for window w */ |
| 1828 | 1873 | ||
| 1829 | static void | 1874 | static void |