Index: src/frame-msw.c =================================================================== RCS file: /usr/CVSroot/XEmacs/xemacs/src/frame-msw.c,v retrieving revision 1.29.2.4 diff -u -u -r1.29.2.4 frame-msw.c --- src/frame-msw.c 1998/12/18 05:42:05 1.29.2.4 +++ src/frame-msw.c 1998/12/29 02:55:03 @@ -181,7 +181,9 @@ hwnd = CreateWindowEx (exstyle, XEMACS_CLASS, STRINGP(f->name) ? XSTRING_DATA(f->name) : - (STRINGP(name) ? XSTRING_DATA(name) : XEMACS_CLASS), + (STRINGP(name) ? + (CONST Extbyte*)XSTRING_DATA(name) : + (CONST Extbyte*)XEMACS_CLASS), style, rect_default.left, rect_default.top, rect_default.width, rect_default.height, Index: src/glyphs-msw.c =================================================================== RCS file: /usr/CVSroot/XEmacs/xemacs/src/glyphs-msw.c,v retrieving revision 1.21.2.8 diff -u -u -r1.21.2.8 glyphs-msw.c --- src/glyphs-msw.c 1998/12/25 02:37:27 1.21.2.8 +++ src/glyphs-msw.c 1998/12/29 02:55:11 @@ -2159,10 +2159,21 @@ int flags = BS_NOTIFY; Lisp_Object style; struct gui_item* pgui = &IMAGE_INSTANCE_WIDGET_ITEM (ii); - + Lisp_Object glyph = find_keyword_in_vector (instantiator, Q_image); + if (!gui_item_active_p (pgui)) flags |= WS_DISABLED; + if (!NILP (glyph)) + { + if (!IMAGE_INSTANCEP (glyph)) + glyph = glyph_image_instance (glyph, domain, ERROR_ME, 1); + + if (IMAGE_INSTANCEP (glyph)) + flags |= XIMAGE_INSTANCE_MSWINDOWS_BITMAP (glyph) ? + BS_BITMAP : BS_ICON; + } + style = pgui->style; if (EQ (style, Qradio)) @@ -2186,6 +2197,16 @@ SendMessage (wnd, BM_SETCHECK, (WPARAM)BST_CHECKED, 0); else SendMessage (wnd, BM_SETCHECK, (WPARAM)BST_UNCHECKED, 0); + /* add the image if one was given */ + if (!NILP (glyph) && IMAGE_INSTANCEP (glyph)) + { + SendMessage (wnd, BM_SETIMAGE, + (WPARAM) (XIMAGE_INSTANCE_MSWINDOWS_BITMAP (glyph) ? + IMAGE_BITMAP : IMAGE_ICON), + (LPARAM) (XIMAGE_INSTANCE_MSWINDOWS_BITMAP (glyph) ? + XIMAGE_INSTANCE_MSWINDOWS_BITMAP (glyph) : + XIMAGE_INSTANCE_MSWINDOWS_ICON (glyph))); + } } /* instantiate an edit control */ Index: src/glyphs-widget.c =================================================================== RCS file: /usr/CVSroot/XEmacs/xemacs/src/Attic/glyphs-widget.c,v retrieving revision 1.1.2.2 diff -u -u -r1.1.2.2 glyphs-widget.c --- src/glyphs-widget.c 1998/12/25 02:37:28 1.1.2.2 +++ src/glyphs-widget.c 1998/12/29 02:55:12 @@ -20,6 +20,8 @@ /* Synched up with: Not in FSF. */ +/* written by Andy Piper */ + #include #include "lisp.h" #include "lstream.h" @@ -28,7 +30,7 @@ #include "faces.h" #include "glyphs.h" #include "objects.h" - +#include "bytecode.h" #include "window.h" #include "buffer.h" #include "frame.h" @@ -51,6 +53,7 @@ Lisp_Object Qlabel; Lisp_Object Q_descriptor, Q_height, Q_width, Q_properties, Q_items; +Lisp_Object Q_image; #define WIDGET_BORDER_HEIGHT 2 #define WIDGET_BORDER_WIDTH 4 @@ -58,7 +61,6 @@ /* TODO: - more complex controls. - tooltips for controls. - - images in controls. */ /* In windows normal windows work in pixels, dialog boxes work in @@ -99,16 +101,47 @@ return IMAGE_WIDGET_MASK; } -#if 0 /* currently unused */ static void -check_valid_glyph (Lisp_Object data) +check_valid_glyph_or_image (Lisp_Object data) { + Lisp_Object glyph = data; if (SYMBOLP (data)) - CHECK_BUFFER_GLYPH (XSYMBOL (data)->value); - else - CHECK_BUFFER_GLYPH (data); + glyph = XSYMBOL (data)->value; + + if (IMAGE_INSTANCEP (glyph)) + CHECK_IMAGE_INSTANCE (glyph); + else if (!CONSP (glyph)) + CHECK_BUFFER_GLYPH (glyph); +} + +static void +check_valid_anything (Lisp_Object data) +{ +} + +static void +check_valid_callback (Lisp_Object data) +{ + if (!SYMBOLP (data) + && !COMPILED_FUNCTIONP (data) + && !CONSP (data)) + { + signal_simple_error (":callback must be a function or expression", data); + } +} + +static void +check_valid_symbol (Lisp_Object data) +{ + CHECK_SYMBOL (data); +} + +static void +check_valid_string_or_vector (Lisp_Object data) +{ + if (!STRINGP (data) && !VECTORP (data)) + signal_simple_error (":descriptor must be a string or a vector", data); } -#endif /* currently unused */ static void check_valid_item_list (Lisp_Object data) @@ -204,7 +237,8 @@ if (NILP (desc)) signal_simple_error ("Must supply :descriptor", instantiator); - gui_parse_item_keywords (desc, &gui); + if (VECTORP (desc)) + gui_parse_item_keywords (desc, &gui); if (!NILP (find_keyword_in_vector (instantiator, Q_width)) && !NILP (find_keyword_in_vector (instantiator, Q_pixel_width))) @@ -223,6 +257,40 @@ signal_simple_error ("Must supply item list", instantiator); } +/* we need to convert things like glyphs to images, eval expressions + etc.*/ +static Lisp_Object +widget_normalize (Lisp_Object inst, Lisp_Object console_type) +{ + /* This function can call lisp */ + Lisp_Object glyph = find_keyword_in_vector (inst, Q_image); + + /* we need to eval glyph if its an expression, we do this for the + same reasons we normalize file to data. */ + if (!NILP (glyph)) + { + int i; + struct gcpro gcpro1; + if (SYMBOLP (glyph)) + glyph = XSYMBOL (glyph)->value; + GCPRO1 (glyph); + + if (CONSP (glyph)) + glyph = Feval (glyph); + /* substitute the new glyph */ + for (i = 0; i < XVECTOR_LENGTH (inst); i++) + { + if (EQ (Q_image, XVECTOR_DATA (inst)[i])) + { + XVECTOR_DATA (inst)[i+1] = glyph; + break; + } + } + UNGCPRO; + } + return inst; +} + static void initialize_widget_image_instance (struct Lisp_Image_Instance *ii, Lisp_Object type) { @@ -253,6 +321,7 @@ Lisp_Object pixwidth = find_keyword_in_vector (instantiator, Q_pixel_width); Lisp_Object pixheight = find_keyword_in_vector (instantiator, Q_pixel_height); Lisp_Object desc = find_keyword_in_vector (instantiator, Q_descriptor); + Lisp_Object glyph = find_keyword_in_vector (instantiator, Q_image); int pw=0, ph=0, tw=0, th=0; /* this just does pixel type sizing */ @@ -272,12 +341,17 @@ IMAGE_INSTANCE_WIDGET_PROPS (ii) = find_keyword_in_vector (instantiator, Q_properties); - /* retrieve the gui item information */ + /* retrieve the gui item information. This is easy if we have been + provided with a vector, more difficult if we have just been given + keywords */ if (STRINGP (desc) || NILP (desc)) - IMAGE_INSTANCE_WIDGET_TEXT (ii) = desc; + { + /* big cheat - we rely on the fact that a gui item looks like an instantiator */ + gui_parse_item_keywords_no_errors (instantiator, pgui); + IMAGE_INSTANCE_WIDGET_TEXT (ii) = desc; + } else - gui_parse_item_keywords (find_keyword_in_vector (instantiator, Q_descriptor), - pgui); + gui_parse_item_keywords_no_errors (desc, pgui); /* normalize size information */ if (!NILP (width)) @@ -289,6 +363,18 @@ if (!NILP (pixheight)) ph = XINT (pixheight); + /* for a widget with an image pick up the dimensions from that */ + if (!NILP (glyph)) + { + if (!pw && !tw) + pw = glyph_width (glyph, Qnil, DEFAULT_INDEX, domain) + + 2 * WIDGET_BORDER_WIDTH; + if (!ph && !th) + ph = glyph_height (glyph, Qnil, DEFAULT_INDEX, domain) + + 2 * WIDGET_BORDER_HEIGHT; + } + + /* if we still don' t have sizes, guess from text size */ if (!tw && !pw && !NILP (IMAGE_INSTANCE_WIDGET_TEXT (ii))) tw = XSTRING_LENGTH (IMAGE_INSTANCE_WIDGET_TEXT (ii)); if (!th && !ph) @@ -300,7 +386,7 @@ else ph = default_pixheight; } - + if (tw !=0 || th !=0) widget_text_to_pixel_conversion (domain, IMAGE_INSTANCE_WIDGET_FACE (ii), @@ -355,11 +441,34 @@ defkeyword (&Q_width, ":width"); defkeyword (&Q_properties, ":properties"); defkeyword (&Q_items, ":items"); + defkeyword (&Q_image, ":image"); } void image_instantiator_format_create_glyphs_widget (void) { +#define VALID_GUI_KEYWORDS(type) \ + IIFORMAT_VALID_KEYWORD (type, Q_active, check_valid_anything); \ + IIFORMAT_VALID_KEYWORD (type, Q_suffix, check_valid_anything); \ + IIFORMAT_VALID_KEYWORD (type, Q_keys, check_valid_string); \ + IIFORMAT_VALID_KEYWORD (type, Q_style, check_valid_symbol); \ + IIFORMAT_VALID_KEYWORD (type, Q_selected, check_valid_anything); \ + IIFORMAT_VALID_KEYWORD (type, Q_filter, check_valid_anything); \ + IIFORMAT_VALID_KEYWORD (type, Q_config, check_valid_symbol); \ + IIFORMAT_VALID_KEYWORD (type, Q_included, check_valid_anything); \ + IIFORMAT_VALID_KEYWORD (type, Q_key_sequence, check_valid_string); \ + IIFORMAT_VALID_KEYWORD (type, Q_accelerator, check_valid_string); \ + IIFORMAT_VALID_KEYWORD (type, Q_label, check_valid_anything); \ + IIFORMAT_VALID_KEYWORD (type, Q_callback, check_valid_callback); \ + IIFORMAT_VALID_KEYWORD (type, Q_descriptor, check_valid_string_or_vector) + +#define VALID_WIDGET_KEYWORDS(type) \ + IIFORMAT_VALID_KEYWORD (type, Q_width, check_valid_int); \ + IIFORMAT_VALID_KEYWORD (type, Q_height, check_valid_int); \ + IIFORMAT_VALID_KEYWORD (type, Q_pixel_width, check_valid_int); \ + IIFORMAT_VALID_KEYWORD (type, Q_pixel_height, check_valid_int); \ + IIFORMAT_VALID_KEYWORD (type, Q_face, check_valid_face) + /* we only do this for properties */ INITIALIZE_IMAGE_INSTANTIATOR_FORMAT_NO_SYM (widget, "widget"); IIFORMAT_HAS_METHOD (widget, property); @@ -370,58 +479,50 @@ IIFORMAT_HAS_SHARED_METHOD (button, validate, widget); IIFORMAT_HAS_SHARED_METHOD (button, possible_dest_types, widget); IIFORMAT_HAS_SHARED_METHOD (button, instantiate, widget); + IIFORMAT_HAS_SHARED_METHOD (button, normalize, widget); + IIFORMAT_VALID_KEYWORD (button, Q_image, check_valid_glyph_or_image); + VALID_WIDGET_KEYWORDS (button); + VALID_GUI_KEYWORDS (button); - IIFORMAT_VALID_KEYWORD (button, Q_width, check_valid_int); - IIFORMAT_VALID_KEYWORD (button, Q_height, check_valid_int); - IIFORMAT_VALID_KEYWORD (button, Q_pixel_width, check_valid_int); - IIFORMAT_VALID_KEYWORD (button, Q_pixel_height, check_valid_int); - IIFORMAT_VALID_KEYWORD (button, Q_face, check_valid_face); - IIFORMAT_VALID_KEYWORD (button, Q_descriptor, check_valid_vector); /* edit fields */ INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (edit, "edit"); IIFORMAT_HAS_SHARED_METHOD (edit, validate, widget); IIFORMAT_HAS_SHARED_METHOD (edit, possible_dest_types, widget); IIFORMAT_HAS_SHARED_METHOD (edit, instantiate, widget); + VALID_WIDGET_KEYWORDS (edit); + VALID_GUI_KEYWORDS (edit); - IIFORMAT_VALID_KEYWORD (edit, Q_width, check_valid_int); - IIFORMAT_VALID_KEYWORD (edit, Q_height, check_valid_int); - IIFORMAT_VALID_KEYWORD (edit, Q_pixel_width, check_valid_int); - IIFORMAT_VALID_KEYWORD (edit, Q_pixel_height, check_valid_int); - IIFORMAT_VALID_KEYWORD (edit, Q_face, check_valid_face); - IIFORMAT_VALID_KEYWORD (edit, Q_descriptor, check_valid_vector); /* combo box */ INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (combo, "combo"); IIFORMAT_HAS_METHOD (combo, validate); IIFORMAT_HAS_SHARED_METHOD (combo, possible_dest_types, widget); IIFORMAT_HAS_METHOD (combo, instantiate); + VALID_GUI_KEYWORDS (combo); IIFORMAT_VALID_KEYWORD (combo, Q_width, check_valid_int); IIFORMAT_VALID_KEYWORD (combo, Q_height, check_valid_int); IIFORMAT_VALID_KEYWORD (combo, Q_pixel_width, check_valid_int); IIFORMAT_VALID_KEYWORD (combo, Q_face, check_valid_face); - IIFORMAT_VALID_KEYWORD (combo, Q_descriptor, check_valid_vector); IIFORMAT_VALID_KEYWORD (combo, Q_properties, check_valid_item_list); + /* scrollbar */ INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (scrollbar, "scrollbar"); IIFORMAT_HAS_SHARED_METHOD (scrollbar, validate, widget); IIFORMAT_HAS_SHARED_METHOD (scrollbar, possible_dest_types, widget); IIFORMAT_HAS_SHARED_METHOD (scrollbar, instantiate, widget); + VALID_GUI_KEYWORDS (scrollbar); IIFORMAT_VALID_KEYWORD (scrollbar, Q_pixel_width, check_valid_int); IIFORMAT_VALID_KEYWORD (scrollbar, Q_pixel_height, check_valid_int); IIFORMAT_VALID_KEYWORD (scrollbar, Q_face, check_valid_face); - IIFORMAT_VALID_KEYWORD (scrollbar, Q_descriptor, check_valid_vector); + /* labels */ INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (label, "label"); IIFORMAT_HAS_SHARED_METHOD (label, possible_dest_types, widget); IIFORMAT_HAS_SHARED_METHOD (label, instantiate, static); - - IIFORMAT_VALID_KEYWORD (label, Q_pixel_width, check_valid_int); - IIFORMAT_VALID_KEYWORD (label, Q_pixel_height, check_valid_int); - IIFORMAT_VALID_KEYWORD (label, Q_width, check_valid_int); - IIFORMAT_VALID_KEYWORD (label, Q_height, check_valid_int); - IIFORMAT_VALID_KEYWORD (label, Q_face, check_valid_face); + VALID_WIDGET_KEYWORDS (label); IIFORMAT_VALID_KEYWORD (label, Q_descriptor, check_valid_string); + #if 0 /* group */ INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (group, "group"); Index: src/glyphs.h =================================================================== RCS file: /usr/CVSroot/XEmacs/xemacs/src/glyphs.h,v retrieving revision 1.18.2.6 diff -u -u -r1.18.2.6 glyphs.h --- src/glyphs.h 1998/12/25 02:37:29 1.18.2.6 +++ src/glyphs.h 1998/12/29 02:55:16 @@ -626,7 +626,7 @@ extern Lisp_Object Q_mask_file, Q_mask_data, Q_hotspot_x, Q_hotspot_y; extern Lisp_Object Q_foreground, Q_background, Q_face, Q_descriptor, Q_group; extern Lisp_Object Q_width, Q_height, Q_pixel_width, Q_pixel_height; -extern Lisp_Object Q_items, Q_properties, Qimage_conversion_error; +extern Lisp_Object Q_items, Q_properties, Q_image, Qimage_conversion_error; extern Lisp_Object Vcontinuation_glyph, Vcontrol_arrow_glyph, Vhscroll_glyph; extern Lisp_Object Vinvisible_text_glyph, Voctal_escape_glyph, Vtruncation_glyph; extern Lisp_Object Vxemacs_logo; Index: src/gui.c =================================================================== RCS file: /usr/CVSroot/XEmacs/xemacs/src/gui.c,v retrieving revision 1.10.2.3 diff -u -u -r1.10.2.3 gui.c --- src/gui.c 1998/12/18 05:42:10 1.10.2.3 +++ src/gui.c 1998/12/29 02:55:16 @@ -31,7 +31,7 @@ Lisp_Object Q_active, Q_suffix, Q_keys, Q_style, Q_selected; Lisp_Object Q_filter, Q_config, Q_included, Q_key_sequence; -Lisp_Object Q_accelerator, Q_label; +Lisp_Object Q_accelerator, Q_label, Q_callback; Lisp_Object Qtoggle, Qradio; #ifdef HAVE_POPUPS @@ -123,7 +123,8 @@ */ void gui_item_add_keyval_pair (struct gui_item *pgui_item, - Lisp_Object key, Lisp_Object val) + Lisp_Object key, Lisp_Object val, + Error_behavior errb) { if (!KEYWORDP (key)) signal_simple_error_2 ("Non-keyword in gui item", key, pgui_item->name); @@ -136,9 +137,10 @@ else if (EQ (key, Q_style)) pgui_item->style = val; else if (EQ (key, Q_selected)) pgui_item->selected = val; else if (EQ (key, Q_keys)) pgui_item->keys = val; + else if (EQ (key, Q_callback)) pgui_item->callback = val; else if (EQ (key, Q_key_sequence)) ; /* ignored for FSF compatability */ else if (EQ (key, Q_label)) ; /* ignored for 21.0 implement in 21.2 */ - else + else if (ERRB_EQ (errb, ERROR_ME)) signal_simple_error_2 ("Unknown keyword in gui item", key, pgui_item->name); } @@ -148,7 +150,8 @@ * structure. */ void -gui_parse_item_keywords (Lisp_Object item, struct gui_item *pgui_item) +gui_parse_item_keywords_internal (Lisp_Object item, struct gui_item *pgui_item, + Error_behavior errb) { int length, plist_p, start; Lisp_Object *contents; @@ -201,11 +204,23 @@ { Lisp_Object key = contents [i++]; Lisp_Object val = contents [i++]; - gui_item_add_keyval_pair (pgui_item, key, val); + gui_item_add_keyval_pair (pgui_item, key, val, errb); } } } +void +gui_parse_item_keywords (Lisp_Object item, struct gui_item *pgui_item) +{ + gui_parse_item_keywords_internal (item, pgui_item, ERROR_ME); +} + +void +gui_parse_item_keywords_no_errors (Lisp_Object item, struct gui_item *pgui_item) +{ + gui_parse_item_keywords_internal (item, pgui_item, ERROR_ME_NOT); +} + /* * Decide whether a GUI item is active by evaluating its :active form * if any @@ -403,6 +418,7 @@ defkeyword (&Q_included, ":included"); defkeyword (&Q_accelerator, ":accelerator"); defkeyword (&Q_label, ":label"); + defkeyword (&Q_callback, ":callback"); defsymbol (&Qtoggle, "toggle"); defsymbol (&Qradio, "radio"); Index: src/gui.h =================================================================== RCS file: /usr/CVSroot/XEmacs/xemacs/src/gui.h,v retrieving revision 1.6.2.2 diff -u -u -r1.6.2.2 gui.h --- src/gui.h 1998/12/18 05:42:10 1.6.2.2 +++ src/gui.h 1998/12/29 02:55:17 @@ -68,12 +68,14 @@ extern Lisp_Object Q_accelerator, Q_active, Q_config, Q_filter, Q_included; extern Lisp_Object Q_keys, Q_selected, Q_suffix, Qradio, Qtoggle; -extern Lisp_Object Q_key_sequence, Q_label; +extern Lisp_Object Q_key_sequence, Q_label, Q_callback; void gui_item_init (struct gui_item *pgui_item); void gui_item_add_keyval_pair (struct gui_item *pgui_item, - Lisp_Object key, Lisp_Object val); + Lisp_Object key, Lisp_Object val, + Error_behavior errb); void gui_parse_item_keywords (Lisp_Object item, struct gui_item *pgui_item); +void gui_parse_item_keywords_no_errors (Lisp_Object item, struct gui_item *pgui_item); int gui_item_active_p (CONST struct gui_item *pgui_item); int gui_item_selected_p (CONST struct gui_item *pgui_item); int gui_item_included_p (CONST struct gui_item *pgui_item, Lisp_Object into); Index: src/menubar.c =================================================================== RCS file: /usr/CVSroot/XEmacs/xemacs/src/menubar.c,v retrieving revision 1.12.2.2 diff -u -u -r1.12.2.2 menubar.c --- src/menubar.c 1998/12/05 16:56:05 1.12.2.2 +++ src/menubar.c 1998/12/29 02:55:18 @@ -130,7 +130,7 @@ desc = XCDR (desc); if (!NILP (desc)) CHECK_CONS (desc); - gui_item_add_keyval_pair (pgui_item, key, val); + gui_item_add_keyval_pair (pgui_item, key, val, ERROR_ME); } /* Return the rest - supposed to be a list of items */ Index: src/s/cygwin32.h =================================================================== RCS file: /usr/CVSroot/XEmacs/xemacs/src/s/cygwin32.h,v retrieving revision 1.14.2.3 diff -u -u -r1.14.2.3 cygwin32.h --- src/s/cygwin32.h 1998/11/26 11:38:59 1.14.2.3 +++ src/s/cygwin32.h 1998/12/29 02:55:20 @@ -28,44 +28,16 @@ * horribly. What does get defined is HAVE_MS_WINDOWS, but this is * done by configure and only applies to the window system. * - * The important thing about building is that it is done on a binary - * mounted filesystem. i.e. something mounted like: mount -b c: - * /binary. If you do not do this then compilation of el files may - * produce garbage. As of b24 there are fixes in xemacs to make - * building on text mounts but I don't generally do this. Make sure - * you have installed cygwin32 b18 + patched dll (which can be found - * at http://www.lexa.ru/sos or on my home page - * http://www.parallax.co.uk/~andyp. Alternatively when b19 comes out - * the patched dll will be unnecessary. Also make sure your HOME path - * is unix style - i.e. without a drive letter. + * When building make sure your HOME path is unix style - i.e. without + * a drive letter. * - * Note that some people have reported problems with the patched - * cygwin.dll on Sergey's home page so you may want to use the one on - * mine which I *know* works. + * once you have done this, configure and make. * - * once you have done this, configure and make. If you want unexec - * support you need to download a.out.h from my web page or use cygwin - * b19. You probably want to build with mule support since this - * addresses crlf issues in a sensible way. - * * windows '95 - I haven't tested this under '95, it will probably * build but I konw there are some limitations with cygwin under 95 so * YMMV. I build with NT4 SP3. - * - * What I want to do: - * - * the fileio stuff merely uses the unix system calls this means that - * the mount type of your fs will determine how files are edited. This - * is fine except in the instance that you want to convert one to the - * other. In this instance I would like to bring the buffer_file_type - * code into the picture without all the other windows-nt - * cruft. Apparently the best way to do this is use the mule coding - * stuff. - * - * process support needs fixing although basic support works (a la - * make-docfile) * - * Andy Piper 8/1/98 + * Andy Piper 8/1/98 * http://www.parallax.co.uk/~andyp */ /* cheesy way to determine cygwin version */ @@ -270,7 +242,7 @@ /* Pseudo-terminal support under SVR4 only loops to deal with errors. */ -#define PTY_ITERATION for (i = 0; i < 1; i++) +#define PTY_ITERATION for (i = 0, c = 0; i < 1; i++) /* This sets the name of the master side of the PTY. */ Index: tests/glyph-test.el =================================================================== RCS file: /usr/CVSroot/XEmacs/xemacs/tests/Attic/glyph-test.el,v retrieving revision 1.1.2.1 diff -u -u -r1.1.2.1 glyph-test.el --- tests/glyph-test.el 1998/12/18 05:44:06 1.1.2.1 +++ tests/glyph-test.el 1998/12/29 02:55:20 @@ -1,6 +1,6 @@ (set-extent-begin-glyph (make-extent (point) (point)) - (make-glyph [xpm :file "../etc/xemacs-icon.xpm"])) + (setq icon (make-glyph [xpm :file "../etc/xemacs-icon.xpm"]))) (defun foo () (interactive) @@ -20,9 +20,20 @@ ;; normal pushbutton (set-extent-begin-glyph (make-extent (point) (point)) - (setq pbutton (make-glyph [button :width 10 :height 2 - :face modeline-mousable - :descriptor ["ok" foo :selected t]]))) + (setq pbutton (make-glyph + [button :width 10 :height 2 + :face modeline-mousable + :descriptor "ok" :callback foo + :selected t]))) + +(set-extent-begin-glyph + (make-extent (point) (point)) + (make-glyph + [button :face modeline-mousable + :descriptor "ok" :callback foo + :image (make-glyph + [xpm :file "../etc/xemacs-icon.xpm"])])) + ;; normal pushbutton (set-extent-begin-glyph (make-extent (point) (point))