Mercurial > hg > xemacs-beta
diff src/menubar-x.c @ 1346:01c57eb70ae9
[xemacs-hg @ 2003-03-09 02:27:27 by ben]
To: xemacs-patches@xemacs.org
i.c: Sleep between calls to check for I/O, since these calls are non-blocking.
behavior.el: Allow other keywords for forward compatibility.
cl-macs.el: Rewrite to eliminate byte-compiler warning when `return' is used
without `finally'.
cmdloop.el: Avoid truncated error messages for `end-of-file' and the like.
cmdloop.el: Avoid char-int error after syncing.
files.el: Eliminate byte-compile warnings.
printer.el: Fix line-width calculations.
#### This used to work. Someone's changes (perhaps by
Michael Sperber?) seem to have messed something up.
simple.el: Use new clear-left-side functions to avoid messages ending up on
the same line as other output.
xemacs.mak: Add override for info/ as well when separate source/build dirs.
xemacs.mak: Order sections in main build process and add comments. Add
additional dependencies to try and prevent later steps from
happening when failures in earlier steps have occurred.
Makefile.in.in: Order sections in main build process and add comments. Add
additional dependencies to try and prevent later steps from
happening when failures in earlier steps have occurred.
alloc.c: Don't arbitrarily clear Vconfigure_info_directory since it
messes up separate build/source dirs.
console.c, console.h, device-msw.c, device.c: Add accidentally omitted msprinter console and data descriptions.
print.c, console-msw.c: Add clear-left-side functionality to help keep stdio/stderr
output from separate sources on separate lines. Generalize
the different kinds of debugging output. Add dpa().
profile.c: Add better docs on Unix/Windows differences.
regex.c: Fix problems with rel-alloc compilation caused by previous patch.
emacs.c: Seg fault rather than abort on Cygwin, since gdb doesn't trap
aborts properly.
console-gtk-impl.h, console-gtk.h, console-msw.h, console-x-impl.h, console-x.h, dialog-gtk.c, dialog-x.c, event-msw.c, frame-gtk.c, frame-x.c, frameslots.h, glyphs-gtk.c, glyphs-x.c, gui-gtk.c, gui-x.c, inline.c, menubar-gtk.c, menubar-msw.c, menubar-x.c, scrollbar-gtk.c, scrollbar-x.c, ui-gtk.c: Delete popup-data object. Delete menubar_data field from frames,
since its usage is frame-specific. Delete menubar-msw.h,
gui-x.h, gui-gtk.h. Clean up handling of lwlib callback data
GCPRO'ing and add missing GCPRO recomputation in widget code.
author | ben |
---|---|
date | Sun, 09 Mar 2003 02:27:46 +0000 |
parents | 1b0339b048ce |
children | 59bf16be00bf |
line wrap: on
line diff
--- a/src/menubar-x.c Sat Mar 08 22:52:26 2003 +0000 +++ b/src/menubar-x.c Sun Mar 09 02:27:46 2003 +0000 @@ -48,7 +48,6 @@ #include "window-impl.h" #include "console-x-impl.h" -#include "gui-x.h" #include "EmacsFrame.h" #include "../lwlib/lwlib.h" @@ -57,9 +56,6 @@ int deep_p, int first_time_p); -#define FRAME_MENUBAR_DATA(frame) ((frame)->menubar_data) -#define XFRAME_MENUBAR_DATA(frame) XPOPUP_DATA ((frame)->menubar_data) - #define MENUBAR_TYPE 0 #define SUBMENU_TYPE 1 #define POPUP_TYPE 2 @@ -481,9 +477,9 @@ /* Now that we've destructively modified part of the widget value hierarchy, our list of protected callbacks will no longer be valid, so we need to recompute it. */ - snarf_widget_values_for_gcpro (FRAME_MENUBAR_DATA (f)); + gcpro_popup_callbacks (FRAME_X_MENUBAR_ID (f)); } - else if (!POPUP_DATAP (FRAME_MENUBAR_DATA (f))) + else if (!FRAME_X_MENUBAR_ID (f)) return; else { @@ -565,21 +561,12 @@ if (!data || (!data->next && !data->contents)) abort (); - if (NILP (FRAME_MENUBAR_DATA (f))) - { - struct popup_data *mdata = - alloc_lcrecord_type (struct popup_data, &lrecord_popup_data); - - mdata->id = new_lwlib_id (); - mdata->last_menubar_buffer = Qnil; - mdata->protect_me = Qnil; - mdata->menubar_contents_up_to_date = 0; - FRAME_MENUBAR_DATA (f) = wrap_popup_data (mdata); - } + if (!FRAME_X_MENUBAR_ID (f)) + FRAME_X_MENUBAR_ID (f) = new_lwlib_id (); /***** now store into the menubar widget, creating it if necessary *****/ - id = XFRAME_MENUBAR_DATA (f)->id; + id = FRAME_X_MENUBAR_ID (f); if (!FRAME_X_MENUBAR_WIDGET (f)) { Widget parent = FRAME_X_CONTAINER_WIDGET (f); @@ -612,10 +599,10 @@ have been freshly created. They need to be GC-protected, so snarf them now and record them into the popup-data object associated with the frame. */ - snarf_widget_values_for_gcpro (FRAME_MENUBAR_DATA (f)); + gcpro_popup_callbacks (id); - XFRAME_MENUBAR_DATA (f)->menubar_contents_up_to_date = deep_p; - XFRAME_MENUBAR_DATA (f)->last_menubar_buffer = + FRAME_X_MENUBAR_CONTENTS_UP_TO_DATE (f) = deep_p; + FRAME_X_LAST_MENUBAR_BUFFER (f) = XWINDOW (FRAME_LAST_NONMINIBUF_WINDOW (f))->buffer; return menubar_visible; } @@ -721,8 +708,8 @@ */ int menubar_contents_changed = (f->menubar_changed - || NILP (FRAME_MENUBAR_DATA (f)) - || (!EQ (XFRAME_MENUBAR_DATA (f)->last_menubar_buffer, + || !FRAME_X_MENUBAR_ID (f) + || (!EQ (FRAME_X_LAST_MENUBAR_BUFFER (f), XWINDOW (FRAME_LAST_NONMINIBUF_WINDOW (f))->buffer))); Boolean menubar_was_visible = XtIsManaged (FRAME_X_MENUBAR_WIDGET (f)); @@ -765,9 +752,10 @@ menubar_widget = FRAME_X_MENUBAR_WIDGET (f); if (menubar_widget) { - LWLIB_ID id = XFRAME_MENUBAR_DATA (f)->id; + LWLIB_ID id = FRAME_X_MENUBAR_ID (f); lw_destroy_all_widgets (id); - XFRAME_MENUBAR_DATA (f)->id = 0; + ungcpro_popup_callbacks (id); + FRAME_X_MENUBAR_ID (f) = 0; } } @@ -1234,7 +1222,7 @@ Lisp_Object matchp; widget_value *val; - LWLIB_ID id = XPOPUP_DATA (f->menubar_data)->id; + LWLIB_ID id = FRAME_X_MENUBAR_ID (f); val = lw_get_all_values (id); if (val) @@ -1323,10 +1311,10 @@ LWLIB_ID id; widget_value *val; - if (NILP (f->menubar_data)) + if (!FRAME_X_MENUBAR_ID (f)) invalid_argument ("Frame has no menubar", Qunbound); - id = XPOPUP_DATA (f->menubar_data)->id; + id = FRAME_X_MENUBAR_ID (f); val = lw_get_all_values (id); val = val->contents; lw_set_menu (FRAME_X_MENUBAR_WIDGET (f), val);