Mercurial > emacs
changeset 7040:cd4dd38925f9
(x_window): Test FRAME_EXTERNAL_MENU_BAR
to decide on calling initialize_frame_menubar.
(x_top_window_to_frame): New function.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sat, 23 Apr 1994 04:09:17 +0000 |
parents | 403172c099fc |
children | 7b8c405c910a |
files | src/xfns.c |
diffstat | 1 files changed, 34 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/xfns.c Sat Apr 23 04:07:29 1994 +0000 +++ b/src/xfns.c Sat Apr 23 04:09:17 1994 +0000 @@ -315,6 +315,38 @@ } return 0; } + +/* Return the frame whose principal (outermost) window is WDESC. + If WDESC is some other (smaller) window, we return 0. */ + +struct frame * +x_top_window_to_frame (wdesc) + int wdesc; +{ + Lisp_Object tail, frame; + struct frame *f; + struct x_display *x; + + for (tail = Vframe_list; XGCTYPE (tail) == Lisp_Cons; + tail = XCONS (tail)->cdr) + { + frame = XCONS (tail)->car; + if (XGCTYPE (frame) != Lisp_Frame) + continue; + f = XFRAME (frame); + if (f->display.nothing == 1) + return 0; + x = f->display.x; + /* This frame matches if the window is its topmost widget. */ + if (wdesc == XtWindow (x->widget)) + return f; + /* Match if the window is this frame's menubar. */ + if (x->menubar_widget + && wdesc == XtWindow (x->menubar_widget)) + return f; + } + return 0; +} #endif /* USE_X_TOOLKIT */ @@ -1768,12 +1800,11 @@ f->display.x->column_widget = pane_widget; - if (!minibuffer_only && FRAME_MENU_BAR_LINES (f) > 0) + if (!minibuffer_only && FRAME_EXTERNAL_MENU_BAR (f)) initialize_frame_menubar (f); /* mappedWhenManaged to false tells to the paned window to not map/unmap - * the emacs screen when changing menubar. This reduces flickering a lot. - */ + the emacs screen when changing menubar. This reduces flickering. */ ac = 0; XtSetArg (al[ac], XtNmappedWhenManaged, 0); ac++;