Mercurial > hg > xemacs-beta
changeset 4794:8484c6c76837
Merge.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Thu, 31 Dec 2009 15:47:03 +0000 |
parents | 8b50bee3c88c (current diff) 95b04754ea8c (diff) |
children | 084056f46755 |
files | lib-src/yow.c lisp/ChangeLog lisp/cl-macs.el src/ChangeLog src/offix-cursors.h src/offix-types.h src/offix.c src/offix.h |
diffstat | 43 files changed, 556 insertions(+), 1614 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Sat Dec 19 18:10:20 2009 +0000 +++ b/ChangeLog Thu Dec 31 15:47:03 2009 +0000 @@ -1,3 +1,13 @@ +2009-12-21 Jerry James <james@xemacs.org> + + * INSTALL: Remove references to OffiX. + * configure.ac: Remove support for OffiX drag-and-drop. + * configure: Regenerate. + +2009-12-21 Jerry James <james@xemacs.org> + + * INSTALL: Replace reference to yow. + 2009-12-18 Jerry James <james@xemacs.org> * INSTALL: Remove reference to rcs-checkin.
--- a/INSTALL Sat Dec 19 18:10:20 2009 +0000 +++ b/INSTALL Thu Dec 31 15:47:03 2009 +0000 @@ -379,11 +379,6 @@ drop support. `configure' will attempt to detect this option and define `--with-cde' for you. -The `--with-offix' option allows you to enable or disable OffiX drag -and drop support. This requires no external library support, so if -X11 support is available, then this option defaults to `yes'. OffiX -support can be explicitly disabled via the `--with-offix=no' option. - Internationalization Options ---------------------------- @@ -586,7 +581,7 @@ `/usr/local/lib/xemacs/site-lisp/*'. `/usr/local/lib/xemacs-VERSION/etc' holds the XEmacs tutorial, the - `yow' database, and other architecture-independent + Unicode database, and other architecture-independent files XEmacs might need while running. VERSION is as specified for `.../lisp'. @@ -895,7 +890,6 @@ --with-widgets Unchanged --with-dragndrop Unchanged --with-cde Unchanged ---with-offix Unchanged --with-xmu Unchanged --external-widget --with-external-widget
--- a/configure Sat Dec 19 18:10:20 2009 +0000 +++ b/configure Thu Dec 31 15:47:03 2009 +0000 @@ -954,8 +954,6 @@ with_dragndrop enable_cde with_cde -enable_offix -with_offix enable_external_widget with_external_widget enable_tty @@ -1851,15 +1849,10 @@ can be found, else Athena is used. --with-dragndrop Compile in the generic drag and drop API. This is automatically added if one of the drag and drop - protocols is found (currently CDE, OffiX, MSWindows, - and GTK). *WARNING* The Drag'n'drop support is under + protocols is found (currently CDE, MSWindows, and + GTK). *WARNING* The Drag'n'drop support is under development and is considered experimental. --with-cde Compile in support for CDE drag and drop. - --with-offix Compile in support for OffiX drag and drop. - *WARNING* If you compile in OffiX, you may not be - able to use multiple X displays success- fully. If - the two servers are from different vendors, the - results may be unpredictable. --with-external-widget Support XEmacs server for text widgets in other applications. @@ -3539,22 +3532,6 @@ withval="$with_cde" fi; -# If --with-offix or --without-offix were given then copy the value to the -# equivalent enable_offix variable. -if test "${with_offix+set}" = set; then - enable_offix="$with_offix" -fi; -# If -enable-offix or --disable-offix were given then copy the value to the -# equivalent with_offix variable. -if test "${enable_offix+set}" = set; then - with_offix="$enable_offix" -fi; -# Check whether --with-offix or --without-offix was given. -if test "${with_offix+set}" = set; then - enableval="$with_offix" - withval="$with_offix" - -fi; # If --with-external-widget or --without-external-widget were given then copy the value to the # equivalent enable_external-widget variable. if test "${with_external_widget+set}" = set; then @@ -21053,7 +21030,7 @@ fi if test "$with_x11" != "yes"; then - for feature in with_tooltalk with_cde with_offix with_wmcommand with_xim enable_sound_nas + for feature in with_tooltalk with_cde with_wmcommand with_xim enable_sound_nas do if eval "test -n \"\$${feature}\" -a \"\$${feature}\" != \"no\"" ; then { $as_echo "$as_me:$LINENO: WARNING: --$feature ignored: Not valid without X support" >&5 @@ -23384,30 +23361,6 @@ need_motif=yes # CDE requires Motif fi -test "$window_system" != "x11" && with_offix=no -if test "$with_dragndrop" = no; then - if test "$with_offix" = "yes" ; then - { $as_echo "$as_me:$LINENO: WARNING: --with-offix forced to \`no'; no generic Drag'n'Drop support" >&5 -$as_echo "$as_me: WARNING: --with-offix forced to \`no'; no generic Drag'n'Drop support" >&2;} - fi - with_offix=no -fi -if test "$with_cde" = yes; then - if test "$with_offix" = "yes" ; then - { $as_echo "$as_me:$LINENO: WARNING: --with-offix forced to \`no'; CDE already found" >&5 -$as_echo "$as_me: WARNING: --with-offix forced to \`no'; CDE already found" >&2;} - fi - with_offix=no -fi -test -z "$with_offix" && with_offix=no -if test "$with_offix" = "yes"; then - cat >>confdefs.h <<\_ACEOF -#define HAVE_OFFIX_DND 1 -_ACEOF - - dnd_objs="$dnd_objs offix.o" && if test "$verbose" = "yes"; then echo " Appending \"offix.o\" to \$dnd_objs"; fi - dragndrop_proto="$dragndrop_proto OffiX" && if test "$verbose" = "yes"; then echo " Appending \"OffiX\" to \$dragndrop_proto"; fi -fi if test "$with_gtk" = "yes"; then dragndrop_proto="$dragndrop_proto GTK" && if test "$verbose" = "yes"; then echo " Appending \"GTK\" to \$dragndrop_proto"; fi fi
--- a/configure.ac Sat Dec 19 18:10:20 2009 +0000 +++ b/configure.ac Thu Dec 31 15:47:03 2009 +0000 @@ -741,22 +741,13 @@ [], [],[yes,no,lucid,motif,athena,gtk,msw]) XE_MERGED_ARG([dragndrop], AS_HELP_STRING([--with-dragndrop],[Compile in the generic drag and drop API. This is automatically added if one of the drag and drop - protocols is found (currently CDE, OffiX, MSWindows, - and GTK). + protocols is found (currently CDE, MSWindows, and GTK). *WARNING* The Drag'n'drop support is under development and is considered experimental.]), [], []) XE_MERGED_ARG([cde], AS_HELP_STRING([--with-cde],[Compile in support for CDE drag and drop.]), [], []) -XE_MERGED_ARG([offix], - AS_HELP_STRING([--with-offix],[Compile in support for OffiX drag and drop. - *WARNING* If you compile in OffiX, you may not be - able to use multiple X displays success- - fully. If the two servers are from - different vendors, the results may be - unpredictable.]), - [], []) XE_MERGED_ARG([external-widget], AS_HELP_STRING([--enable-external-widget],[Support XEmacs server for text widgets in other applications.]), [], []) @@ -3252,7 +3243,7 @@ dnl if test "$with_tty" = "no" ; then dnl AC_MSG_ERROR([No window system support and no TTY support - Unable to proceed.]) dnl fi - for feature in with_tooltalk with_cde with_offix with_wmcommand with_xim enable_sound_nas + for feature in with_tooltalk with_cde with_wmcommand with_xim enable_sound_nas do if eval "test -n \"\$${feature}\" -a \"\$${feature}\" != \"no\"" ; then AC_MSG_WARN([--$feature ignored: Not valid without X support]) @@ -3488,35 +3479,12 @@ need_motif=yes # CDE requires Motif fi -dnl Always compile OffiX unless --without-offix is given, no -dnl X11 support is compiled in, or dragndrop support is disabled -dnl Because OffiX support currently loses when more than one display -dnl is in use, we now disable it by default -slb 07/10/1998. -test "$window_system" != "x11" && with_offix=no -if test "$with_dragndrop" = no; then - if test "$with_offix" = "yes" ; then - AC_MSG_WARN([--with-offix forced to `no'; no generic Drag'n'Drop support]) - fi - with_offix=no -fi -if test "$with_cde" = yes; then - if test "$with_offix" = "yes" ; then - AC_MSG_WARN([--with-offix forced to `no'; CDE already found]) - fi - with_offix=no -fi -test -z "$with_offix" && with_offix=no -if test "$with_offix" = "yes"; then - AC_DEFINE(HAVE_OFFIX_DND) - XE_APPEND(offix.o, dnd_objs) - XE_APPEND(OffiX, dragndrop_proto) -fi if test "$with_gtk" = "yes"; then XE_APPEND(GTK, dragndrop_proto) fi dnl Autodetect Drag'n'Drop support -dnl always included if CDE, Offix, or MSWindows are defined +dnl always included if CDE or MSWindows is defined if test "$with_dragndrop" != "no" ; then AC_MSG_CHECKING(if drag and drop API is needed) if test -n "$dragndrop_proto" ; then
--- a/lib-src/ChangeLog Sat Dec 19 18:10:20 2009 +0000 +++ b/lib-src/ChangeLog Thu Dec 31 15:47:03 2009 +0000 @@ -1,3 +1,8 @@ +2009-12-21 Jerry James <james@xemacs.org> + + * Makefile.in.in: Remove rules for building yow. + * yow.c: Removed. + 2009-12-18 Jerry James <james@xemacs.org> * Makefile.in.in: Don't install rcs-checkin.
--- a/lib-src/Makefile.in.in Sat Dec 19 18:10:20 2009 +0000 +++ b/lib-src/Makefile.in.in Thu Dec 31 15:47:03 2009 +0000 @@ -118,7 +118,7 @@ fakemail\ #endif profile make-docfile digest-doc\ - sorted-doc movemail cvtmail yow hexl mmencode + sorted-doc movemail cvtmail hexl mmencode GEN_SCRIPTS = rcs2log vcdiff gzip-el.sh PKG_SCRIPTS = add-big-package.sh @@ -363,9 +363,6 @@ fakemail: ${srcdir}/fakemail.c ../src/config.h $(CC) $(cflags) ${srcdir}/fakemail.c $(ldflags) -o $@ -yow: ${srcdir}/yow.c ../src/paths.h - $(CC) $(cflags) ${srcdir}/yow.c $(ldflags) -o $@ - i: ${srcdir}/i.c $(CC) $(cflags) ${srcdir}/i.c $(ldflags) -o $@
--- a/lib-src/yow.c Sat Dec 19 18:10:20 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,176 +0,0 @@ -/* - * yow.c - * - * Print a quotation from Zippy the Pinhead. - * Qux <Kaufman-David@Yale> March 6, 1986 - * - * With dynamic memory allocation. - */ - -/* Synched up with: FSF 19.28. */ - -#include <config.h> - -#include <stdio.h> -#include <ctype.h> -#include <../src/paths.h> /* For PATH_DATA. */ - -#if __STDC__ || defined(STDC_HEADERS) -#include <stdlib.h> -#include <unistd.h> -#include <string.h> -#include <time.h> /* for time() */ -#endif - -#define BUFSIZE 80 -#define SEP '\0' - -#ifndef YOW_FILE -#define YOW_FILE "yow.lines" -#endif - -void yow (FILE *fp); -void setup_yow (FILE *fp); - -#ifdef WIN32_NATIVE -#define rootrelativepath(rel) \ -({\ - static char res[BUFSIZE], *p;\ - strcpy (res, argv[0]);\ - p = res + strlen (res);\ - while (p != res && *p != '/' && *p != '\\' && *p != ':') p--;\ - strcpy (p + 1, "../");\ - strcpy (p + 4, rel);\ - &res;}) -#endif - -int -main (int argc, char *argv[]) -{ - FILE *fp; - char file[BUFSIZ]; - - if (argc > 2 && !strcmp (argv[1], "-f")) - strcpy (file, argv[2]); - else -#ifdef PATH_DATA -#ifdef vms - sprintf (file, "%s%s", PATH_DATA, YOW_FILE); -#else - sprintf (file, "%s/%s", PATH_DATA, YOW_FILE); -#endif -#else /* !PATH_DATA */ - { - fprintf (stderr, - "%s: the location of the \"%s\" file was not supplied at compile-time.\n\ - You must supply it with the -f command-line option.\n", - argv[0], YOW_FILE); - exit (1); - } -#endif - - if ((fp = fopen(file, "r")) == NULL) { - perror(file); - exit(1); - } - - /* initialize random seed */ - srand((int) (getpid() + time((time_t *) 0))); - - setup_yow(fp); - yow(fp); - fclose(fp); - return 0; -} - -static long len = -1; -static long header_len; - -#define AVG_LEN 40 /* average length of a quotation */ - -/* Sets len and header_len */ -void -setup_yow (FILE *fp) -{ - int c; - - /* Get length of file */ - /* Because the header (stuff before the first SEP) can be very long, - * thus biasing our search in favor of the first quotation in the file, - * we explicitly skip that. */ - while ((c = getc(fp)) != SEP) { - if (c == EOF) { - fprintf(stderr, "File contains no separators.\n"); - exit(2); - } - } - header_len = ftell(fp); - if (header_len > AVG_LEN) - header_len -= AVG_LEN; /* allow the first quotation to appear */ - - if (fseek(fp, 0L, 2) == -1) { - perror("fseek 1"); - exit(1); - } - len = ftell(fp) - header_len; -} - - -/* go to a random place in the file and print the quotation there */ -void -yow (FILE *fp) -{ - long offset; - int c, i = 0; - char *buf; - int bufsize; - - offset = rand() % len + header_len; - if (fseek(fp, offset, 0) == -1) { - perror("fseek 2"); - exit(1); - } - - /* Read until SEP, read next line, print it. - (Note that we will never print anything before the first separator.) - If we hit EOF looking for the first SEP, just recurse. */ - while ((c = getc(fp)) != SEP) - if (c == EOF) { - yow(fp); - return; - } - - /* Skip leading whitespace, then read in a quotation. - If we hit EOF before we find a non-whitespace char, recurse. */ - while (isspace(c = getc(fp))) - ; - if (c == EOF) { - yow(fp); - return; - } - - bufsize = BUFSIZE; - buf = (char *) malloc(bufsize); - if (buf == (char *)0) { - fprintf(stderr, "can't allocate any memory\n"); - exit (3); - } - - buf[i++] = c; - while ((c = getc(fp)) != SEP && c != EOF) { - buf[i++] = c; - - if (i == bufsize-1) { - /* Yow! Is this quotation too long yet? */ - bufsize *= 2; - buf = (char *)realloc(buf, bufsize); - if (buf == (char *)0) { - fprintf(stderr, "can't allocate more memory\n"); - exit (3); - } - } - } - buf[i++] = 0; - printf("%s\n", buf); -} -
--- a/lisp/ChangeLog Sat Dec 19 18:10:20 2009 +0000 +++ b/lisp/ChangeLog Thu Dec 31 15:47:03 2009 +0000 @@ -1,7 +1,38 @@ +2009-12-31 Aidan Kehoe <kehoea@parhasard.net> + + * list-mode.el (next-list-mode-item, switch-to-completions): Use + next-single-char-property-change, + previous-single-char-property-change now + next-single-property-change no longer pays attention to extents + not created using the text property functions. Fix for issue 546, + bug dates from changeset 8c96bdabcaf9. + +2009-12-21 Jerry James <james@xemacs.org> + + * dragdrop.el (offix-start-drag): Remove. + (offix-start-drag-region): Remove. + * mouse.el (mouse-begin-drag-n-drop): Remove OffiX support. + +2009-12-21 Adrian Aichner <adrian@xemacs.org> + + * package-get.el (package-get-download-sites): Remove + dk.xemacs.org from list of package download sites. + * package-get.el (package-get-pre-release-download-sites): Ditto. + +2009-12-21 Aidan Kehoe <kehoea@parhasard.net> + + * mule/arabic.el (arabic-iso8859-6): + Move the creation of this character set to this (dumped) file, + since it's needed for input on X11. + * mule/iso-with-esc.el: + Remove arabic-iso8859-6 and its Unicode map from this file. + * unicode.el (load-unicode-tables): + Load arabic-iso8859-6 on startup again. + 2009-12-19 Aidan Kehoe <kehoea@parhasard.net> * cl-macs.el (cl-do-arglist): - * cl-compat.el (keyword-of): + * cl-compat.el (keyword-of): Remove support in our generated code for emacs versions where keywords are not self-quoting. @@ -141,6 +172,19 @@ calls to it. Keep the information about the bytecode's numeric value, we want that for disassembling code. +2009-11-08 Aidan Kehoe <kehoea@parhasard.net> + + * cl-extra.el (cl-string-vector-equalp) + (cl-bit-vector-vector-equalp, cl-vector-array-equalp) + (cl-hash-table-contents-equalp): New functions, to implement + equalp treating arrays with identical contents as equivalent, as + specified by Common Lisp. + (equalp): Revise this function to implement array equivalence, + and the hash-table equalp behaviour specified by CL. + * cl-macs.el (equalp): Add a compiler macro for this function, + used when one of the arguments is constant, and as such, its type + is known at compile time. + 2009-11-01 Aidan Kehoe <kehoea@parhasard.net> * cl-extra.el (equalp):
--- a/lisp/cl-extra.el Sat Dec 19 18:10:20 2009 +0000 +++ b/lisp/cl-extra.el Thu Dec 31 15:47:03 2009 +0000 @@ -89,35 +89,128 @@ ;;; Predicates. +;; I'd actually prefer not to have this inline, the space +;; vs. amount-it's-called trade-off isn't reasonable, but that would +;; introduce bytecode problems with the compiler macro in cl-macs.el. +(defsubst cl-string-vector-equalp (cl-string cl-vector) + "Helper function for `equalp', which see." +; (check-argument-type #'stringp cl-string) +; (check-argument-type #'vector cl-vector) + (let ((cl-i (length cl-string)) + cl-char cl-other) + (when (= cl-i (length cl-vector)) + (while (and (>= (setq cl-i (1- cl-i)) 0) + (or (eq (setq cl-char (aref cl-string cl-i)) + (setq cl-other (aref cl-vector cl-i))) + (and (characterp cl-other) ; Note we want to call this + ; as rarely as possible, it + ; doesn't have a bytecode. + (eq (downcase cl-char) (downcase cl-other)))))) + (< cl-i 0)))) + +;; See comment on cl-string-vector-equalp above. +(defsubst cl-bit-vector-vector-equalp (cl-bit-vector cl-vector) + "Helper function for `equalp', which see." +; (check-argument-type #'bit-vector-p cl-bit-vector) +; (check-argument-type #'vectorp cl-vector) + (let ((cl-i (length cl-bit-vector)) + cl-other) + (when (= cl-i (length cl-vector)) + (while (and (>= (setq cl-i (1- cl-i)) 0) + (numberp (setq cl-other (aref cl-vector cl-i))) + ;; Differs from clisp here. + (= (aref cl-bit-vector cl-i) cl-other))) + (< cl-i 0)))) + +;; These two helper functions call equalp recursively, the two above have no +;; need to. +(defsubst cl-vector-array-equalp (cl-vector cl-array) + "Helper function for `equalp', which see." +; (check-argument-type #'vector cl-vector) +; (check-argument-type #'arrayp cl-array) + (let ((cl-i (length cl-vector))) + (when (= cl-i (length cl-array)) + (while (and (>= (setq cl-i (1- cl-i)) 0) + (equalp (aref cl-vector cl-i) (aref cl-array cl-i)))) + (< cl-i 0)))) + +(defsubst cl-hash-table-contents-equalp (cl-hash-table-1 cl-hash-table-2) + "Helper function for `equalp', which see." + (symbol-macrolet + ;; If someone has gone and fished the uninterned symbol out of this + ;; function's constants vector, and subsequently stored it as a value + ;; in a hash table, it's their own damn fault when + ;; `cl-hash-table-contents-equalp' gives the wrong answer. + ((equalp-default '#:equalp-default)) + (loop + for x-key being the hash-key in cl-hash-table-1 + using (hash-value x-value) + with y-value = nil + always (and (not (eq equalp-default + (setq y-value (gethash x-key cl-hash-table-2 + equalp-default)))) + (equalp y-value x-value))))) + (defun equalp (x y) "Return t if two Lisp objects have similar structures and contents. + This is like `equal', except that it accepts numerically equal -numbers of different types (float vs. integer), and also compares -strings case-insensitively." - (cond ((eq x y) t) +numbers of different types (float, integer, bignum, bigfloat), and also +compares strings and characters case-insensitively. + +Arrays (that is, strings, bit-vectors, and vectors) of the same length and +with contents that are `equalp' are themselves `equalp'. + +Two hash tables are `equalp' if they have the same test (see +`hash-table-test'), if they have the same number of entries, and if, for +each entry in one hash table, its key is equivalent to a key in the other +hash table using the hash table test, and its value is `equalp' to the other +hash table's value for that key." + (cond ((eq x y)) ((stringp x) - ;; XEmacs change: avoid downcase - (and (stringp y) - (eq t (compare-strings x nil nil y nil nil t)))) - ;; XEmacs addition: compare characters - ((characterp x) - (and (characterp y) - (or (char-equal x y) - (char-equal (downcase x) (downcase y))))) + (if (stringp y) + (eq t (compare-strings x nil nil y nil nil t)) + (if (vectorp y) + (cl-string-vector-equalp x y) + ;; bit-vectors and strings are only equalp if they're + ;; zero-length: + (and (equal "" x) (equal #* y))))) ((numberp x) (and (numberp y) (= x y))) ((consp x) (while (and (consp x) (consp y) (equalp (car x) (car y))) (setq x (cdr x) y (cdr y))) (and (not (consp x)) (equalp x y))) - ((vectorp x) - (and (vectorp y) (= (length x) (length y)) - (let ((i (length x))) - (while (and (>= (setq i (1- i)) 0) - (equalp (aref x i) (aref y i)))) - (< i 0)))) - (t (equal x y)))) - + (t + ;; From here on, the type tests don't (yet) have bytecodes. + (let ((x-type (type-of x))) + (cond ((eq 'vector x-type) + (if (stringp y) + (cl-string-vector-equalp y x) + (if (vectorp y) + (cl-vector-array-equalp x y) + (if (bit-vector-p y) + (cl-bit-vector-vector-equalp y x))))) + ((eq 'character x-type) + (and (characterp y) + ;; If the characters are actually identical, the + ;; first eq test will have caught them above; we only + ;; need to check them case-insensitively here. + (eq (downcase x) (downcase y)))) + ((eq 'hash-table x-type) + (and (hash-table-p y) + (eq (hash-table-test x) (hash-table-test y)) + (= (hash-table-count x) (hash-table-count y)) + (cl-hash-table-contents-equalp x y))) + ((eq 'bit-vector x-type) + (if (bit-vector-p y) + (equal x y) + (if (vectorp y) + (cl-bit-vector-vector-equalp x y) + ;; bit-vectors and strings are only equalp if they're + ;; zero-length: + (and (equal "" y) (equal #* x))))) + (t (equal x y))))))) ;;; Control structures.
--- a/lisp/cl-macs.el Sat Dec 19 18:10:20 2009 +0000 +++ b/lisp/cl-macs.el Thu Dec 31 15:47:03 2009 +0000 @@ -3350,6 +3350,117 @@ (regexp-quote string) form)) +(define-compiler-macro equalp (&whole form x y) + "Expand calls to `equalp' where X or Y is a constant expression. + +Much of the processing that `equalp' does is dependent on the types of both +of its arguments, and with type information for one of them, we can +eliminate much of the body of the function at compile time. + +Where both X and Y are constant expressions, `equalp' is evaluated at +compile time by byte-optimize.el--this compiler macro passes FORM through to +the byte optimizer in those cases." + ;; Cases where both arguments are constant are handled in + ;; byte-optimize.el, we only need to handle those cases where one is + ;; constant here. + (let* ((equalp-sym (eval-when-compile (gensym))) + (let-form '(progn)) + (check-bit-vector t) + (check-string t) + (original-y y) + equalp-temp checked) + (macrolet + ((unordered-check (check) + `(prog1 + (setq checked + (or ,check + (prog1 ,(sublis '((x . y) (y . x)) check :test #'eq) + (setq equalp-temp x x y y equalp-temp)))) + (when checked + (unless (symbolp y) + (setq let-form `(let ((,equalp-sym ,y))) y equalp-sym)))))) + ;; In the bodies of the below clauses, x is always a constant expression + ;; of the type we're interested in, and y is always a symbol that refers + ;; to the result non-constant side of the comparison. + (cond ((unordered-check (and (arrayp x) (not (cl-const-expr-p y)))) + ;; Strings and other arrays. A vector containing the same + ;; character elements as a given string is equalp to that string; + ;; a bit-vector can only be equalp to a string if both are + ;; zero-length. + (cond + ((member x '("" #* [])) + ;; No need to protect against multiple evaluation here: + `(and (member ,original-y '("" #* [])) t)) + ((stringp x) + `(,@let-form + (if (stringp ,y) + (eq t (compare-strings ,x nil nil + ,y nil nil t)) + (if (vectorp ,y) + (cl-string-vector-equalp ,x ,y))))) + ((bit-vector-p x) + `(,@let-form + (if (bit-vector-p ,y) + ;; No need to call equalp on each element here: + (equal ,x ,y) + (if (vectorp ,y) + (cl-bit-vector-vector-equalp ,x ,y))))) + (t + (loop + for elt across x + ;; We may not need to check the other argument if it's a + ;; string or bit vector, depending on the contents of x: + always (progn + (unless (characterp elt) (setq check-string nil)) + (unless (and (numberp elt) (or (= elt 0) (= elt 1))) + (setq check-bit-vector nil)) + (or check-string check-bit-vector))) + `(,@let-form + (cond + ,@(if check-string + `(((stringp ,y) + (cl-string-vector-equalp ,y ,x)))) + ,@(if check-bit-vector + `(((bit-vector-p ,y) + (cl-bit-vector-vector-equalp ,y ,x)))) + ((vectorp ,y) + (cl-vector-array-equalp ,x ,y))))))) + ((unordered-check (and (characterp x) (not (cl-const-expr-p y)))) + `(,@let-form + (or (eq ,x ,y) + ;; eq has a bytecode, char-equal doesn't. + (and (characterp ,y) + (eq (downcase ,x) (downcase ,y)))))) + ((unordered-check (and (numberp x) (not (cl-const-expr-p y)))) + `(,@let-form + (and (numberp ,y) + (= ,x ,y)))) + ((unordered-check (and (hash-table-p x) (not (cl-const-expr-p y)))) + ;; Hash tables; follow the CL spec. + `(,@let-form + (and (hash-table-p ,y) + (eq ',(hash-table-test x) (hash-table-test ,y)) + (= ,(hash-table-count x) (hash-table-count ,y)) + (cl-hash-table-contents-equalp ,x ,y)))) + ((unordered-check + ;; Symbols; eq. + (and (not (cl-const-expr-p y)) + (or (memq x '(nil t)) + (and (eq (car-safe x) 'quote) (symbolp (second x)))))) + (cons 'eq (cdr form))) + ((unordered-check + ;; Compare conses at runtime, there's no real upside to + ;; unrolling the function -> they fall through to the next + ;; clause in this function. + (and (cl-const-expr-p x) (not (consp x)) + (not (cl-const-expr-p y)))) + ;; All other types; use equal. + (cons 'equal (cdr form))) + ;; Neither side is a constant expression, do all our evaluation at + ;; runtime (or both are, and equalp will be called from + ;; byte-optimize.el). + (t form))))) + (mapc #'(lambda (y) (put (car y) 'side-effect-free t)
--- a/lisp/dragdrop.el Sat Dec 19 18:10:20 2009 +0000 +++ b/lisp/dragdrop.el Thu Dec 31 15:47:03 2009 +0000 @@ -400,29 +400,6 @@ event nil (list (buffer-substring-no-properties begin end))) (error "CDE functionality not compiled in."))) -;; the OffiX drag stuff will soon move also (perhaps mouse.el) -;; if the drag event is done -(defun offix-start-drag (event data &optional type) - "Implement the OffiX drag operation. -Calls the internal function offix-start-drag-internal to do the actual work. -If type is not given, DndText is assumed." - ;; Oliver Graf <ograf@fga.de> - (interactive "esi") - (if (featurep 'offix) - (funcall (intern "offix-start-drag-internal") event data type) - (error "OffiX functionality not compiled in."))) - -(defun offix-start-drag-region (event begin end) - "Implement the OffiX drag operation for a region. -Calls the internal function offix-start-drag-internal to do the actual work. -This always assumes DndText as type." - ;; Oliver Graf <ograf@fga.de> - (interactive "_er") - (if (featurep 'offix) - (funcall (intern "offix-start-drag-internal") - event (buffer-substring-no-properties begin end)) - (error "OffiX functionality not compiled in."))) - (defun gtk-start-drag (event data &optional type) (interactive "esi") (if (featurep 'gtk)
--- a/lisp/list-mode.el Sat Dec 19 18:10:20 2009 +0000 +++ b/lisp/list-mode.el Thu Dec 31 15:47:03 2009 +0000 @@ -174,8 +174,9 @@ (if extent (goto-char (extent-end-position extent))) ;; Move to start of next one. (or (extent-at (point) (current-buffer) 'list-mode-item) - (goto-char (next-single-property-change (point) 'list-mode-item - nil end)))) + (goto-char (next-single-char-property-change (point) + 'list-mode-item + nil end)))) (setq n (1- n))) (while (and (< n 0) (not (bobp))) (let ((extent (extent-at (point) (current-buffer) 'list-mode-item)) @@ -186,7 +187,7 @@ (if (setq extent (extent-at (point) (current-buffer) 'list-mode-item nil 'before)) (goto-char (extent-start-position extent)) - (goto-char (previous-single-property-change + (goto-char (previous-single-char-property-change (point) 'list-mode-item nil end)) (if (setq extent (extent-at (point) (current-buffer) 'list-mode-item nil 'before)) @@ -648,7 +649,7 @@ (if (not (get-buffer-window "*Completions*")) nil (select-window (get-buffer-window "*Completions*")) - (goto-char (next-single-property-change (point-min) 'list-mode-item nil - (point-max))))) + (goto-char (next-single-char-property-change (point-min) 'list-mode-item + nil (point-max))))) ;;; list-mode.el ends here
--- a/lisp/mouse.el Sat Dec 19 18:10:20 2009 +0000 +++ b/lisp/mouse.el Thu Dec 31 15:47:03 2009 +0000 @@ -231,15 +231,7 @@ Returns whether a drag was begun." ;; #### barely implemented. (when (click-inside-selection-p event) - (cond ((featurep 'offix) - (declare-fboundp - (offix-start-drag-region - event - (extent-start-position zmacs-region-extent) - (extent-end-position zmacs-region-extent))) - t) - ((featurep 'cde) - ;; should also work with CDE + (cond ((featurep 'cde) (declare-fboundp (cde-start-drag-region event (extent-start-position zmacs-region-extent)
--- a/lisp/mule/arabic.el Sat Dec 19 18:10:20 2009 +0000 +++ b/lisp/mule/arabic.el Thu Dec 31 15:47:03 2009 +0000 @@ -28,8 +28,34 @@ ;;; Code: -;; See iso-with-esc.el for commentary on the ISO standard Arabic character -;; set. +;; ISO 8859-6 is such a useless character set that it seems a waste of +;; codespace to dump it. Let me count the ways: +;; +;; 1. It doesn't support Persian or Urdu, let alone Sinhalese, despite +;; plenty of unallocated code points. +;; +;; 2. It doesn't encode all the vowel diacritics (the Harakaat) despite that +;; they are necessary, even for the Arabs, for basic things like +;; dictionary entries, children's books, and occasional disambiguation. +;; +;; 3. The Arabs don't use it, they use Windows-1256, which also supports +;; Persian, at least, as well as the French characters necessary in +;; Lebanon and North Africa. + +;; But; it's necessary for input on X11. + +(make-charset + 'arabic-iso8859-6 + "Right-Hand Part of Latin/Arabic Alphabet (ISO/IEC 8859-6): ISO-IR-127" + '(dimension 1 + registry "ISO8859-6" + chars 96 + columns 1 + direction r2l + final ?G + graphic 1 + short-name "RHP of ISO8859/6" + long-name "RHP of Arabic (ISO 8859-6): ISO-IR-127")) (make-coding-system 'iso-8859-6 'fixed-width "ISO 8859-6 (Arabic)"
--- a/lisp/mule/iso-with-esc.el Sat Dec 19 18:10:20 2009 +0000 +++ b/lisp/mule/iso-with-esc.el Thu Dec 31 15:47:03 2009 +0000 @@ -120,89 +120,6 @@ safe-charsets (ascii greek-iso8859-7) mnemonic "Grk")) -;; ISO 8859-6 is such a useless character set that it seems a waste of -;; codespace to dump it. Let me count the ways: -;; -;; 1. It doesn't support Persian or Urdu, let alone Sinhalese, despite -;; plenty of unallocated code points. -;; -;; 2. It doesn't encode all the vowel diacritics (the Harakaat) despite that -;; they are necessary, even for the Arabs, for basic things like -;; dictionary entries, children's books, and occasional disambiguation. -;; -;; 3. The Arabs don't use it, they use Windows-1256, which also supports -;; Persian, at least, as well as the French characters necessary in -;; Lebanon and North Africa. - -(make-charset - 'arabic-iso8859-6 - "Right-Hand Part of Latin/Arabic Alphabet (ISO/IEC 8859-6): ISO-IR-127" - '(dimension 1 - registry "ISO8859-6" - chars 96 - columns 1 - direction r2l - final ?G - graphic 1 - short-name "RHP of ISO8859/6" - long-name "RHP of Arabic (ISO 8859-6): ISO-IR-127")) - -(loop - for (iso8859-6 unicode) - in '((#xA0 #x00A0) ;; NO-BREAK SPACE - (#xA4 #x00A4) ;; CURRENCY SIGN - (#xAC #x060C) ;; ARABIC COMMA - (#xAD #x00AD) ;; SOFT HYPHEN - (#xBB #x061B) ;; ARABIC SEMICOLON - (#xBF #x061F) ;; ARABIC QUESTION MARK - (#xC1 #x0621) ;; ARABIC LETTER HAMZA - (#xC2 #x0622) ;; ARABIC LETTER ALEF WITH MADDA ABOVE - (#xC3 #x0623) ;; ARABIC LETTER ALEF WITH HAMZA ABOVE - (#xC4 #x0624) ;; ARABIC LETTER WAW WITH HAMZA ABOVE - (#xC5 #x0625) ;; ARABIC LETTER ALEF WITH HAMZA BELOW - (#xC6 #x0626) ;; ARABIC LETTER YEH WITH HAMZA ABOVE - (#xC7 #x0627) ;; ARABIC LETTER ALEF - (#xC8 #x0628) ;; ARABIC LETTER BEH - (#xC9 #x0629) ;; ARABIC LETTER TEH MARBUTA - (#xCA #x062A) ;; ARABIC LETTER TEH - (#xCB #x062B) ;; ARABIC LETTER THEH - (#xCC #x062C) ;; ARABIC LETTER JEEM - (#xCD #x062D) ;; ARABIC LETTER HAH - (#xCE #x062E) ;; ARABIC LETTER KHAH - (#xCF #x062F) ;; ARABIC LETTER DAL - (#xD0 #x0630) ;; ARABIC LETTER THAL - (#xD1 #x0631) ;; ARABIC LETTER REH - (#xD2 #x0632) ;; ARABIC LETTER ZAIN - (#xD3 #x0633) ;; ARABIC LETTER SEEN - (#xD4 #x0634) ;; ARABIC LETTER SHEEN - (#xD5 #x0635) ;; ARABIC LETTER SAD - (#xD6 #x0636) ;; ARABIC LETTER DAD - (#xD7 #x0637) ;; ARABIC LETTER TAH - (#xD8 #x0638) ;; ARABIC LETTER ZAH - (#xD9 #x0639) ;; ARABIC LETTER AIN - (#xDA #x063A) ;; ARABIC LETTER GHAIN - (#xE0 #x0640) ;; ARABIC TATWEEL - (#xE1 #x0641) ;; ARABIC LETTER FEH - (#xE2 #x0642) ;; ARABIC LETTER QAF - (#xE3 #x0643) ;; ARABIC LETTER KAF - (#xE4 #x0644) ;; ARABIC LETTER LAM - (#xE5 #x0645) ;; ARABIC LETTER MEEM - (#xE6 #x0646) ;; ARABIC LETTER NOON - (#xE7 #x0647) ;; ARABIC LETTER HEH - (#xE8 #x0648) ;; ARABIC LETTER WAW - (#xE9 #x0649) ;; ARABIC LETTER ALEF MAKSURA - (#xEA #x064A) ;; ARABIC LETTER YEH - (#xEB #x064B) ;; ARABIC FATHATAN - (#xEC #x064C) ;; ARABIC DAMMATAN - (#xED #x064D) ;; ARABIC KASRATAN - (#xEE #x064E) ;; ARABIC FATHA - (#xEF #x064F) ;; ARABIC DAMMA - (#xF0 #x0650) ;; ARABIC KASRA - (#xF1 #x0651) ;; ARABIC SHADDA - (#xF2 #x0652));; ARABIC SUKUN - do (set-unicode-conversion (make-char 'arabic-iso8859-6 iso8859-6) - unicode)) - ;;;###autoload (make-coding-system 'arabic-iso-8bit-with-esc 'iso2022 ;; GNU's iso-8859-6 is
--- a/lisp/package-get.el Sat Dec 19 18:10:20 2009 +0000 +++ b/lisp/package-get.el Thu Dec 31 15:47:03 2009 +0000 @@ -227,7 +227,6 @@ ; ("Chile (cl.xemacs.org)" "ftp.cl.xemacs.org" "packages") ("China (ftp.cn.xemacs.org)" "ftp.cn.xemacs.org" "pub/xemacs/packages") ("Czech Republic (cz.xemacs.org)" "ftp.cz.xemacs.org" "MIRRORS/ftp.xemacs.org/pub/xemacs/packages") - ("Denmark (dk.xemacs.org)" "ftp.dk.xemacs.org" "xemacs/packages") ("Finland (fi.xemacs.org)" "ftp.fi.xemacs.org" "pub/mirrors/ftp.xemacs.org/pub/tux/xemacs/packages") ("France (fr.xemacs.org)" "ftp.fr.xemacs.org" "pub/xemacs/packages") ("France (mirror.cict.fr)" "mirror.cict.fr" "xemacs/packages") @@ -302,8 +301,6 @@ "pub/xemacs/beta/experimental/packages") ("Czech Republic Pre-Releases (cz.xemacs.org)" "ftp.cz.xemacs.org" "MIRRORS/ftp.xemacs.org/pub/xemacs/xemacs-21.5/experimental/packages") - ("Denmark Pre-Releases (dk.xemacs.org)" "ftp.dk.xemacs.org" - "xemacs/beta/experimental/packages") ("Finland Pre-Releases (fi.xemacs.org)" "ftp.fi.xemacs.org" "pub/mirrors/ftp.xemacs.org/pub/tux/xemacs/beta/experimental/packages") ("France Pre-Releases (fr.xemacs.org)" "ftp.fr.xemacs.org"
--- a/lisp/unicode.el Sat Dec 19 18:10:20 2009 +0000 +++ b/lisp/unicode.el Thu Dec 31 15:47:03 2009 +0000 @@ -73,6 +73,7 @@ ("8859-3.TXT" latin-iso8859-3 #xA0 #xFF #x-80) ("8859-4.TXT" latin-iso8859-4 #xA0 #xFF #x-80) ("8859-5.TXT" cyrillic-iso8859-5 #xA0 #xFF #x-80) + ("8859-6.TXT" arabic-iso8859-6 #xA0 #xFF #x-80) ("8859-7.TXT" greek-iso8859-7 #xA0 #xFF #x-80) ("8859-8.TXT" hebrew-iso8859-8 #xA0 #xFF #x-80) ("8859-9.TXT" latin-iso8859-9 #xA0 #xFF #x-80)
--- a/man/ChangeLog Sat Dec 19 18:10:20 2009 +0000 +++ b/man/ChangeLog Thu Dec 31 15:47:03 2009 +0000 @@ -1,3 +1,11 @@ +2009-12-21 Jerry James <james@xemacs.rg> + + * internals/internals.texi (A Summary of the Various XEmacs Modules): + Remove references to OffiX support files. + * lispref/dragndrop.texi (Drag and Drop): Remove reference to OffiX. + (Supported Protocols): Ditto. + (OffiX DND): Remove. + 2009-12-10 Jerry James <james@xemacs.org> * lispref/processes.texi (Functions that Create Subprocesses): Refer @@ -25,6 +33,11 @@ * xemacs-faq.texi (Q1.2.2: What versions of Unix does XEmacs run on?): Ditto. +2009-11-08 Aidan Kehoe <kehoea@parhasard.net> + + * lispref/objects.texi (Equality Predicates): + Document #'equalp here, as well as #'equal and #'eq. + 2009-10-05 Jerry James <james@xemacs.org> * beta.texi (Building XEmacs from a full distribution): Remove
--- a/man/internals/internals.texi Sat Dec 19 18:10:20 2009 +0000 +++ b/man/internals/internals.texi Thu Dec 31 15:47:03 2009 +0000 @@ -3107,10 +3107,6 @@ @item @file{objects-x.h} @tab @ref{Modules for other Display-Related Lisp Objects}. @item @file{objects.c} @tab @ref{Modules for other Display-Related Lisp Objects}. @item @file{objects.h} @tab @ref{Modules for other Display-Related Lisp Objects}. -@item @file{offix-cursors.h} @tab -@item @file{offix-types.h} @tab -@item @file{offix.c} @tab -@item @file{offix.h} @tab @item @file{opaque.c} @tab @ref{Modules for Other Aspects of the Lisp Interpreter and Object System}. @item @file{opaque.h} @tab @ref{Modules for Other Aspects of the Lisp Interpreter and Object System}. @item @file{paths.h.in} @tab
--- a/man/lispref/dragndrop.texi Sat Dec 19 18:10:20 2009 +0000 +++ b/man/lispref/dragndrop.texi Thu Dec 31 15:47:03 2009 +0000 @@ -12,9 +12,9 @@ interface may change! The current implementation is considered experimental. Drag'n'drop is a way to transfer information between multiple applications. -To do this several GUIs define their own protocols. Examples are OffiX, CDE, -Motif, KDE, MSWindows, GNOME, and many more. To catch all these protocols, -XEmacs provides a generic API. +To do this several GUIs define their own protocols. Examples are CDE, Motif, +KDE, MSWindows, GNOME, and many more. To catch all these protocols, XEmacs +provides a generic API. One prime idea behind the API is to use a data interface that is transparent for all systems. The author thinks that this is best @@ -35,36 +35,11 @@ protocols. Some of these only support limited options available in the API. @menu -* OffiX DND:: A generic X based protocol. * CDE dt:: Common Desktop Environment used on suns. * MSWindows OLE:: Mr. Gates way of live. * Loose ends:: The other protocols. @end menu -@node OffiX DND -@subsection OffiX DND -@cindex OffiX DND - -@emph{WARNING}: If you compile in OffiX, you may not be able to use -multiple X displays successfully. If the two servers are from -different vendors, the results may be unpredictable. - -The OffiX Drag'n'Drop protocol is part of a X API/Widget library created by -Cesar Crusius. It is based on X-Atoms and ClientMessage events, and works with -any X platform supporting them. - -OffiX is supported if 'offix is member of the variable dragdrop-protocols, or -the feature 'offix is defined. - -Unfortunately it uses it's own data types. Examples are: File, Files, -Exe, Link, URL, MIME. The API tries to choose the right type for the data that -is dragged from XEmacs (well, not yet...). - -XEmacs supports both MIME and URL drags and drops using this API. No application -interaction is possible while dragging is in progress. - -For information about the OffiX project have a look at http://leb.net/~offix/ - @node CDE dt @subsection CDE dt @cindex CDE dt @@ -90,7 +65,7 @@ @subsection Loose ends The following protocols will be supported soon: Xdnd, Motif, Xde (if I -get some specs), KDE OffiX (if KDE can find XEmacs windows). +get some specs). In particular Xdnd will be one of the protocols that can benefit from the XEmacs API, cause it also uses MIME types to encode dragged data.
--- a/man/lispref/objects.texi Sat Dec 19 18:10:20 2009 +0000 +++ b/man/lispref/objects.texi Thu Dec 31 15:47:03 2009 +0000 @@ -2424,3 +2424,56 @@ The test for equality is implemented recursively, and circular lists may therefore cause infinite recursion (leading to an error). + +@defun equalp object1 object2 +This function is like @code{equal}, but compares characters and strings +case-insensitively; numbers are compared using @code{=}; arrays (that +is, strings, bit-vectors and vectors) are regarded as being +@code{equalp} if their contents are @code{equalp}; and +@code{hash-tables} are @code{equalp} if their values are @code{equalp} +and they would otherwise be @code{equal}. + +@code{equalp} is recursive with vectors, lists and hash-tables, but not +with other complex types. For types without a defined @code{equalp} +behavior, @code{equalp} behaves as @code{equal} does. + +@example +@group +(equalp "asdf" "ASDF") + @result{} t +@end group +@group +(equalp "asdf" [?a ?s ?D ?F]) + @result{} t +@end group +@group +(equalp "asdf" [?a ?s ?D ?F ?g]) + @result{} nil +@end group +@group +(equalp "" (bit-vector)) + @result{} t +@end group +@group +(equalp #s(hash-table) (make-hash-table)) + @result{} t +@end group +@group +(equalp #s(hash-table data (t "hi there")) + (let ((ht (make-hash-table))) + (puthash t "HI THERE" ht) + ht)) + @result{} t +@group +@end group +(equalp #s(hash-table test eq data (1.0 "hi there")) + (let ((ht (make-hash-table :test 'eql))) + (puthash 1.0 "HI THERE" ht) + ht)) + @result{} nil +@end group +@end example +@end defun + +@code{equalp} can also provoke an error if handed a circular structure, +as with @code{equal}.
--- a/nt/ChangeLog Sat Dec 19 18:10:20 2009 +0000 +++ b/nt/ChangeLog Thu Dec 31 15:47:03 2009 +0000 @@ -1,3 +1,7 @@ +2009-12-21 Jerry James <james@xemacs.org> + + * xemacs.dsp: Remove references to OffiX files. + 2009-12-15 Jerry James <james@xemacs.org> * xemacs.mak: Remove build dependency for lib-src/wakeup. Thanks to
--- a/nt/xemacs.dsp Sat Dec 19 18:10:20 2009 +0000 +++ b/nt/xemacs.dsp Thu Dec 31 15:47:03 2009 +0000 @@ -919,22 +919,6 @@ # End Source File # Begin Source File -SOURCE="..\src\offix-cursors.h" -# End Source File -# Begin Source File - -SOURCE="..\src\offix-types.h" -# End Source File -# Begin Source File - -SOURCE=..\src\offix.c -# End Source File -# Begin Source File - -SOURCE=..\src\offix.h -# End Source File -# Begin Source File - SOURCE=..\src\opaque.c # End Source File # Begin Source File
--- a/src/ChangeLog Sat Dec 19 18:10:20 2009 +0000 +++ b/src/ChangeLog Thu Dec 31 15:47:03 2009 +0000 @@ -1,8 +1,36 @@ +2009-12-21 Jerry James <james@xemacs.org> + + * config.h.in: Remove OffiX support. + * device-x.c: Ditto. + * dragdrop.c: Ditto. + (vars_of_dragrop): Ditto + * event-Xt.c: Ditto. + (x_event_to_emacs_event): Ditto. + * frame.c (vars_of_frame): Ditto + * frame-x.c: Ditto. + (Foffix_start_drag_internal): Remove. + (syms_of_frame_x): Remove OffiX support.. + * Makefile.in.in: Ditto. + * event-gtk.c: Don't include OffiX headers. + * offix.c: Remove. + * offic.h: Remove. + * offix-cursors.h: Remove. + * offix-types.h: Remove. + * text.h (Qoffix_dnd_encoding): Remove, twice. + * depend: Regenerate. + +2009-11-27 Adrian Aichner <adrian@xemacs.org> + + * nt.c (mswindows_getdcwd): Check first whether drive is valid + with _getdrives() to avoid crash in _wgetdcwd(...) when linking + against msvcrt8. This fix was taken from the Mozilla project + which experienced the same problem. + 2009-12-19 Aidan Kehoe <kehoea@parhasard.net> * symbols.c (reject_constant_symbols): Indicate that accepting attempted modification of keywords is a - temporary thing. + temporary thing. 2009-12-18 Jerry James <james@xemacs.org>
--- a/src/Makefile.in.in Sat Dec 19 18:10:20 2009 +0000 +++ b/src/Makefile.in.in Thu Dec 31 15:47:03 2009 +0000 @@ -353,9 +353,9 @@ # endif /* EXTERNAL_WIDGET */ -# if defined (HAVE_OFFIX_DND) || defined (HAVE_CDE) +# if defined (HAVE_CDE) dnd_objs = @dnd_objs@ -# endif /* HAVE_OFFIX_DND || HAVE_CDE */ +# endif /* HAVE_CDE */ X11_objs = EmacsFrame.o EmacsShell.o TopLevelEmacsShell.o TransientEmacsShell.o EmacsManager.o $(external_widget_objs) $(dnd_objs) #endif /* HAVE_X_WINDOWS */
--- a/src/config.h.in Sat Dec 19 18:10:20 2009 +0000 +++ b/src/config.h.in Thu Dec 31 15:47:03 2009 +0000 @@ -659,9 +659,6 @@ Requires libDtSvc, which typically must be present at runtime. */ #undef HAVE_CDE -/* Compile in support for OffiX Drag and Drop? */ -#undef HAVE_OFFIX_DND - /* Compile in generic Drag'n'Drop API */ #undef HAVE_DRAGNDROP
--- a/src/depend Sat Dec 19 18:10:20 2009 +0000 +++ b/src/depend Thu Dec 31 15:47:03 2009 +0000 @@ -42,9 +42,9 @@ balloon-x.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h balloon_help.h compiler.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h dumper.h gc.h general-slots.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h specifier.h symeval.h symsinit.h text.h vdb.h xintrinsic.h balloon_help.o: $(CONFIG_H) balloon_help.h compiler.h xintrinsic.h console-x.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h charset.h chartab.h compiler.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h dumper.h elhash.h gc.h general-slots.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h process.h redisplay.h specifier.h symeval.h symsinit.h text.h vdb.h xintrinsic.h -device-x.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h charset.h chartab.h coding-system-slots.h compiler.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h dumper.h elhash.h events.h faces.h file-coding.h frame-impl.h frame.h frameslots.h gc.h general-slots.h glyphs-x.h glyphs.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h objects-x.h objects.h offix-types.h offix.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysdll.h sysfile.h systime.h text.h vdb.h window-impl.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h +device-x.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h charset.h chartab.h coding-system-slots.h compiler.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h dumper.h elhash.h events.h faces.h file-coding.h frame-impl.h frame.h frameslots.h gc.h general-slots.h glyphs-x.h glyphs.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h objects-x.h objects.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysdll.h sysfile.h systime.h text.h vdb.h window-impl.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h dialog-x.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h casetab.h charset.h chartab.h commands.h compiler.h conslots.h console-impl.h console-x-impl.h console-x.h console.h dumper.h events.h frame-impl.h frame.h frameslots.h gc.h general-slots.h gui.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h text.h vdb.h window.h xintrinsic.h -frame-x.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h EmacsShell.h ExternalShell.h buffer.h bufslots.h casetab.h charset.h chartab.h compiler.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h dragdrop.h dumper.h events.h extents.h faces.h frame-impl.h frame.h frameslots.h gc.h general-slots.h glyphs-x.h glyphs.h gutter.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h objects-impl.h objects-x-impl.h objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar-x.h scrollbar.h specifier.h symeval.h symsinit.h systime.h text.h vdb.h window-impl.h window.h winslots.h xintrinsic.h xintrinsicp.h xmotif.h xmprimitivep.h +frame-x.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h EmacsShell.h ExternalShell.h buffer.h bufslots.h casetab.h charset.h chartab.h compiler.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h dragdrop.h dumper.h events.h extents.h faces.h frame-impl.h frame.h frameslots.h gc.h general-slots.h glyphs-x.h glyphs.h gutter.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h objects-impl.h objects-x-impl.h objects-x.h objects.h redisplay.h scrollbar-x.h scrollbar.h specifier.h symeval.h symsinit.h systime.h text.h vdb.h window-impl.h window.h winslots.h xintrinsic.h xintrinsicp.h xmotif.h xmprimitivep.h glyphs-x.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h bitmaps.h buffer.h bufslots.h casetab.h charset.h chartab.h coding-system-slots.h compiler.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h dumper.h faces.h file-coding.h frame-impl.h frame.h frameslots.h gc.h general-slots.h glyphs-x.h glyphs.h gui.h imgproc.h insdel.h lisp-disunion.h lisp-union.h lisp.h lrecord.h lstream.h mc-alloc.h number-gmp.h number-mp.h number.h objects-impl.h objects-x-impl.h objects-x.h objects.h opaque.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h sysproc.h syssignal.h systime.h text.h vdb.h window-impl.h window.h winslots.h xintrinsic.h xmotif.h gui-x.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h charset.h chartab.h compiler.h conslots.h console-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h dumper.h events.h frame.h gc.h general-slots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h menubar.h number-gmp.h number-mp.h number.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h text.h vdb.h window-impl.h window.h winslots.h xintrinsic.h xmotif.h intl-x.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h compiler.h console-x.h console.h dumper.h gc.h general-slots.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h symeval.h symsinit.h text.h vdb.h xintrinsic.h @@ -70,7 +70,7 @@ dialog-gtk.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h commands.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h dumper.h events.h frame.h gc.h general-slots.h gui.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h text.h vdb.h window.h emacs-marshals.o: hash.h emacs-widget-accessors.o: -event-gtk.o: $(CONFIG_H) $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h charset.h chartab.h coding-system-slots.h commands.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console-tty.h console.h device-impl.h device.h devslots.h dragdrop.h dumper.h elhash.h event-gtk.h event-xlike-inc.c events.h file-coding.h frame-impl.h frame.h frameslots.h gc.h general-slots.h gtk-xemacs.h gui.h lisp-disunion.h lisp-union.h lisp.h lrecord.h lstream.h mc-alloc.h menubar.h number-gmp.h number-mp.h number.h objects-gtk.h objects.h offix-types.h offix.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysproc.h syssignal.h systime.h systty.h text.h vdb.h window.h xintrinsic.h +event-gtk.o: $(CONFIG_H) $(LISP_H) blocktype.h buffer.h bufslots.h casetab.h charset.h chartab.h coding-system-slots.h commands.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console-tty.h console.h device-impl.h device.h devslots.h dragdrop.h dumper.h elhash.h event-gtk.h event-xlike-inc.c events.h file-coding.h frame-impl.h frame.h frameslots.h gc.h general-slots.h gtk-xemacs.h gui.h lisp-disunion.h lisp-union.h lisp.h lrecord.h lstream.h mc-alloc.h menubar.h number-gmp.h number-mp.h number.h objects-gtk.h objects.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysproc.h syssignal.h systime.h systty.h text.h vdb.h window.h frame-gtk.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h compiler.h conslots.h console-gtk-impl.h console-gtk.h console-impl.h console.h device-impl.h device.h devslots.h dragdrop.h dumper.h elhash.h events.h extents.h faces.h frame-impl.h frame.h frameslots.h gc.h general-slots.h glyphs-gtk.h glyphs.h gtk-xemacs.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h objects-gtk-impl.h objects-gtk.h objects-impl.h objects.h redisplay.h scrollbar-gtk.h scrollbar.h specifier.h symeval.h symsinit.h sysdll.h systime.h text.h ui-gtk.h vdb.h window-impl.h window.h winslots.h gccache-gtk.o: $(CONFIG_H) $(LISP_H) compiler.h dumper.h gc.h gccache-gtk.h general-slots.h hash.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h symeval.h symsinit.h text.h vdb.h glade.o: bytecode.h @@ -138,7 +138,7 @@ emodules.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h coding-system-slots.h compiler.h console.h dumper.h emodules.h file-coding.h frame.h gc.h general-slots.h insdel.h lisp-disunion.h lisp-union.h lisp.h lrecord.h lstream.h mc-alloc.h number-gmp.h number-mp.h number.h redisplay.h scrollbar.h symeval.h symsinit.h sysdep.h sysdll.h text.h vdb.h window.h esd.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h compiler.h dumper.h gc.h general-slots.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h miscplay.h number-gmp.h number-mp.h number.h sound.h symeval.h symsinit.h sysfile.h text.h vdb.h eval.o: $(CONFIG_H) $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h commands.h compiler.h conslots.h console-impl.h console.h device.h dumper.h frame.h gc.h general-slots.h lisp-disunion.h lisp-union.h lisp.h lrecord.h lstream.h mc-alloc.h number-gmp.h number-mp.h number.h opaque.h profile.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h text.h vdb.h window.h -event-Xt.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h Emacs.ad.h EmacsFrame.h blocktype.h charset.h coding-system-slots.h compiler.h conslots.h console-impl.h console-tty.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h dragdrop.h dumper.h elhash.h event-xlike-inc.c events.h file-coding.h frame-impl.h frame.h frameslots.h gc.h general-slots.h glyphs.h lisp-disunion.h lisp-union.h lisp.h lrecord.h lstream.h mc-alloc.h number-gmp.h number-mp.h number.h objects-x.h objects.h offix-types.h offix.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysproc.h syssignal.h systime.h systty.h text.h vdb.h window-impl.h window.h winslots.h xintrinsic.h xintrinsicp.h xmotif.h +event-Xt.o: $(CONFIG_H) $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h Emacs.ad.h EmacsFrame.h blocktype.h charset.h coding-system-slots.h compiler.h conslots.h console-impl.h console-tty.h console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h dragdrop.h dumper.h elhash.h event-xlike-inc.c events.h file-coding.h frame-impl.h frame.h frameslots.h gc.h general-slots.h glyphs.h lisp-disunion.h lisp-union.h lisp.h lrecord.h lstream.h mc-alloc.h number-gmp.h number-mp.h number.h objects-x.h objects.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysproc.h syssignal.h systime.h systty.h text.h vdb.h window-impl.h window.h winslots.h xintrinsic.h xintrinsicp.h xmotif.h event-stream.o: $(CONFIG_H) $(LISP_H) backtrace.h blocktype.h buffer.h bufslots.h casetab.h charset.h chartab.h coding-system-slots.h commands.h compiler.h conslots.h console-impl.h console.h device-impl.h device.h devslots.h dumper.h elhash.h events.h file-coding.h frame-impl.h frame.h frameslots.h gc.h general-slots.h gui.h insdel.h keymap.h lisp-disunion.h lisp-union.h lisp.h lrecord.h lstream.h macros.h mc-alloc.h menubar.h number-gmp.h number-mp.h number.h process.h profile.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h syssignal.h systime.h text.h vdb.h window-impl.h window.h winslots.h event-unixoid.o: $(CONFIG_H) $(LISP_H) compiler.h conslots.h console-impl.h console-stream-impl.h console-stream.h console-tty-impl.h console-tty.h console.h device-impl.h device.h devslots.h dumper.h events.h gc.h general-slots.h lisp-disunion.h lisp-union.h lisp.h lrecord.h lstream.h mc-alloc.h number-gmp.h number-mp.h number.h process.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h text.h vdb.h events.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h compiler.h conslots.h console-impl.h console-tty-impl.h console-tty.h console.h device.h dumper.h events.h extents.h frame-impl.h frame.h frameslots.h gc.h general-slots.h glyphs.h keymap.h lisp-disunion.h lisp-union.h lisp.h lrecord.h lstream.h mc-alloc.h number-gmp.h number-mp.h number.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h systty.h text.h toolbar.h vdb.h window-impl.h window.h winslots.h @@ -200,7 +200,6 @@ number-mp.o: $(CONFIG_H) $(LISP_H) compiler.h dumper.h gc.h general-slots.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h symeval.h symsinit.h text.h vdb.h number.o: $(CONFIG_H) $(LISP_H) compiler.h dumper.h gc.h general-slots.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h symeval.h symsinit.h text.h vdb.h objects.o: $(CONFIG_H) $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h compiler.h conslots.h console-impl.h console-tty.h console.h device-impl.h device.h devslots.h dumper.h elhash.h faces.h frame.h gc.h general-slots.h glyphs.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h objects-impl.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systty.h text.h vdb.h window-impl.h window.h winslots.h -offix.o: offix-cursors.h offix-types.h offix.h xintrinsic.h opaque.o: $(CONFIG_H) $(LISP_H) compiler.h dumper.h gc.h general-slots.h lisp-disunion.h lisp-union.h lisp.h lrecord.h mc-alloc.h number-gmp.h number-mp.h number.h opaque.h symeval.h symsinit.h text.h vdb.h print.o: $(CONFIG_H) $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h charset.h chartab.h compiler.h conslots.h console-impl.h console-msw.h console-stream-impl.h console-stream.h console-tty-impl.h console-tty.h console.h device-impl.h device.h devslots.h dumper.h extents.h frame.h gc.h general-slots.h insdel.h intl-auto-encap-win32.h lisp-disunion.h lisp-union.h lisp.h lrecord.h lstream.h mc-alloc.h number-gmp.h number-mp.h number.h opaque.h redisplay.h specifier.h symeval.h symsinit.h sysfile.h systty.h syswindows.h text.h vdb.h process-nt.o: $(CONFIG_H) $(LISP_H) compiler.h console-msw.h console.h dumper.h events.h gc.h general-slots.h hash.h intl-auto-encap-win32.h lisp-disunion.h lisp-union.h lisp.h lrecord.h lstream.h mc-alloc.h number-gmp.h number-mp.h number.h process-slots.h process.h procimpl.h symeval.h symsinit.h sysfile.h sysproc.h syssignal.h systime.h syswindows.h text.h vdb.h
--- a/src/device-x.c Sat Dec 19 18:10:20 2009 +0000 +++ b/src/device-x.c Thu Dec 31 15:47:03 2009 +0000 @@ -61,10 +61,6 @@ #include "sysdll.h" #endif /* HAVE_SHLIB and LWLIB_USES_ATHENA and not HAVE_ATHENA_3D */ -#ifdef HAVE_OFFIX_DND -#include "offix.h" -#endif - Lisp_Object Vx_app_defaults_directory; #ifdef MULE Lisp_Object Qget_coding_system_from_locale; @@ -910,11 +906,6 @@ } #endif /* HAVE_WMCOMMAND */ - -#ifdef HAVE_OFFIX_DND - DndInitialize (app_shell); -#endif - Vx_initial_argv_list = make_arg_list (argc, argv); free_argc_argv (argv);
--- a/src/dragdrop.c Sat Dec 19 18:10:20 2009 +0000 +++ b/src/dragdrop.c Thu Dec 31 15:47:03 2009 +0000 @@ -26,8 +26,6 @@ /* A short introduction to the new Drag'n'Drop Model: - Currently only drops from OffiX are implemented. - A drop generates a extended misc-user-event, as defined in events.[ch]. This event contains the same as a eval and a button event. The function of a drop is set to 'dragdrop-drop-dispatch' which will be @@ -137,9 +135,6 @@ #ifdef HAVE_CDE Vdragdrop_protocols = Fcons (intern ("cde"), Vdragdrop_protocols); #endif -#ifdef HAVE_OFFIX_DND - Vdragdrop_protocols = Fcons (intern ("offix"), Vdragdrop_protocols); -#endif #ifdef HAVE_GTK Vdragdrop_protocols = Fcons (Qgtk, Vdragdrop_protocols); #endif
--- a/src/event-Xt.c Sat Dec 19 18:10:20 2009 +0000 +++ b/src/event-Xt.c Thu Dec 31 15:47:03 2009 +0000 @@ -63,10 +63,6 @@ #include "dragdrop.h" #endif -#if defined (HAVE_OFFIX_DND) -#include "offix.h" -#endif - #ifdef WIN32_ANY extern int mswindows_is_blocking; #endif @@ -1317,135 +1313,7 @@ passed as the timestamp of the TAKE_FOCUS, which the ICCCM explicitly prohibits. */ XClientMessageEvent *ev = &x_event->xclient; -#ifdef HAVE_OFFIX_DND - if (DndIsDropMessage (x_event)) - { - unsigned int state; - int modifiers = 0; - int button = 0; - struct frame *frame = x_any_window_to_frame (d, ev->window); - Extbyte *data; - unsigned long size, dtype; - Lisp_Object l_type = Qnil, l_data = Qnil; - Lisp_Object l_dndlist = Qnil, l_item = Qnil; - struct gcpro gcpro1, gcpro2, gcpro3, gcpro4; - - if (! frame) - return 0; /* not for us */ - - GCPRO4 (l_type, l_data, l_dndlist, l_item); - set_event_type (emacs_event, misc_user_event); - SET_EVENT_CHANNEL (emacs_event, wrap_frame (frame)); - SET_EVENT_TIMESTAMP (emacs_event, - DEVICE_X_LAST_SERVER_TIMESTAMP (d)); - state=DndDragButtons (x_event); - - if (state & ShiftMask) modifiers |= XEMACS_MOD_SHIFT; - if (state & ControlMask) modifiers |= XEMACS_MOD_CONTROL; - if (state & xd->MetaMask) modifiers |= XEMACS_MOD_META; - if (state & xd->SuperMask) modifiers |= XEMACS_MOD_SUPER; - if (state & xd->HyperMask) modifiers |= XEMACS_MOD_HYPER; - if (state & xd->AltMask) modifiers |= XEMACS_MOD_ALT; - if (state & Button1Mask) modifiers |= XEMACS_MOD_BUTTON1; - if (state & Button2Mask) modifiers |= XEMACS_MOD_BUTTON2; - if (state & Button3Mask) modifiers |= XEMACS_MOD_BUTTON3; - if (state & Button4Mask) modifiers |= XEMACS_MOD_BUTTON4; - if (state & Button5Mask) modifiers |= XEMACS_MOD_BUTTON5; - - if (state & Button5Mask) button = Button5; - if (state & Button4Mask) button = Button4; - if (state & Button3Mask) button = Button3; - if (state & Button2Mask) button = Button2; - if (state & Button1Mask) button = Button1; - - SET_EVENT_MISC_USER_MODIFIERS (emacs_event, modifiers); - SET_EVENT_MISC_USER_BUTTON (emacs_event, button); - - DndDropCoordinates (FRAME_X_TEXT_WIDGET (frame), x_event, - &(EVENT_MISC_USER_X (emacs_event)), - &(EVENT_MISC_USER_Y (emacs_event))); - DndGetData (x_event, &data, &size); - - dtype = DndDataType (x_event); - switch (dtype) - { - case DndFiles: /* null terminated strings, end null */ - { - int len; - Ibyte *hurl = NULL; - - while (*data) - { - Ibyte *dataint; - len = strlen (data); - EXTERNAL_TO_C_STRING (data, dataint, Qfile_name); - hurl = dnd_url_hexify_string (dataint, - (const Ibyte *) "file:"); - l_item = build_intstring (hurl); - l_dndlist = Fcons (l_item, l_dndlist); - data += len + 1; - xfree (hurl, Ibyte *); - } - l_type = Qdragdrop_URL; - } - break; - case DndText: - l_type = Qdragdrop_MIME; - l_dndlist = list1 (list3 (list1 (build_string ("text/plain")), - build_string ("8bit"), - build_ext_string (data, - Qctext))); - break; - case DndMIME: - /* we have to parse this in some way to extract - content-type and params (in the tm way) and - content encoding. - OR: if data is string, let tm do the job - if data is list[2], give the first two - to tm... - */ - l_type = Qdragdrop_MIME; - l_dndlist = list1 (build_ext_string (data, Qbinary)); - break; - case DndFile: - case DndDir: - case DndLink: - case DndExe: - { - Ibyte *dataint, *hurl; - EXTERNAL_TO_C_STRING (data, dataint, Qfile_name); - hurl = dnd_url_hexify_string (dataint, "file:"); - l_dndlist = list1 (build_intstring (hurl)); - xfree (hurl, Ibyte *); - } - break; - case DndURL: - /* as it is a real URL it should already be escaped - and escaping again will break them (cause % is unsave) */ - l_dndlist = list1 (build_ext_string (data, - Qfile_name)); - l_type = Qdragdrop_URL; - break; - default: /* Unknown, RawData and any other type */ - l_dndlist = list1 (list3 (list1 (build_string - ("application/octet-stream")), - build_string ("8bit"), - make_ext_string (data, size, - Qbinary))); - l_type = Qdragdrop_MIME; - break; - } - - SET_EVENT_MISC_USER_FUNCTION (emacs_event, - Qdragdrop_drop_dispatch); - SET_EVENT_MISC_USER_OBJECT (emacs_event, - Fcons (l_type, l_dndlist)); - - UNGCPRO; - - break; - } -#endif /* HAVE_OFFIX_DND */ + if (ev->message_type == DEVICE_XATOM_WM_PROTOCOLS (d) && (Atom) (ev->data.l[0]) == DEVICE_XATOM_WM_TAKE_FOCUS (d) && (Atom) (ev->data.l[1]) == 0)
--- a/src/event-gtk.c Sat Dec 19 18:10:20 2009 +0000 +++ b/src/event-gtk.c Thu Dec 31 15:47:03 2009 +0000 @@ -62,10 +62,6 @@ # include "menubar.h" #endif -#if defined (HAVE_OFFIX_DND) -#include "offix.h" -#endif - #include <gdk/gdkx.h> #include "event-gtk.h"
--- a/src/frame-x.c Sat Dec 19 18:10:20 2009 +0000 +++ b/src/frame-x.c Thu Dec 31 15:47:03 2009 +0000 @@ -60,10 +60,6 @@ #include "dragdrop.h" #endif -#ifdef HAVE_OFFIX_DND -#include "offix.h" -#endif - /* Default properties to use when creating frames. */ Lisp_Object Vdefault_x_frame_plist; @@ -1002,7 +998,7 @@ frame_title_format_already_set = 1; } -#if defined (HAVE_CDE) || defined (HAVE_OFFIX_DND) +#if defined (HAVE_CDE) static Extbyte * start_drag_internal_1 (Lisp_Object event, Lisp_Object data, @@ -1095,7 +1091,7 @@ return dnd_data; } -#endif /* defined (HAVE_CDE) || defined (HAVE_OFFIX_DND) */ +#endif /* defined (HAVE_CDE) */ #ifdef HAVE_CDE #include <Dt/Dt.h> @@ -1333,46 +1329,6 @@ } #endif /* HAVE_CDE */ -#ifdef HAVE_OFFIX_DND - -DEFUN ("offix-start-drag-internal", Foffix_start_drag_internal, 2, 3, 0, /* -Start a OffiX drag from a buffer. -First arg is the event that started the drag, -second arg should be some string, and the third -is the type of the data (this should be an int). -The type defaults to DndText (4). -*/ - (event, data, dtyp)) -{ - Extbyte *dnd_data; - XEvent x_event; - Bytecount dnd_len; - Widget wid; - int num_items; - int dnd_type = DndText; - - if (!NILP (dtyp)) - { - CHECK_INT (dtyp); - dnd_type = XINT (dtyp); - } - - dnd_data = start_drag_internal_1 (event, data, Qoffix_dnd_encoding, - &x_event, dnd_type == DndFiles, - &wid, &dnd_len, &num_items); - - DndSetData (dnd_type, (UExtbyte *) dnd_data, dnd_len); - xfree (dnd_data, Extbyte *); - - /* the next thing blocks everything... */ - if (DndHandleDragging (wid, &x_event)) - return Qt; - - return Qnil; -} - -#endif /* HAVE_OFFIX_DND */ - /************************************************************************/ /* widget creation */ @@ -2811,9 +2767,6 @@ #ifdef HAVE_CDE DEFSUBR (Fcde_start_drag_internal); #endif -#ifdef HAVE_OFFIX_DND - DEFSUBR (Foffix_start_drag_internal); -#endif } void
--- a/src/frame.c Sat Dec 19 18:10:20 2009 +0000 +++ b/src/frame.c Thu Dec 31 15:47:03 2009 +0000 @@ -3751,10 +3751,6 @@ Fprovide (intern ("cde")); #endif -#ifdef HAVE_OFFIX_DND - Fprovide (intern ("offix")); -#endif - #if 0 /* FSFmacs stupidity */ xxDEFVAR_LISP ("emacs-iconified", &Vemacs_iconified /* Non-nil if all of emacs is iconified and frame updates are not needed.
--- a/src/nt.c Sat Dec 19 18:10:20 2009 +0000 +++ b/src/nt.c Thu Dec 31 15:47:03 2009 +0000 @@ -1815,7 +1815,27 @@ { Extbyte *cwdext; Ibyte *cwd; - + /* Following comment and two-liner fix comes from + https://bugzilla.mozilla.org/show_bug.cgi?id=419326 which + apparently fell prey to this feature of msvcrt8 as well. */ + /* We need to worry about IPH, for details read bug 419326. + * _getdrives - http://msdn2.microsoft.com/en-us/library/xdhk0xd2.aspx + * uses a bitmask, bit 0 is 'a:' + * _chdrive - http://msdn2.microsoft.com/en-us/library/0d1409hb.aspx + * _getdcwd - http://msdn2.microsoft.com/en-us/library/7t2zk3s4.aspx + * take an int, 1 is 'a:'. + * + * Because of this, we need to do some math. Subtract 1 to convert from + * _chdrive/_getdcwd format to _getdrives drive numbering. + * Shift left x bits to convert from integer indexing to bitfield indexing. + * And of course, we need to find out if the drive is in the bitmask. + * + * If we're really unlucky, we can still lose, but only if the user + * manages to eject the drive between our call to _getdrives() and + * our *calls* to _wgetdcwd. + */ + if (!((1 << (drivelet - 1)) & _getdrives())) + return NULL; if (XEUNICODE_P) cwdext = (Extbyte *) _wgetdcwd (drivelet, NULL, 0); else
--- a/src/offix-cursors.h Sat Dec 19 18:10:20 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,346 +0,0 @@ -#define app_width 42 -#define app_height 32 -#define app_x_hot 1 -#define app_y_hot 1 -static unsigned char app_bits[] = { - 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x02, 0x40, 0x00, 0x80, 0x01, 0x00, - 0x06, 0x40, 0x00, 0x80, 0x02, 0x00, 0x0e, 0x40, 0x00, 0x80, 0x04, 0x00, - 0x1e, 0x40, 0x00, 0x80, 0x08, 0x00, 0x3e, 0x40, 0x00, 0x80, 0x10, 0x00, - 0x7e, 0x40, 0x00, 0x80, 0x20, 0x00, 0xfe, 0x40, 0x00, 0x80, 0x7f, 0x00, - 0xfe, 0x41, 0x00, 0x00, 0x60, 0x00, 0x3e, 0x40, 0xfe, 0xff, 0x67, 0x00, - 0x36, 0x40, 0xaa, 0xaa, 0x6e, 0x00, 0x62, 0x40, 0x56, 0x55, 0x6d, 0x00, - 0x60, 0x40, 0xfe, 0xff, 0x6f, 0x00, 0xc0, 0x40, 0x02, 0x00, 0x6c, 0x00, - 0xc0, 0x40, 0x02, 0x00, 0x6c, 0x00, 0x00, 0x40, 0x02, 0x00, 0x6c, 0x00, - 0x00, 0x40, 0x02, 0x00, 0x6c, 0x00, 0x00, 0x40, 0x02, 0x00, 0x6c, 0x00, - 0x00, 0x40, 0x02, 0x00, 0x6c, 0x00, 0x00, 0x40, 0x02, 0x00, 0x6c, 0x00, - 0x00, 0x40, 0x02, 0x00, 0x6c, 0x00, 0x00, 0x40, 0x02, 0x00, 0x6c, 0x00, - 0x00, 0x40, 0x02, 0x00, 0x6c, 0x00, 0x00, 0x40, 0x02, 0x00, 0x6c, 0x00, - 0x00, 0x40, 0x02, 0x00, 0x6c, 0x00, 0x00, 0x40, 0xfe, 0xff, 0x6f, 0x00, - 0x00, 0x40, 0xfc, 0xff, 0x6f, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, - 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00}; -#define app_mask_width 42 -#define app_mask_height 32 -#define app_mask_x_hot 1 -#define app_mask_y_hot 1 -static unsigned char app_mask_bits[] = { - 0x03, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x07, 0xc0, 0xff, 0xff, 0x01, 0x00, - 0x0f, 0xc0, 0xff, 0xff, 0x03, 0x00, 0x1f, 0xc0, 0xff, 0xff, 0x07, 0x00, - 0x3f, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x7f, 0xc0, 0xff, 0xff, 0x1f, 0x00, - 0xff, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xc1, 0xff, 0xff, 0x7f, 0x00, - 0xff, 0xc3, 0xff, 0xff, 0x7f, 0x00, 0xff, 0xc3, 0xff, 0xff, 0x7f, 0x00, - 0x7f, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0xf7, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0xf3, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0xe0, 0xc1, 0xff, 0xff, 0x7f, 0x00, - 0xe0, 0xc1, 0xff, 0xff, 0x7f, 0x00, 0xc0, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00}; -#define cursor_width 10 -#define cursor_height 16 -#define cursor_x_hot 0 -#define cursor_y_hot 0 -#if 0 /* unused */ -static unsigned char cursor_bits[] = { - 0x00, 0x00, 0x02, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x1e, 0x00, 0x3e, 0x00, - 0x7e, 0x00, 0xfe, 0x00, 0xfe, 0x01, 0x3e, 0x00, 0x36, 0x00, 0x62, 0x00, - 0x60, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00}; -#endif /* unused */ -#define dir_width 42 -#define dir_height 24 -#define dir_x_hot 1 -#define dir_y_hot 1 -static unsigned char dir_bits[] = { - 0x00, 0x00, 0xff, 0x01, 0x00, 0x00, 0x02, 0x80, 0x00, 0x02, 0x00, 0x00, - 0x06, 0x40, 0x00, 0x04, 0x00, 0x00, 0x0e, 0x20, 0x00, 0x08, 0x00, 0x00, - 0x1e, 0xf0, 0xff, 0xff, 0xff, 0x03, 0x3e, 0x10, 0x00, 0x00, 0x00, 0x02, - 0x7e, 0x10, 0x00, 0x00, 0x00, 0x02, 0xfe, 0x10, 0x00, 0x00, 0x00, 0x02, - 0xfe, 0x11, 0x00, 0x00, 0x00, 0x02, 0x3e, 0x10, 0x00, 0x00, 0x00, 0x02, - 0x36, 0x10, 0x00, 0x00, 0x00, 0x02, 0x62, 0x10, 0x00, 0x00, 0x00, 0x02, - 0x60, 0x10, 0x00, 0x00, 0x00, 0x02, 0xc0, 0x10, 0x00, 0x00, 0x00, 0x02, - 0xc0, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x03}; -#define dir_mask_width 42 -#define dir_mask_height 24 -#define dir_mask_x_hot 1 -#define dir_mask_y_hot 1 -static unsigned char dir_mask_bits[] = { - 0x03, 0x00, 0xff, 0x01, 0x00, 0x00, 0x07, 0x80, 0xff, 0x03, 0x00, 0x00, - 0x0f, 0xc0, 0xff, 0x07, 0x00, 0x00, 0x1f, 0xe0, 0xff, 0x0f, 0x00, 0x00, - 0x3f, 0xf0, 0xff, 0xff, 0xff, 0x03, 0x7f, 0xf0, 0xff, 0xff, 0xff, 0x03, - 0xff, 0xf0, 0xff, 0xff, 0xff, 0x03, 0xff, 0xf1, 0xff, 0xff, 0xff, 0x03, - 0xff, 0xf3, 0xff, 0xff, 0xff, 0x03, 0xff, 0xf3, 0xff, 0xff, 0xff, 0x03, - 0x7f, 0xf0, 0xff, 0xff, 0xff, 0x03, 0xf7, 0xf0, 0xff, 0xff, 0xff, 0x03, - 0xf3, 0xf0, 0xff, 0xff, 0xff, 0x03, 0xe0, 0xf1, 0xff, 0xff, 0xff, 0x03, - 0xe0, 0xf1, 0xff, 0xff, 0xff, 0x03, 0xc0, 0xf0, 0xff, 0xff, 0xff, 0x03, - 0x00, 0xf0, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x03, - 0x00, 0xf0, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x03, - 0x00, 0xf0, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x03, - 0x00, 0xf0, 0xff, 0xff, 0xff, 0x03, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x03}; -#define file_width 42 -#define file_height 32 -#define file_x_hot 1 -#define file_y_hot 1 -static unsigned char file_bits[] = { - 0x00, 0xc0, 0xff, 0xff, 0x07, 0x00, 0x02, 0x40, 0x00, 0x00, 0x0a, 0x00, - 0x06, 0x40, 0x00, 0x00, 0x12, 0x00, 0x0e, 0x40, 0x00, 0x00, 0x22, 0x00, - 0x1e, 0x40, 0x00, 0x00, 0x3e, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x20, 0x00, - 0x7e, 0x40, 0x00, 0x00, 0x20, 0x00, 0xfe, 0x40, 0x00, 0x00, 0x20, 0x00, - 0xfe, 0x41, 0x00, 0x00, 0x20, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x20, 0x00, - 0x36, 0x40, 0x00, 0x00, 0x20, 0x00, 0x62, 0x40, 0x00, 0x00, 0x20, 0x00, - 0x60, 0x40, 0x00, 0x00, 0x20, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x20, 0x00, - 0xc0, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, - 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, - 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, - 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, - 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, - 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, - 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, - 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x20, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; -#define file_mask_width 42 -#define file_mask_height 32 -#define file_mask_x_hot 1 -#define file_mask_y_hot 1 -static unsigned char file_mask_bits[] = { - 0x03, 0xc0, 0xff, 0xff, 0x07, 0x00, 0x07, 0xc0, 0xff, 0xff, 0x0f, 0x00, - 0x0f, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x1f, 0xc0, 0xff, 0xff, 0x3f, 0x00, - 0x3f, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0x7f, 0xc0, 0xff, 0xff, 0x3f, 0x00, - 0xff, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xc1, 0xff, 0xff, 0x3f, 0x00, - 0xff, 0xc3, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xc3, 0xff, 0xff, 0x3f, 0x00, - 0x7f, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0xf7, 0xc0, 0xff, 0xff, 0x3f, 0x00, - 0xf3, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0xe0, 0xc1, 0xff, 0xff, 0x3f, 0x00, - 0xe0, 0xc1, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xc0, 0xff, 0xff, 0x3f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; -#define files_width 42 -#define files_height 32 -#define files_x_hot 1 -#define files_y_hot 1 -static unsigned char files_bits[] = { - 0x00, 0xf8, 0xff, 0xff, 0x01, 0x00, 0x02, 0x08, 0x00, 0x80, 0x02, 0x00, - 0x06, 0x08, 0x00, 0x80, 0x04, 0x00, 0x0e, 0x08, 0x00, 0x80, 0x08, 0x00, - 0x1e, 0x08, 0x00, 0x80, 0x1f, 0x00, 0x3e, 0x08, 0x00, 0x00, 0x28, 0x00, - 0x7e, 0x08, 0x00, 0x00, 0x78, 0x00, 0xfe, 0x08, 0x00, 0x00, 0xa8, 0x00, - 0xfe, 0x09, 0x00, 0x00, 0xe8, 0x00, 0x3e, 0x08, 0x00, 0x00, 0xa8, 0x00, - 0x36, 0x08, 0x00, 0x00, 0xa8, 0x00, 0x62, 0x08, 0x00, 0x00, 0xa8, 0x00, - 0x60, 0x08, 0x00, 0x00, 0xa8, 0x00, 0xc0, 0x08, 0x00, 0x00, 0xa8, 0x00, - 0xc0, 0x08, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x08, 0x00, 0x00, 0xa8, 0x00, - 0x00, 0x08, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x08, 0x00, 0x00, 0xa8, 0x00, - 0x00, 0x08, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x08, 0x00, 0x00, 0xa8, 0x00, - 0x00, 0x08, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x08, 0x00, 0x00, 0xa8, 0x00, - 0x00, 0x08, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x08, 0x00, 0x00, 0xa8, 0x00, - 0x00, 0x08, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x08, 0x00, 0x00, 0xa8, 0x00, - 0x00, 0x08, 0x00, 0x00, 0xa8, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xaf, 0x00, - 0x00, 0x10, 0x00, 0x00, 0xa0, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xbf, 0x00, - 0x00, 0x20, 0x00, 0x00, 0x80, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x00}; -#define files_mask_width 42 -#define files_mask_height 32 -#define files_mask_x_hot 1 -#define files_mask_y_hot 1 -static unsigned char files_mask_bits[] = { - 0x03, 0xf8, 0xff, 0xff, 0x01, 0x00, 0x07, 0xf8, 0xff, 0xff, 0x03, 0x00, - 0x0f, 0xf8, 0xff, 0xff, 0x07, 0x00, 0x1f, 0xf8, 0xff, 0xff, 0x0f, 0x00, - 0x3f, 0xf8, 0xff, 0xff, 0x1f, 0x00, 0x7f, 0xf8, 0xff, 0xff, 0x3f, 0x00, - 0xff, 0xf8, 0xff, 0xff, 0x7f, 0x00, 0xff, 0xf9, 0xff, 0xff, 0xff, 0x00, - 0xff, 0xfb, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfb, 0xff, 0xff, 0xff, 0x00, - 0x7f, 0xf8, 0xff, 0xff, 0xff, 0x00, 0xf7, 0xf8, 0xff, 0xff, 0xff, 0x00, - 0xf3, 0xf8, 0xff, 0xff, 0xff, 0x00, 0xe0, 0xf9, 0xff, 0xff, 0xff, 0x00, - 0xe0, 0xf9, 0xff, 0xff, 0xff, 0x00, 0xc0, 0xf8, 0xff, 0xff, 0xff, 0x00, - 0x00, 0xf8, 0xff, 0xff, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x00, - 0x00, 0xf8, 0xff, 0xff, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x00, - 0x00, 0xf8, 0xff, 0xff, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x00, - 0x00, 0xf8, 0xff, 0xff, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x00, - 0x00, 0xf8, 0xff, 0xff, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x00, - 0x00, 0xf8, 0xff, 0xff, 0xff, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x00, - 0x00, 0xf0, 0xff, 0xff, 0xff, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x00, - 0x00, 0xe0, 0xff, 0xff, 0xff, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0x00}; -#define grey_width 42 -#define grey_height 32 -#define grey_x_hot 1 -#define grey_y_hot 1 -static unsigned char grey_bits[] = { - 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x02, 0x40, 0x55, 0xd5, 0x01, 0x00, - 0x06, 0xc0, 0xaa, 0xaa, 0x03, 0x00, 0x0e, 0x40, 0x55, 0xd5, 0x07, 0x00, - 0x1e, 0xc0, 0xaa, 0xaa, 0x0f, 0x00, 0x3e, 0x40, 0x55, 0xd5, 0x1f, 0x00, - 0x7e, 0xc0, 0xaa, 0xaa, 0x3f, 0x00, 0xfe, 0x40, 0x55, 0xd5, 0x7f, 0x00, - 0xfe, 0xc1, 0xaa, 0xaa, 0x7f, 0x00, 0x3e, 0x40, 0x55, 0x55, 0x75, 0x00, - 0x36, 0xc0, 0xaa, 0xaa, 0x6a, 0x00, 0x72, 0x40, 0x55, 0x55, 0x75, 0x00, - 0x60, 0xc0, 0xaa, 0xaa, 0x6a, 0x00, 0xc0, 0x40, 0x55, 0x55, 0x75, 0x00, - 0xc0, 0xc0, 0xaa, 0xaa, 0x6a, 0x00, 0x00, 0x40, 0x55, 0x55, 0x75, 0x00, - 0x00, 0xc0, 0xaa, 0xaa, 0x6a, 0x00, 0x00, 0x40, 0x55, 0x55, 0x75, 0x00, - 0x00, 0xc0, 0xaa, 0xaa, 0x6a, 0x00, 0x00, 0x40, 0x55, 0x55, 0x75, 0x00, - 0x00, 0xc0, 0xaa, 0xaa, 0x6a, 0x00, 0x00, 0x40, 0x55, 0x55, 0x75, 0x00, - 0x00, 0xc0, 0xaa, 0xaa, 0x6a, 0x00, 0x00, 0x40, 0x55, 0x55, 0x75, 0x00, - 0x00, 0xc0, 0xaa, 0xaa, 0x6a, 0x00, 0x00, 0x40, 0x55, 0x55, 0x75, 0x00, - 0x00, 0xc0, 0xaa, 0xaa, 0x6a, 0x00, 0x00, 0x40, 0x55, 0x55, 0x75, 0x00, - 0x00, 0xc0, 0xaa, 0xaa, 0x6a, 0x00, 0x00, 0x40, 0x55, 0x55, 0x75, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00}; -#define grey_mask_width 42 -#define grey_mask_height 32 -#define grey_mask_x_hot 1 -#define grey_mask_y_hot 1 -static unsigned char grey_mask_bits[] = { - 0x03, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x07, 0xc0, 0xff, 0xff, 0x01, 0x00, - 0x0f, 0xc0, 0xff, 0xff, 0x03, 0x00, 0x1f, 0xc0, 0xff, 0xff, 0x07, 0x00, - 0x3f, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x7f, 0xc0, 0xff, 0xff, 0x1f, 0x00, - 0xff, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xc1, 0xff, 0xff, 0x7f, 0x00, - 0xff, 0xc3, 0xff, 0xff, 0x7f, 0x00, 0xff, 0xc3, 0xff, 0xff, 0x7f, 0x00, - 0x7f, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0xff, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0xf3, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0xe0, 0xc1, 0xff, 0xff, 0x7f, 0x00, - 0xe0, 0xc1, 0xff, 0xff, 0x7f, 0x00, 0xc0, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00}; -#define link_width 42 -#define link_height 32 -#define link_x_hot 1 -#define link_y_hot 1 -static unsigned char link_bits[] = { - 0x00, 0xc0, 0xff, 0xff, 0x01, 0x00, 0x02, 0x40, 0x00, 0x00, 0x03, 0x00, - 0x06, 0x40, 0x00, 0x00, 0x05, 0x00, 0x0e, 0x40, 0x00, 0x00, 0x09, 0x00, - 0x1e, 0x40, 0x00, 0x00, 0x11, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x21, 0x00, - 0x7e, 0x40, 0x00, 0x00, 0x7f, 0x00, 0xfe, 0x40, 0x00, 0x00, 0x60, 0x00, - 0xfe, 0x41, 0x00, 0x00, 0x60, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x60, 0x00, - 0x36, 0xc0, 0xc3, 0x1f, 0x7e, 0x00, 0x62, 0x40, 0xa5, 0x2a, 0x75, 0x00, - 0x60, 0xc0, 0xdb, 0xdf, 0x7e, 0x00, 0xc0, 0x40, 0xff, 0xf8, 0x67, 0x00, - 0xc0, 0xc0, 0x55, 0xad, 0x6a, 0x00, 0x00, 0xc0, 0xaa, 0x55, 0x6d, 0x00, - 0x00, 0x40, 0xff, 0xf8, 0x67, 0x00, 0x00, 0xc0, 0xdb, 0xdf, 0x7e, 0x00, - 0x00, 0x40, 0xa5, 0x2a, 0x75, 0x00, 0x00, 0xc0, 0xc3, 0x1f, 0x7e, 0x00, - 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, - 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x88, 0x52, 0x62, 0x00, - 0x00, 0x40, 0x88, 0x56, 0x61, 0x00, 0x00, 0x40, 0x88, 0xda, 0x60, 0x00, - 0x00, 0x40, 0x88, 0x52, 0x61, 0x00, 0x00, 0x40, 0xb8, 0x52, 0x62, 0x00, - 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00}; -#define link_mask_width 42 -#define link_mask_height 32 -#define link_mask_x_hot 1 -#define link_mask_y_hot 1 -static unsigned char link_mask_bits[] = { - 0x03, 0xc0, 0xff, 0xff, 0x01, 0x00, 0x07, 0xc0, 0xff, 0xff, 0x03, 0x00, - 0x0f, 0xc0, 0xff, 0xff, 0x07, 0x00, 0x1f, 0xc0, 0xff, 0xff, 0x0f, 0x00, - 0x3f, 0xc0, 0xff, 0xff, 0x1f, 0x00, 0x7f, 0xc0, 0xff, 0xff, 0x3f, 0x00, - 0xff, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0xff, 0xc1, 0xff, 0xff, 0x7f, 0x00, - 0xff, 0xc3, 0xff, 0xff, 0x7f, 0x00, 0xff, 0xc3, 0xff, 0xff, 0x7f, 0x00, - 0x7f, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0xf7, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0xf3, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0xe0, 0xc1, 0xff, 0xff, 0x7f, 0x00, - 0xe0, 0xc1, 0xff, 0xff, 0x7f, 0x00, 0xc0, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00}; -#define mime_width 30 -#define mime_height 20 -#define mime_x_hot 1 -#define mime_y_hot 1 -static unsigned char mime_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x80, 0x01, 0x06, 0x00, 0x80, 0x01, - 0x0e, 0x00, 0x00, 0x00, 0x1e, 0xb0, 0x99, 0x01, 0x3e, 0x70, 0xb7, 0x01, - 0x7e, 0x30, 0xb3, 0x01, 0xfe, 0x30, 0xb3, 0x01, 0xfe, 0x31, 0xb3, 0x01, - 0x3e, 0x30, 0xb3, 0x01, 0x36, 0x30, 0xb3, 0x01, 0x62, 0x00, 0x00, 0x00, - 0x60, 0xb0, 0x19, 0x0f, 0xc0, 0x70, 0xb7, 0x19, 0xc0, 0x30, 0xb3, 0x19, - 0x00, 0x30, 0xb3, 0x1f, 0x00, 0x30, 0xb3, 0x01, 0x00, 0x30, 0xb3, 0x11, - 0x00, 0x30, 0x33, 0x0f, 0x00, 0x00, 0x00, 0x00}; -#define mime_mask_width 30 -#define mime_mask_height 20 -static unsigned char mime_mask_bits[] = { - 0x03, 0x00, 0x80, 0x01, 0x07, 0x00, 0xc0, 0x03, 0x0f, 0x00, 0xc0, 0x03, - 0x1f, 0xb8, 0x99, 0x01, 0x3f, 0xf8, 0xff, 0x03, 0x7f, 0xf8, 0xff, 0x03, - 0xff, 0xf8, 0xff, 0x03, 0xff, 0xf9, 0xff, 0x03, 0xff, 0xfb, 0xff, 0x03, - 0xff, 0xf9, 0xff, 0x03, 0x7f, 0xf8, 0xff, 0x03, 0xf7, 0xf8, 0xff, 0x0f, - 0xf3, 0xf8, 0xff, 0x1f, 0xe0, 0xf9, 0xff, 0x3f, 0xe0, 0xf9, 0xff, 0x3f, - 0xc0, 0xf8, 0xff, 0x3f, 0x00, 0xf8, 0xff, 0x3f, 0x00, 0xf8, 0xff, 0x3f, - 0x00, 0xf8, 0xff, 0x1f, 0x00, 0xf8, 0xff, 0x0f}; -#define text_width 42 -#define text_height 32 -#define text_x_hot 1 -#define text_y_hot 1 -static unsigned char text_bits[] = { - 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x02, 0x40, 0x00, 0x80, 0x01, 0x00, - 0x06, 0x40, 0x00, 0x80, 0x02, 0x00, 0x0e, 0x40, 0xde, 0xbd, 0x04, 0x00, - 0x1e, 0x40, 0x00, 0x80, 0x08, 0x00, 0x3e, 0x40, 0x00, 0x80, 0x10, 0x00, - 0x7e, 0x40, 0xb8, 0xef, 0x20, 0x00, 0xfe, 0x40, 0x00, 0x80, 0x7f, 0x00, - 0xfe, 0x41, 0xfe, 0xf6, 0x64, 0x00, 0x3e, 0x40, 0x00, 0x00, 0x60, 0x00, - 0x36, 0x40, 0xf6, 0xce, 0x67, 0x00, 0x62, 0x40, 0x00, 0x00, 0x60, 0x00, - 0x60, 0x40, 0xba, 0xfb, 0x60, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x60, 0x00, - 0xc0, 0x40, 0x00, 0x00, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, - 0x00, 0x40, 0x14, 0x3b, 0x63, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, - 0x00, 0x40, 0xf4, 0xba, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, - 0x00, 0x40, 0x74, 0x07, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, - 0x00, 0x40, 0xff, 0xf6, 0x67, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, - 0x00, 0x40, 0xf7, 0x7d, 0x66, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, - 0x00, 0x40, 0xdf, 0xef, 0x63, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, - 0x00, 0x40, 0x00, 0x06, 0x60, 0x00, 0x00, 0x40, 0x00, 0x00, 0x60, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00}; -#define text_mask_width 42 -#define text_mask_height 32 -#define text_mask_x_hot 1 -#define text_mask_y_hot 1 -static unsigned char text_mask_bits[] = { - 0x03, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x07, 0xc0, 0xff, 0xff, 0x01, 0x00, - 0x0f, 0xc0, 0xff, 0xff, 0x03, 0x00, 0x1f, 0xc0, 0xff, 0xff, 0x07, 0x00, - 0x3f, 0xc0, 0xff, 0xff, 0x0f, 0x00, 0x7f, 0xc0, 0xff, 0xff, 0x1f, 0x00, - 0xff, 0xc0, 0xff, 0xff, 0x3f, 0x00, 0xff, 0xc1, 0xff, 0xff, 0x7f, 0x00, - 0xff, 0xc3, 0xff, 0xff, 0x7f, 0x00, 0xff, 0xc3, 0xff, 0xff, 0x7f, 0x00, - 0x7f, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0xf7, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0xf3, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0xe0, 0xc1, 0xff, 0xff, 0x7f, 0x00, - 0xe0, 0xc1, 0xff, 0xff, 0x7f, 0x00, 0xc0, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, - 0x00, 0xc0, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x80, 0xff, 0xff, 0x7f, 0x00}; -#define url_width 33 -#define url_height 23 -#define url_x_hot 1 -#define url_y_hot 1 -static unsigned char url_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xf8, 0x03, 0x00, 0x06, 0x00, - 0xee, 0x0e, 0x00, 0x0e, 0x00, 0x77, 0x1c, 0x00, 0x1e, 0x80, 0x1f, 0x38, - 0x00, 0x3e, 0xc0, 0x0f, 0x6c, 0x00, 0x7e, 0xe0, 0x07, 0xf4, 0x00, 0xfe, - 0xe0, 0x05, 0xfe, 0x00, 0xfe, 0xf1, 0x00, 0xfe, 0x01, 0x3e, 0xd0, 0x00, - 0xfc, 0x01, 0x36, 0xb0, 0x01, 0xfc, 0x01, 0x62, 0x10, 0x0f, 0xe8, 0x01, - 0x60, 0x30, 0x1f, 0xf0, 0x01, 0xc0, 0x10, 0x3f, 0xfa, 0x01, 0xc0, 0x10, - 0x3e, 0xfd, 0x01, 0x00, 0x60, 0xbc, 0xfe, 0x00, 0x00, 0xa0, 0x1c, 0xff, - 0x00, 0x00, 0xc0, 0xcd, 0x7f, 0x00, 0x00, 0x80, 0xff, 0x3f, 0x00, 0x00, - 0x00, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0x00, 0xf8, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; -#define url_mask_width 33 -#define url_mask_height 23 -static unsigned char url_mask_bits[] = { - 0x03, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xf8, 0x03, 0x00, 0x0f, 0x00, - 0xfe, 0x0f, 0x00, 0x1f, 0x00, 0xff, 0x1f, 0x00, 0x3f, 0x80, 0xff, 0x3f, - 0x00, 0x7f, 0xc0, 0xff, 0x7f, 0x00, 0xff, 0xe0, 0xff, 0xff, 0x00, 0xff, - 0xe1, 0xff, 0xff, 0x00, 0xff, 0xf3, 0xff, 0xff, 0x01, 0xff, 0xf1, 0xff, - 0xff, 0x01, 0x7f, 0xf0, 0xff, 0xff, 0x01, 0xf7, 0xf0, 0xff, 0xff, 0x01, - 0xf3, 0xf0, 0xff, 0xff, 0x01, 0xe0, 0xf1, 0xff, 0xff, 0x01, 0xe0, 0xf1, - 0xff, 0xff, 0x01, 0xc0, 0xe0, 0xff, 0xff, 0x00, 0x00, 0xe0, 0xff, 0xff, - 0x00, 0x00, 0xc0, 0xff, 0x7f, 0x00, 0x00, 0x80, 0xff, 0x3f, 0x00, 0x00, - 0x00, 0xff, 0x1f, 0x00, 0x00, 0x00, 0xfe, 0x0f, 0x00, 0x00, 0x00, 0xf8, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
--- a/src/offix-types.h Sat Dec 19 18:10:20 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ -/* -Copyright (C) 1996 César Crusius - -This file is part of the DND Library. This library is free -software; you can redistribute it and/or modify it under the terms of -the GNU Library General Public License as published by the Free -Software Foundation; either version 2 of the License, or (at your -option) any later version. This library is distributed in the hope -that it will be useful, but WITHOUT ANY WARRANTY; without even the -implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -PURPOSE. See the GNU Library General Public License for more details. -You should have received a copy of the GNU Library General Public -License along with this library; if not, write to the Free Software -Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -*/ - -#ifndef INCLUDED_offix_types_h_ -#define INCLUDED_offix_types_h_ - -#define DndNotDnd -1 -#define DndUnknown 0 -#define DndRawData 1 -#define DndFile 2 -#define DndFiles 3 -#define DndText 4 -#define DndDir 5 -#define DndLink 6 -#define DndExe 7 -#define DndURL 8 -#define DndMIME 9 - -#define DndEND 10 - -#endif /* INCLUDED_offix_types_h_ */
--- a/src/offix.c Sat Dec 19 18:10:20 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,451 +0,0 @@ -/* -This is a modified DND 1.0 library which does not depend on Xt -event handling. -Modifications Copyright (c) 1997 Oliver Graf <ograf@fga.de> - -Original DND lib -Copyright (C) 1996 César Crusius - -This file is part of the DND Library. This library is free -software; you can redistribute it and/or modify it under the terms of -the GNU Library General Public License as published by the Free -Software Foundation; either version 2 of the License, or (at your -option) any later version. This library is distributed in the hope -that it will be useful, but WITHOUT ANY WARRANTY; without even the -implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -PURPOSE. See the GNU Library General Public License for more details. -You should have received a copy of the GNU Library General Public -License along with this library; if not, write to the Free Software -Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -*/ - -/* #define DEBUG */ - -#include "offix.h" -#include <X11/cursorfont.h> -#include <X11/Xatom.h> -#include <X11/Xmu/WinUtil.h> -#include <stdio.h> -#include <stdlib.h> -#include <limits.h> - -/* Local variables */ -static Display *dpy; /* current display */ -static int DragPrecision; /* minimum dx,dy to start drag */ -static int Dragging; /* Drag state flag */ -static int DataOK; /* Non-zero if data registered */ -static Atom DndProtocol; /* ClientMessage identifier */ -static Atom DndSelection; /* For the data transfers */ -static Atom OldDndProtocol; /* Version 0 atom */ -static Atom OldDndSelection;/* Version 0 atom */ -static Atom WM_STATE; /* Needed for icon stuff */ -static Window Target; /* Drop window */ -static Widget MainWidget; /* Main widget of application */ -static int DataType; /* Current drag data type */ -static int RootFlag; /* Non-zero if dropped on root */ -static XColor Black,White; /* For the cursors */ - -/*========================================================================= - * Data for the standard Dnd cursors - *=========================================================================*/ -#include "offix-cursors.h" - -/*=============================================================== CursorData - * CursorData contains all the data for the cursors bitmaps - *==========================================================================*/ -typedef struct -{ - int Width,Height; - unsigned char *ImageData,*MaskData; - int HotSpotX,HotSpotY; - Pixmap ImagePixmap,MaskPixmap; - Cursor CursorID; -} CursorData; - -static CursorData DndCursor[DndEND]={ - { 0,0,NULL,NULL,0,0,0 }, - { grey_width, grey_height,grey_bits,grey_mask_bits, - grey_x_hot,grey_y_hot}, - { file_width,file_height,file_bits,file_mask_bits, - file_x_hot,file_y_hot}, - { files_width,files_height,files_bits,files_mask_bits, - files_x_hot,files_y_hot}, - { text_width,text_height,text_bits,text_mask_bits, - text_x_hot,text_y_hot }, - { dir_width,dir_height,dir_bits,dir_mask_bits, - dir_x_hot,dir_y_hot }, - { link_width,link_height,link_bits,link_mask_bits, - link_x_hot,link_y_hot}, - { app_width,app_height,app_bits,app_mask_bits, - app_x_hot,app_y_hot }, - { url_width,url_height,url_bits,url_mask_bits, - url_x_hot,url_y_hot }, - { mime_width,mime_height,mime_bits,mime_mask_bits, - mime_x_hot,mime_y_hot } -}; - -/* Local prototypes */ -int DndIsDragging(void); -void DndStartAction(Widget widget, - XtPointer data, - XEvent *event, - Boolean *p); -void DndPropertyHandler(Widget widget, - XtPointer data, - XEvent *event, - Boolean *p); - -/*======================================================== DndHandleDragging - * Takes care of the drag and drop process. Wait until the pointer had moved - * a little. Then takes control over the pointer until the buttons are - * released. After that send a Drag And Drop ClientMessage event. Returns - * non-zero if a drop did take place. - *===========================================================================*/ -int -DndHandleDragging(Widget widget,XEvent *event) -{ - XEvent Event; - Window root = RootWindowOfScreen(XtScreenOfObject(widget)); - XtAppContext app= XtWidgetToApplicationContext(widget); - Window DispatchWindow; - int DropX,DropY; - - if(Dragging) return 0; - - XUngrabPointer(dpy,CurrentTime); - /* Take control over the pointer */ - XGrabPointer(dpy,root,False, - ButtonMotionMask|ButtonPressMask|ButtonReleaseMask, - GrabModeSync,GrabModeAsync,root, - DndCursor[DataType].CursorID, - CurrentTime); - - /* Wait for button release */ - Dragging=1; RootFlag=0; - while(Dragging) - { - XAllowEvents(dpy,SyncPointer,CurrentTime); - XtAppNextEvent(app,&Event); - switch(Event.type) - { - case ButtonRelease: - if(Event.xbutton.subwindow) - RootFlag=0; - else - RootFlag=1; - Dragging=0; - break; - default: - XtDispatchEvent(&Event); - break; - } - } - DataOK=0; - /* Now release the pointer */ - XUngrabPointer(dpy,CurrentTime); - /* Try to guess if the drop occurred in the root window */ - if(!RootFlag) - { - Target=XmuClientWindow(dpy,Event.xbutton.subwindow); - if (Target==Event.xbutton.subwindow) - DispatchWindow=Target; - else - DispatchWindow=PointerWindow; - } - else - Target=DispatchWindow=XtWindow(MainWidget); - - /* Now build the event structure */ - DropX=Event.xbutton.x_root; - DropY=Event.xbutton.y_root; - Event.xclient.type = ClientMessage; - Event.xclient.display = dpy; - Event.xclient.message_type = DndProtocol; - Event.xclient.format = 32; - Event.xclient.window = Target; - Event.xclient.data.l[0] = DataType; - Event.xclient.data.l[1] = (long)event->xbutton.state; - Event.xclient.data.l[2] = (long)XtWindow(widget); - Event.xclient.data.l[3] = DropX + 65536L*(long)DropY; - Event.xclient.data.l[4] = 1; - - /* Send the drop message */ - XSendEvent(dpy,DispatchWindow,True,NoEventMask,&Event); - /* Send an old style version of the message just in case */ - Event.xclient.message_type = OldDndProtocol; - XSendEvent(dpy,DispatchWindow,True,NoEventMask,&Event); - -#ifdef DEBUG - fprintf(stderr,"ClientMessage sent to 0x%x(0x%x).\n", - DispatchWindow,Target); - fprintf(stderr,"The drop coordinates are (%d,%d).\n",DropX,DropY); -#endif - - return 1; -} - -/*=============================================================== DndIsIcon - * Return non-zero if the application is iconic (widget=toplevel) - *========================================================================*/ -int -DndIsIcon(Widget widget) -{ - Atom JunkAtom; - int JunkInt; - unsigned long WinState,JunkLong; - unsigned char *Property; - - XGetWindowProperty(dpy,XtWindow(widget),WM_STATE, - 0L,2L,False,AnyPropertyType, - &JunkAtom,&JunkInt,&WinState,&JunkLong, - &Property); - WinState=(unsigned long)(*((long*)Property)); - return (WinState==3); -} - -/*============================================================ DndInitialize - * Must be called anywhere before the top level widget creation and the - * main loop. Initialize global variables and bind the DndDispatch function - * to the top level widget. Creates the cursors to be used in drag actions. - *=========================================================================*/ -void -DndInitialize(Widget shell) -{ - int screen,i; - Colormap colormap; - Window root; - - dpy = XtDisplayOfObject(shell); - screen = DefaultScreen(dpy); - colormap= DefaultColormap(dpy,screen); - root = DefaultRootWindow(dpy); - - - Black.pixel=BlackPixel(dpy,screen); - White.pixel=WhitePixel(dpy,screen); - XQueryColor(dpy,colormap,&Black); - XQueryColor(dpy,colormap,&White); - - for(i=1;i!=DndEND;i++) - { - DndCursor[i].ImagePixmap= - XCreateBitmapFromData(dpy,root, - (char *) DndCursor[i].ImageData, - DndCursor[i].Width, - DndCursor[i].Height); - DndCursor[i].MaskPixmap= - XCreateBitmapFromData(dpy,root, - (char *) DndCursor[i].MaskData, - DndCursor[i].Width, - DndCursor[i].Height); - DndCursor[i].CursorID= - XCreatePixmapCursor(dpy,DndCursor[i].ImagePixmap, - DndCursor[i].MaskPixmap, - &Black,&White, - DndCursor[i].HotSpotX, - DndCursor[i].HotSpotY); - } - - DndCursor[0].CursorID=XCreateFontCursor(dpy,XC_question_arrow); - - /* These two are for older versions */ - OldDndProtocol=XInternAtom(dpy,"DndProtocol",FALSE); - OldDndSelection=XInternAtom(dpy,"DndSelection",FALSE); - /* Now the correct stuff */ - DndProtocol=XInternAtom(dpy,"_DND_PROTOCOL",FALSE); - DndSelection=XInternAtom(dpy,"_DND_SELECTION",FALSE); - - WM_STATE=XInternAtom(dpy,"WM_STATE",True); - Dragging=0; - DragPrecision=10; - RootFlag=0; - MainWidget=shell; -} - -int -DndIsDragging(void) -{ - return Dragging; -} - -/*================================================================= DndSetData - * Updates the selection data. - *===========================================================================*/ -void -DndSetData(int Type,unsigned char *Data,unsigned long Size) -{ - Window root = DefaultRootWindow(dpy); - int AuxSize; - unsigned char *AuxData; - unsigned long BackSize=Size; - - if (DataOK) return; - - /* Set the data type -- allow any type */ - DataType = Type; - - /* Set the data */ - AuxData = Data; - AuxSize = ( Size <= INT_MAX ? (int)Size : INT_MAX ); - XChangeProperty(dpy,root,DndSelection,XA_STRING,8, - PropModeReplace,Data,AuxSize); - for(Size-=(unsigned long)AuxSize;Size;Size-=(unsigned long)AuxSize) - { - Data+=AuxSize; - AuxSize = ( (Size<=(INT_MAX)) ? (int)Size : (INT_MAX) ); - XChangeProperty(dpy,root,DndSelection,XA_STRING,8, - PropModeAppend,Data,AuxSize); - } - - /* Set the data for old DND version */ - Size = BackSize; - AuxData = Data; - AuxSize = ( Size <= INT_MAX ? (int)Size : INT_MAX ); - XChangeProperty(dpy,root,OldDndSelection,XA_STRING,8, - PropModeReplace,Data,AuxSize); - for(Size-=(unsigned long)AuxSize;Size;Size-=(unsigned long)AuxSize) - { - Data+=AuxSize; - AuxSize = ( (Size<=(INT_MAX)) ? (int)Size : (INT_MAX) ); - XChangeProperty(dpy,root,OldDndSelection,XA_STRING,8, - PropModeAppend,Data,AuxSize); - } - - /* Everything is now ok */ - DataOK=1; -} - -/*================================================================== DndGetData - * Return a pointer to the current data. See HOWTO for more details. - *===========================================================================*/ -void -DndGetData(XEvent *event, unsigned char **Data,unsigned long *Size) -{ - Window root = DefaultRootWindow(dpy); - - Atom ActualType,ActualDndSelection; - int ActualFormat; - unsigned long RemainingBytes; - - ActualDndSelection=(DndProtocolVersion(event) == 0L ? - OldDndSelection : - DndSelection ); - - XGetWindowProperty(dpy,root,ActualDndSelection, - 0L,1000000L, - FALSE,AnyPropertyType, - &ActualType,&ActualFormat, - Size,&RemainingBytes, - Data); -} - -/*================================== DndDataType DndDragButtons DndSourceWidget - * - * Return information about the Dnd event received. If a non-dnd event is - * passed, the function DndDataType returns DndNotDnd, and the others - * return zero. - *===========================================================================*/ -int -DndDataType(XEvent *event) -{ - int Type; - - if(!DndIsDropMessage(event)) return DndNotDnd; - Type=(int)(event->xclient.data.l[0]); - if(Type>=DndEND) Type=DndUnknown; - return Type; -} - -int -DndDragButtons(XEvent *event) -{ - if(!DndIsDropMessage(event)) return 0; - return (int)(event->xclient.data.l[1]); -} - -Window -DndSourceWindow(XEvent *event) -{ - if(!DndIsDropMessage(event)) return 0; - if(DndProtocolVersion(event)<__DragAndDropH__) - /* We will try to do something about it, but nothing is certain */ - return XtWindow((Widget)(event->xclient.data.l[2])); - return (Window)(event->xclient.data.l[2]); -} - -void -DndDropRootCoordinates(XEvent *event,int *x,int *y) -{ - if(!DndIsDropMessage(event)) - { - *x=0; *y=0; - return; - } - - /* If it is an old protocol version we try to get the coordinates - using the current pointer position. Of course, the pointer may have - moved since the drop, but there's nothing we can do about it. - */ - if(DndProtocolVersion(event)<1L) - { - Window root_return,child_return; - int win_x_return,win_y_return; - unsigned int mask_return; - - XQueryPointer(dpy,DefaultRootWindow(dpy), - &root_return,&child_return,x,y, - &win_x_return,&win_y_return,&mask_return); - return; - } - /* Thanks god you are using a decent protocol version */ - *x=(int)((long)(event->xclient.data.l[3]) & 0xffff); - *y=(int)((long)(event->xclient.data.l[3])/65536); -} - -void -DndDropCoordinates(Widget widget,XEvent *event,int *x,int *y) -{ - int root_x,root_y; - Window child_return; - - DndDropRootCoordinates(event,&root_x,&root_y); - XTranslateCoordinates(dpy,DefaultRootWindow(dpy), - XtWindow(widget), - root_x,root_y, - x,y, - &child_return); -} - -long -DndProtocolVersion(XEvent *event) -{ - if(!DndIsDropMessage(event)) return -1L; - return event->xclient.data.l[4]; -} - -int -DndIsDropMessage(XEvent *event) -{ - if(event->xclient.type != ClientMessage) return 0; - if(event->xclient.message_type == OldDndProtocol && - event->xclient.data.l[4]==0) return 1; - if(event->xclient.message_type == DndProtocol) return 1; - return 0; -} - -void -DndChangeCursor(int Type,int width,int height,char *image,char *mask, - int hot_x,int hot_y) -{ - DndCursor[Type].ImagePixmap= - XCreateBitmapFromData(dpy,DefaultRootWindow(dpy), - image,width,height); - DndCursor[Type].MaskPixmap= - XCreateBitmapFromData(dpy,DefaultRootWindow(dpy), - mask,width,height); - DndCursor[Type].CursorID= - XCreatePixmapCursor(dpy,DndCursor[Type].ImagePixmap, - DndCursor[Type].MaskPixmap, - &Black,&White, - hot_x,hot_y); -}
--- a/src/offix.h Sat Dec 19 18:10:20 2009 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ -/* -This is a modified DND 1.0 library which does not depend on Xt -event handling. -Modifications Copyright (c) 1997 Oliver Graf <ograf@fga.de> - -Original DND lib -Copyright (C) 1996 César Crusius - -This file is part of the DND Library. This library is free -software; you can redistribute it and/or modify it under the terms of -the GNU Library General Public License as published by the Free -Software Foundation; either version 2 of the License, or (at your -option) any later version. This library is distributed in the hope -that it will be useful, but WITHOUT ANY WARRANTY; without even the -implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -PURPOSE. See the GNU Library General Public License for more details. -You should have received a copy of the GNU Library General Public -License along with this library; if not, write to the Free Software -Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. -*/ - -#ifndef __DragAndDropH__ -#define __DragAndDropH__ 1L - -/* The standard DND types are defined here */ -#include "offix-types.h" - -/* Xt stuff is defined here */ -#include "xintrinsic.h" - -void DndInitialize(Widget shell); - -int -DndHandleDragging(Widget widget, - XEvent* event); - -void DndSetData(int Type, unsigned char *Data, unsigned long Size); -void DndGetData(XEvent *event, unsigned char **Data, unsigned long *Size); - -int DndIsIcon(Widget widget); -int DndDataType(XEvent *event); -int DndDragButtons(XEvent *event); -Window DndSourceWindow(XEvent *event); - -void -DndDropCoordinates(Widget widget, - XEvent *event, - int *x, - int *y); -void -DndDropRootCoordinates(XEvent *event, - int *x, - int *y); - -long -DndProtocolVersion(XEvent *event); - -int -DndIsDropMessage(XEvent *event); - -void -DndChangeCursor(int Type, - int width,int height, - char *image,char *mask, - int hot_x,int hot_y); -#endif - -
--- a/src/text.h Sat Dec 19 18:10:20 2009 +0000 +++ b/src/text.h Thu Dec 31 15:47:03 2009 +0000 @@ -3111,7 +3111,6 @@ /* !!#### Verify these! */ #define Qxt_widget_arg_encoding Qnative #define Qdt_dnd_encoding Qnative -#define Qoffix_dnd_encoding Qnative /* RedHat 6.2 contains a locale called "Francais" with the C-cedilla encoded in ISO2022! */ @@ -3119,9 +3118,6 @@ #define Qstrerror_encoding Qnative -/* Encoding for strings coming from Offix drag-n-drop */ -#define Qoffix_dnd_encoding Qnative - /* !!#### This exists to remind us that our hexify routine is totally un-Muleized. */ #define Qdnd_hexify_encoding Qascii
--- a/tests/ChangeLog Sat Dec 19 18:10:20 2009 +0000 +++ b/tests/ChangeLog Thu Dec 31 15:47:03 2009 +0000 @@ -1,3 +1,18 @@ +2009-12-31 Aidan Kehoe <kehoea@parhasard.net> + + * automated/lisp-tests.el: + Test much of the functionality of equalp; add a pointer to Paul + Dietz' ANSI test suite for this function, converted to Emacs + Lisp. Not including the tests themselves in XEmacs because who + owns the copyright on the files is unclear and the GCL people + didn't respond to my queries. + +2009-12-21 Jerry James <james@xemacs.org> + + * Dnd/README: Remove references to OffiX drag-and-drop. + * Dnd/droptest.el (start-drag): Remove OffiX support. + (start-region-drag): Ditto. + 2009-12-18 Jerry James <james@xemacs.org> * glyph-test.el: Add copyright and GPL v2 or later header with
--- a/tests/Dnd/README Sat Dec 19 18:10:20 2009 +0000 +++ b/tests/Dnd/README Thu Dec 31 15:47:03 2009 +0000 @@ -9,14 +9,8 @@ 3) Try to do some internal DnD by using the sources and targets in the new buffer 4) Do some external DnD: - 4a) OffiX: use files and editor of OffiX - drag something from files or editor into XEmacs - drag something from XEmacs to xv (only with OffiX patch, - editor or files -- files can only move and copy within - itself, cause OffiX is not quite the right thing to do) - 4b) CDE: use dtfile and dtpad instead, but here everything should - work. - 4c) MSWindows: well, explorer should do. But only file data + 4a) CDE: use dtfile and dtpad + 4b) MSWindows: well, explorer should do. But only file data should work, and I don't know if the test already handles this.
--- a/tests/Dnd/droptest.el Sat Dec 19 18:10:20 2009 +0000 +++ b/tests/Dnd/droptest.el Thu Dec 31 15:47:03 2009 +0000 @@ -13,11 +13,7 @@ (defun start-drag (event what &optional typ) ;; short drag interface, until the real one is implemented - (cond ((featurep 'offix) - (if (numberp typ) - (offix-start-drag event what typ) - (offix-start-drag event what))) - ((featurep 'cde) + (cond ((featurep 'cde) (if (not typ) (funcall (intern "cde-start-drag-internal") event nil (list what)) (funcall (intern "cde-start-drag-internal") event t what))) @@ -27,16 +23,11 @@ (interactive "_e") (if (click-inside-extent-p event zmacs-region-extent) ;; okay, this is a drag - (cond ((featurep 'offix) - (offix-start-drag-region event - (extent-start-position zmacs-region-extent) - (extent-end-position zmacs-region-extent))) - ((featurep 'cde) - ;; should also work with CDE + (cond ((featurep 'cde) (cde-start-drag-region event (extent-start-position zmacs-region-extent) (extent-end-position zmacs-region-extent))) - (t (error "No offix or CDE support compiled in"))))) + (t (error "No CDE support compiled in"))))) (defun make-drop-targets () (let ((buf (get-buffer-create "*DND misc-user extent test buffer*"))
--- a/tests/automated/lisp-tests.el Sat Dec 19 18:10:20 2009 +0000 +++ b/tests/automated/lisp-tests.el Thu Dec 31 15:47:03 2009 +0000 @@ -2085,14 +2085,81 @@ (* three one-four-one-five-nine))) "checking letf handles #'values in a basic sense")) -(Assert (equalp "hi there" "Hi There") - "checking equalp isn't case-sensitive") -(Assert (equalp 99 99.0) - "checking equalp compares numerical values of different types") -(Assert (null (equalp 99 ?c)) - "checking equalp does not convert characters to numbers") -;; Fixed in Hg d0ea57eb3de4. -(Assert (null (equalp "hi there" [hi there])) - "checking equalp doesn't error with string and non-string") +;; #'equalp tests. +(let ((string-variable "aBcDeeFgH\u00Edj") + (eacute-character ?\u00E9) + (Eacute-character ?\u00c9) + (+base-chars+ (loop + with res = (make-string 96 ?\x20) + for int-char from #x20 to #x7f + for char being each element in-ref res + do (setf char (int-to-char int-char)) + finally return res))) + (Assert (equalp "hi there" "Hi There") + "checking equalp isn't case-sensitive") + (Assert (equalp 99 99.0) + "checking equalp compares numerical values of different types") + (Assert (null (equalp 99 ?c)) + "checking equalp does not convert characters to numbers") + ;; Fixed in Hg d0ea57eb3de4. + (Assert (null (equalp "hi there" [hi there])) + "checking equalp doesn't error with string and non-string") + (Assert (eq t (equalp "ABCDEEFGH\u00CDJ" string-variable)) + "checking #'equalp is case-insensitive with an upcased constant") + (Assert (eq t (equalp "abcdeefgh\xedj" string-variable)) + "checking #'equalp is case-insensitive with a downcased constant") + (Assert (eq t (equalp string-variable string-variable)) + "checking #'equalp works when handed the same string twice") + (Assert (eq t (equalp string-variable "aBcDeeFgH\u00Edj")) + "check #'equalp is case-insensitive with a variable-cased constant") + (Assert (eq t (equalp "" (bit-vector))) + "check empty string and empty bit-vector are #'equalp.") + (Assert (eq t (equalp (string) (bit-vector))) + "check empty string and empty bit-vector are #'equalp, no constants") + (Assert (eq t (equalp "hi there" (vector ?h ?i ?\ ?t ?h ?e ?r ?e))) + "check string and vector with same contents #'equalp") + (Assert (eq t (equalp (string ?h ?i ?\ ?t ?h ?e ?r ?e) + (vector ?h ?i ?\ ?t ?h ?e ?r ?e))) + "check string and vector with same contents #'equalp, no constants") + (Assert (eq t (equalp [?h ?i ?\ ?t ?h ?e ?r ?e] + (string ?h ?i ?\ ?t ?h ?e ?r ?e))) + "check string and vector with same contents #'equalp, vector constant") + (Assert (eq t (equalp [0 1.0 0.0 0 1] + (bit-vector 0 1 0 0 1))) + "check vector and bit-vector with same contents #'equalp,\ + vector constant") + (Assert (eq t (equalp #*01001 + (vector 0 1.0 0.0 0 1))) + "check vector and bit-vector with same contents #'equalp,\ + bit-vector constant") + (Assert (eq t (equalp ?\u00E9 Eacute-character)) + "checking characters are case-insensitive, one constant") + (Assert (eq nil (equalp ?\u00E9 (aref (format "%c" ?a) 0))) + "checking distinct characters are not equalp, one constant") + (Assert (eq t (equalp t (and))) + "checking symbols are correctly #'equalp") + (Assert (eq nil (equalp t (or nil '#:t))) + "checking distinct symbols with the same name are not #'equalp") + (Assert (eq t (equalp #s(char-table type generic data (?\u0080 "hi-there")) + (let ((aragh (make-char-table 'generic))) + (put-char-table ?\u0080 "hi-there" aragh) + aragh))) + "checking #'equalp succeeds correctly, char-tables") + (Assert (eq nil (equalp #s(char-table type generic data (?\u0080 "hi-there")) + (let ((aragh (make-char-table 'generic))) + (put-char-table ?\u0080 "HI-THERE" aragh) + aragh))) + "checking #'equalp fails correctly, char-tables")) + +;; There are more tests available for equalp here: +;; +;; http://www.parhasard.net/xemacs/equalp-tests.el +;; +;; They are taken from Paul Dietz' GCL ANSI test suite, licensed under the +;; LGPL and part of GNU Common Lisp; the GCL people didn't respond to +;; several requests for information on who owned the copyright for the +;; files, so I haven't included the tests with XEmacs. Anyone doing XEmacs +;; development on equalp should still run them, though. Aidan Kehoe, Thu Dec +;; 31 14:53:52 GMT 2009. ;;; end of lisp-tests.el