aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRichard M. Stallman1993-03-12 06:26:18 +0000
committerRichard M. Stallman1993-03-12 06:26:18 +0000
commit7ce2c09547ff3180c6b8227d3be3b7fce46430f5 (patch)
treec3275dd3a36d699414dede0a225afadc17f7fad1 /src
parent5ec75a5586168826500d9444dc03dc663de78cc4 (diff)
downloademacs-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.c45
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 ();
128static char *fmodetrunc (); 128static char *fmodetrunc ();
129static char *decode_mode_spec (); 129static char *decode_mode_spec ();
130static int display_string (); 130static int display_string ();
131static 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 */
133char *minibuf_prompt; 134char *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
1836static void
1837display_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
1829static void 1874static void