Mercurial > hg > xemacs-beta
comparison src/gui.c @ 793:e38acbeb1cae
[xemacs-hg @ 2002-03-29 04:46:17 by ben]
lots o' fixes
etc/ChangeLog: New file.
Separated out all entries for etc/ into their own ChangeLog.
Includes entries for the following files:
etc/BABYL, etc/BETA, etc/CHARSETS, etc/DISTRIB, etc/Emacs.ad,
etc/FTP, etc/GNUS-NEWS, etc/GOATS, etc/HELLO, etc/INSTALL,
etc/MACHINES, etc/MAILINGLISTS, etc/MSDOS, etc/MYTHOLOGY, etc/NEWS,
etc/OXYMORONS, etc/PACKAGES, etc/README, etc/TUTORIAL,
etc/TUTORIAL.de, etc/TUTORIAL.ja, etc/TUTORIAL.ko, etc/TUTORIAL.se,
etc/aliases.ksh, etc/altrasoft-logo.xpm, etc/check_cygwin_setup.sh,
etc/custom/example-themes/europe-theme.el,
etc/custom/example-themes/ex-custom-file,
etc/custom/example-themes/example-theme.el, etc/e/eterm.ti,
etc/edt-user.doc, etc/enriched.doc, etc/etags.1, etc/gnuserv.1,
etc/gnuserv.README, etc/package-index.LATEST.gpg,
etc/package-index.LATEST.pgp, etc/photos/jan.png, etc/recycle.xpm,
etc/refcard.tex, etc/sample.Xdefaults, etc/sample.emacs,
etc/sgml/CATALOG, etc/sgml/HTML32.dtd, etc/skk/SKK.tut.E,
etc/smilies/Face_ase.xbm, etc/smilies/Face_ase2.xbm,
etc/smilies/Face_ase3.xbm, etc/smilies/Face_smile.xbm,
etc/smilies/Face_weep.xbm, etc/sounds, etc/toolbar,
etc/toolbar/workshop-cap-up.xpm, etc/xemacs-ja.1, etc/xemacs.1,
etc/yow.lines, etc\BETA, etc\NEWS, etc\README, etc\TUTORIAL,
etc\TUTORIAL.de, etc\check_cygwin_setup.sh, etc\sample.init.el,
etc\unicode\README, etc\unicode\mule-ucs\*, etc\unicode\other\*
unicode/unicode-consortium/8859-16.TXT: New file.
mule/english.el: Define this charset now, since a bug was fixed that formerly
prevented it.
mule/ethio-util.el: Fix compile errors involving Unicode `characters', which should be
integers.
Makefile.in.in: Always include gui.c, to fix compile error when TTY-only.
EmacsFrame.c, abbrev.c, alloc.c, buffer.c, buffer.h, bytecode.c, bytecode.h, callint.c, callproc.c, casetab.c, casetab.h, charset.h, chartab.c, chartab.h, cmds.c, console-msw.c, console-msw.h, console-tty.c, console-x.c, console-x.h, console.c, console.h, data.c, database.c, device-gtk.c, device-msw.c, device-x.c, device.c, device.h, dialog-msw.c, doc.c, doprnt.c, dumper.c, dynarr.c, editfns.c, eldap.c, eldap.h, elhash.c, elhash.h, emacs.c, eval.c, event-Xt.c, event-gtk.c, event-msw.c, event-stream.c, event-tty.c, event-unixoid.c, events.c, events.h, extents.c, extents.h, faces.c, faces.h, file-coding.c, file-coding.h, fileio.c, filelock.c, fns.c, frame-gtk.c, frame-msw.c, frame-tty.c, frame-x.c, frame.c, frame.h, free-hook.c, general-slots.h, glyphs-eimage.c, glyphs-gtk.c, glyphs-msw.c, glyphs-widget.c, glyphs-x.c, glyphs.c, glyphs.h, gpmevent.c, gtk-xemacs.c, gui-msw.c, gui-x.c, gui-x.h, gui.c, gui.h, gutter.c, gutter.h, indent.c, input-method-xlib.c, insdel.c, keymap.c, keymap.h, lisp-disunion.h, lisp-union.h, lisp.h, lread.c, lrecord.h, lstream.c, lstream.h, marker.c, menubar-gtk.c, menubar-msw.c, menubar-x.c, menubar.c, minibuf.c, mule-canna.c, mule-ccl.c, mule-charset.c, mule-wnnfns.c, native-gtk-toolbar.c, objects-msw.c, objects-tty.c, objects-x.c, objects.c, objects.h, opaque.c, opaque.h, postgresql.c, postgresql.h, print.c, process-unix.c, process.c, process.h, rangetab.c, rangetab.h, redisplay-gtk.c, redisplay-msw.c, redisplay-output.c, redisplay-tty.c, redisplay-x.c, redisplay.c, scrollbar-gtk.c, scrollbar-msw.c, scrollbar-x.c, scrollbar.c, scrollbar.h, search.c, select-gtk.c, select-x.c, sound.c, specifier.c, specifier.h, strftime.c, symbols.c, symeval.h, syntax.h, text.c, text.h, toolbar-common.c, toolbar-msw.c, toolbar.c, toolbar.h, tooltalk.c, tooltalk.h, ui-gtk.c, ui-gtk.h, undo.c, vm-limit.c, window.c, window.h: Eliminate XSETFOO. Replace all usages with wrap_foo().
Make symbol->name a Lisp_Object, not Lisp_String *. Eliminate
nearly all uses of Lisp_String * in favor of Lisp_Object, and
correct macros so most of them favor Lisp_Object.
Create new error-behavior ERROR_ME_DEBUG_WARN -- output warnings,
but at level `debug' (usually ignored). Use it when instantiating
specifiers, so problems can be debugged. Move
log-warning-minimum-level into C so that we can optimize
ERROR_ME_DEBUG_WARN.
Fix warning levels consistent with new definitions.
Add default_ and parent fields to char table; not yet implemented.
New fun Dynarr_verify(); use for further error checking on Dynarrs.
Rearrange code at top of lisp.h in conjunction with dynarr changes.
Fix eifree(). Use Eistrings in various places
(format_event_object(), where_is_to_char(), and callers thereof)
to avoid fixed-size strings buffers. New fun write_eistring().
Reindent and fix GPM code to follow standards.
Set default MS Windows font to Lucida Console (same size as
Courier New but less interline spacing, so more lines fit).
Increase default frame size on Windows to 50 lines. (If that's too
big for the workspace, the frame will be shrunk as necessary.)
Fix problem with text files with no newlines (). (Change
`convert-eol' coding system to use `nil' for autodetect,
consistent with make-coding-system.)
Correct compile warnings in vm-limit.c.
Fix handling of reverse-direction charsets to avoid errors when
opening (e.g.) mule-ucs/lisp/reldata/uiso8859-6.el.
Recode some object printing methods to use write_fmt_string()
instead of a fixed buffer and sprintf.
Turn on display of png comments as warnings (level `info'), now
that they're unobtrusive.
Revamped the sound documentation.
Fixed bug in redisplay w.r.t. hscroll/truncation/continuation
glyphs causing jumping up and down of the lines, since they're
bigger than the line size. (It was seen most obviously when
there's a horizontal scroll bar, e.g. do C-h a glyph or something
like that.) The problem was that the glyph-contrib-p setting on
glyphs was ignored even if it was set properly, which it wasn't
until now.
author | ben |
---|---|
date | Fri, 29 Mar 2002 04:49:13 +0000 |
parents | 943eaba38521 |
children | 2b6fa2618f76 |
comparison
equal
deleted
inserted
replaced
792:4e83fdb13eb9 | 793:e38acbeb1cae |
---|---|
1 /* Generic GUI code. (menubars, scrollbars, toolbars, dialogs) | 1 /* Generic GUI code. (menubars, scrollbars, toolbars, dialogs) |
2 Copyright (C) 1995 Board of Trustees, University of Illinois. | 2 Copyright (C) 1995 Board of Trustees, University of Illinois. |
3 Copyright (C) 1995, 1996, 2000, 2001 Ben Wing. | 3 Copyright (C) 1995, 1996, 2000, 2001, 2002 Ben Wing. |
4 Copyright (C) 1995 Sun Microsystems, Inc. | 4 Copyright (C) 1995 Sun Microsystems, Inc. |
5 Copyright (C) 1998 Free Software Foundation, Inc. | 5 Copyright (C) 1998 Free Software Foundation, Inc. |
6 | 6 |
7 This file is part of XEmacs. | 7 This file is part of XEmacs. |
8 | 8 |
21 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 21 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
22 Boston, MA 02111-1307, USA. */ | 22 Boston, MA 02111-1307, USA. */ |
23 | 23 |
24 /* Synched up with: Not in FSF. */ | 24 /* Synched up with: Not in FSF. */ |
25 | 25 |
26 /* This file not quite Mule-ized yet but will be when merged with my | 26 /* This file Mule-ized by Ben Wing, 3-24-02. */ |
27 Mule workspace. --ben */ | |
28 | 27 |
29 #include <config.h> | 28 #include <config.h> |
30 #include "lisp.h" | 29 #include "lisp.h" |
31 #include "gui.h" | 30 #include "gui.h" |
32 #include "elhash.h" | 31 #include "elhash.h" |
131 { | 130 { |
132 retval = 1; | 131 retval = 1; |
133 pgui_item->name = val; | 132 pgui_item->name = val; |
134 } | 133 } |
135 } | 134 } |
136 #define FROB(slot) \ | 135 #define FROB(slot) \ |
137 else if (EQ (key, Q_##slot)) \ | 136 else if (EQ (key, Q_##slot)) \ |
138 { \ | 137 { \ |
139 if (!EQ (pgui_item->slot, val)) \ | 138 if (!EQ (pgui_item->slot, val)) \ |
140 { \ | 139 { \ |
141 retval = 1; \ | 140 retval = 1; \ |
142 pgui_item->slot = val; \ | 141 pgui_item->slot = val; \ |
143 } \ | 142 } \ |
144 } | 143 } |
145 FROB (suffix) | 144 FROB (suffix) |
146 FROB (active) | 145 FROB (active) |
147 FROB (included) | 146 FROB (included) |
166 else if (ERRB_EQ (errb, ERROR_ME)) | 165 else if (ERRB_EQ (errb, ERROR_ME)) |
167 invalid_argument ("Bad keyboard accelerator", val); | 166 invalid_argument ("Bad keyboard accelerator", val); |
168 } | 167 } |
169 } | 168 } |
170 else if (ERRB_EQ (errb, ERROR_ME)) | 169 else if (ERRB_EQ (errb, ERROR_ME)) |
171 invalid_argument_2 ("Unknown keyword in gui item", key, | 170 invalid_argument_2 ("Unknown keyword in gui item", key, pgui_item->name); |
172 pgui_item->name); | |
173 return retval; | 171 return retval; |
174 } | 172 } |
175 | 173 |
176 void | 174 void |
177 gui_item_init (Lisp_Object gui_item) | 175 gui_item_init (Lisp_Object gui_item) |
198 { | 196 { |
199 Lisp_Gui_Item *lp = alloc_lcrecord_type (Lisp_Gui_Item, &lrecord_gui_item); | 197 Lisp_Gui_Item *lp = alloc_lcrecord_type (Lisp_Gui_Item, &lrecord_gui_item); |
200 Lisp_Object val; | 198 Lisp_Object val; |
201 | 199 |
202 zero_lcrecord (lp); | 200 zero_lcrecord (lp); |
203 XSETGUI_ITEM (val, lp); | 201 val = wrap_gui_item (lp); |
204 | 202 |
205 gui_item_init (val); | 203 gui_item_init (val); |
206 | 204 |
207 return val; | 205 return val; |
208 } | 206 } |
261 { | 259 { |
262 int i; | 260 int i; |
263 if ((length - start) & 1) | 261 if ((length - start) & 1) |
264 sferror ( | 262 sferror ( |
265 "GUI item descriptor has an odd number of keywords and values", | 263 "GUI item descriptor has an odd number of keywords and values", |
266 item); | 264 item); |
267 | 265 |
268 for (i = start; i < length;) | 266 for (i = start; i < length;) |
269 { | 267 { |
270 Lisp_Object key = contents [i++]; | 268 Lisp_Object key = contents [i++]; |
271 Lisp_Object val = contents [i++]; | 269 Lisp_Object val = contents [i++]; |
330 | 328 |
331 for (i = 0; i < length;) | 329 for (i = 0; i < length;) |
332 { | 330 { |
333 Lisp_Object key = contents [i++]; | 331 Lisp_Object key = contents [i++]; |
334 Lisp_Object val = contents [i++]; | 332 Lisp_Object val = contents [i++]; |
335 if (gui_item_add_keyval_pair (gui_item, key, val, ERROR_ME_NOT)) | 333 if (gui_item_add_keyval_pair (gui_item, key, val, ERROR_ME_DEBUG_WARN)) |
336 retval = 1; | 334 retval = 1; |
337 } | 335 } |
338 return retval; | 336 return retval; |
339 } | 337 } |
340 | 338 |
345 } | 343 } |
346 | 344 |
347 Lisp_Object | 345 Lisp_Object |
348 gui_parse_item_keywords_no_errors (Lisp_Object item) | 346 gui_parse_item_keywords_no_errors (Lisp_Object item) |
349 { | 347 { |
350 return make_gui_item_from_keywords_internal (item, ERROR_ME_NOT); | 348 return make_gui_item_from_keywords_internal (item, ERROR_ME_DEBUG_WARN); |
351 } | 349 } |
352 | 350 |
353 /* convert a gui item into plist properties */ | 351 /* convert a gui item into plist properties */ |
354 void | 352 void |
355 gui_add_item_keywords_to_plist (Lisp_Object plist, Lisp_Object gui_item) | 353 gui_add_item_keywords_to_plist (Lisp_Object plist, Lisp_Object gui_item) |
534 } | 532 } |
535 | 533 |
536 /* See if we can derive keys out of callback symbol */ | 534 /* See if we can derive keys out of callback symbol */ |
537 if (SYMBOLP (pgui_item->callback)) | 535 if (SYMBOLP (pgui_item->callback)) |
538 { | 536 { |
539 char buf2[1024]; /* #### */ | 537 DECLARE_EISTRING_MALLOC (buf); |
540 | 538 Lisp_Object str; |
541 where_is_to_char (pgui_item->callback, buf2); | 539 |
542 return build_string (buf2); | 540 where_is_to_char (pgui_item->callback, buf); |
541 str = eimake_string (buf); | |
542 eifree (buf); | |
543 return str; | |
543 } | 544 } |
544 | 545 |
545 /* No keys - no right flush display */ | 546 /* No keys - no right flush display */ |
546 return Qnil; | 547 return Qnil; |
547 } | 548 } |
649 | 650 |
650 static void | 651 static void |
651 print_gui_item (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag) | 652 print_gui_item (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag) |
652 { | 653 { |
653 Lisp_Gui_Item *g = XGUI_ITEM (obj); | 654 Lisp_Gui_Item *g = XGUI_ITEM (obj); |
654 char buf[20]; | |
655 | 655 |
656 if (print_readably) | 656 if (print_readably) |
657 printing_unreadable_object ("#<gui-item 0x%x>", g->header.uid); | 657 printing_unreadable_object ("#<gui-item 0x%x>", g->header.uid); |
658 | 658 |
659 write_c_string ("#<gui-item ", printcharfun); | 659 write_fmt_string (printcharfun, "#<gui-item 0x%x>", g->header.uid); |
660 sprintf (buf, "0x%x>", g->header.uid); | |
661 write_c_string (buf, printcharfun); | |
662 } | 660 } |
663 | 661 |
664 Lisp_Object | 662 Lisp_Object |
665 copy_gui_item (Lisp_Object gui_item) | 663 copy_gui_item (Lisp_Object gui_item) |
666 { | 664 { |
765 ret = Fcons (ret, parse_gui_item_tree_children (XCDR (list))); | 763 ret = Fcons (ret, parse_gui_item_tree_children (XCDR (list))); |
766 RETURN_UNGCPRO (ret); | 764 RETURN_UNGCPRO (ret); |
767 } | 765 } |
768 | 766 |
769 static void | 767 static void |
770 finalize_gui_item (void* header, int for_disksave) | 768 finalize_gui_item (void *header, int for_disksave) |
771 { | 769 { |
772 } | 770 } |
773 | 771 |
774 DEFINE_LRECORD_IMPLEMENTATION ("gui-item", gui_item, | 772 DEFINE_LRECORD_IMPLEMENTATION ("gui-item", gui_item, |
775 mark_gui_item, print_gui_item, | 773 mark_gui_item, print_gui_item, |
778 0, | 776 0, |
779 Lisp_Gui_Item); | 777 Lisp_Gui_Item); |
780 | 778 |
781 | 779 |
782 DOESNT_RETURN | 780 DOESNT_RETURN |
783 gui_error (const char *reason, Lisp_Object frob) | 781 gui_error (const Char_ASCII *reason, Lisp_Object frob) |
784 { | 782 { |
785 signal_error (Qgui_error, reason, frob); | 783 signal_error (Qgui_error, reason, frob); |
786 } | 784 } |
787 | 785 |
788 DOESNT_RETURN | 786 DOESNT_RETURN |
789 gui_error_2 (const char *reason, Lisp_Object frob0, Lisp_Object frob1) | 787 gui_error_2 (const Char_ASCII *reason, Lisp_Object frob0, Lisp_Object frob1) |
790 { | 788 { |
791 signal_error_2 (Qgui_error, reason, frob0, frob1); | 789 signal_error_2 (Qgui_error, reason, frob0, frob1); |
792 } | 790 } |
793 | 791 |
794 void | 792 void |