Mercurial > hg > xemacs-beta
comparison src/event-Xt.c @ 788:026c5bf9c134
[xemacs-hg @ 2002-03-21 07:29:57 by ben]
chartab.c: Fix bugs in implementation and doc strings.
config.h.in: Add foo_checking_assert_at_line() macros. Not clear whether these
are actually useful, though; I'll take them out if not.
symsinit.h, emacs.c: Some improvements to the timeline. Rearrange a bit the init
calls. Add call for reinit_vars_of_object_mswindows() and
declare in symsinit.h.
event-Xt.c, event-gtk.c, event-msw.c, event-stream.c, event-tty.c, events.c, events.h: Introduce new event methods for printing, comparing, and hashing
magic events, to avoid event-type-specific stuff that had crept
into events.c. (And was crashing, since the channel in MS Windows
magic events may be nil.) Implement the methods in
event-{tty,gtk,Xt,mswindows}.c. Make wrapping functions
event_stream_{compare,hash,format}_magic_event() to check if
everything's OK and call the actual callback. Fix events.c to use
the new methods. Add a new event-stream-operation
EVENT_STREAM_NOTHING -- event stream not actually required to be
able to do anything, just be open. (#### This
event-stream-operation stuff needs to be rethought.)
Fixed describe_event() in event-Xt.c to print its output to a
stream, not always to stderr, so it can be used
elsewhere. (e.g. in print-event when a magic event is
encountered?)
lisp.h, lrecord.h: Define new assert_at_line(), for use in asserts inside of inline
functions. The assert will report the line and file of the inline
function, which is almost certainly not what you want as it's
useless. what you want to see is where the pseudo-macro was
called from. So, when error-checking is on, we pass in the line
and file into the macros, for accurate printout using
assert_at_line(). Happens only when error-checking is defined so
doesn't slow down non-error-checking builds. Fix XCHAR, XINT,
XCHAR_OR_INT, XFOO, and wrap_foo() in this fashion.
lstream.c, lstream.h: Add resizing_buffer_to_lisp_string().
objects-gtk.c: Fix typo.
objects-msw.c: Implement a smarter way of determining whether a font matches a
charset. Formerly we just looked at the "script" element of the
font spec, converted it to a code page, and compared it with the
code page derived from the charset. Now, as well as doing this,
we ask the font for the list of unicode ranges it supports, see
what range the charset falls into (#### bogus! need to do this
char-by-char), and see if any of the font's supported ranges
include the charset's range. also do some caching in
Vfont_signature_data of previous inquiries.
charset.h, text.c, mule-charset.c: New fun; extracted out of
Fmake_char() and declare prototype in charset.h.
text.h: introduce assert_by_line() to make
REP_BYTES_BY_FIRST_BYTE report the file and line more accurately
in an assertion failure.
unicode.c: make non-static (used in objects-msw.c), declare in charset.h.
mule\mule-category.el: Start implementing a category API compatible with FSF. Not there yet.
We need improvements to char-tables.
mule\mule-charset.el: Copy translation table code from FSF 21.1 and fix up. Eventually
we'll have them in XEmacs. (used in ccl) Not here quite yet, and
we need some improvements to char-tables.
mule\cyril-util.el, mule\cyrillic.el, mule\devan-util.el, mule\ethio-util.el, mule\korea-util.el, mule\mule-tty-init.el, mule\tibet-util.el, mule\viet-util.el, mule\vietnamese.el: Fix numerous compilation warnings. Fix up code related to
translation tables and other types of char-tables.
menubar-items.el: Move the frame commands from
the View menu to the File menu, to be consistent with how most other
programs do things. Move less-used revert/recover items to a submenu.
Make "recover" not prompt for a file, but recover the current buffer.
TODO.ben-mule-21-5: Create bug list for latest problems.
author | ben |
---|---|
date | Thu, 21 Mar 2002 07:31:30 +0000 |
parents | 943eaba38521 |
children | e38acbeb1cae |
comparison
equal
deleted
inserted
replaced
787:242b62e9fc59 | 788:026c5bf9c134 |
---|---|
1 /* The event_stream interface for X11 with Xt, and/or tty frames. | 1 /* The event_stream interface for X11 with Xt, and/or tty frames. |
2 Copyright (C) 1991-5, 1997 Free Software Foundation, Inc. | 2 Copyright (C) 1991-5, 1997 Free Software Foundation, Inc. |
3 Copyright (C) 1995 Sun Microsystems, Inc. | 3 Copyright (C) 1995 Sun Microsystems, Inc. |
4 Copyright (C) 1996, 2001 Ben Wing. | 4 Copyright (C) 1996, 2001, 2002 Ben Wing. |
5 | 5 |
6 This file is part of XEmacs. | 6 This file is part of XEmacs. |
7 | 7 |
8 XEmacs is free software; you can redistribute it and/or modify it | 8 XEmacs is free software; you can redistribute it and/or modify it |
9 under the terms of the GNU General Public License as published by the | 9 under the terms of the GNU General Public License as published by the |
1866 /* We rely on SIGIO and friends to realise we have generated an | 1866 /* We rely on SIGIO and friends to realise we have generated an |
1867 event. */ | 1867 event. */ |
1868 } | 1868 } |
1869 | 1869 |
1870 static void | 1870 static void |
1871 emacs_Xt_format_magic_event (Lisp_Event *event, Lisp_Object pstream) | |
1872 { | |
1873 Lisp_Object console = CDFW_CONSOLE (EVENT_CHANNEL (event)); | |
1874 if (CONSOLE_X_P (XCONSOLE (console))) | |
1875 write_c_string (x_event_name (event->event.magic.underlying_x_event.type), | |
1876 pstream); | |
1877 } | |
1878 | |
1879 static int | |
1880 emacs_Xt_compare_magic_event (Lisp_Event *e1, Lisp_Event *e2) | |
1881 { | |
1882 if (CONSOLE_X_P (XCONSOLE (CDFW_CONSOLE (EVENT_CHANNEL (e1)))) && | |
1883 CONSOLE_X_P (XCONSOLE (CDFW_CONSOLE (EVENT_CHANNEL (e2))))) | |
1884 return (e1->event.magic.underlying_x_event.xany.serial == | |
1885 e2->event.magic.underlying_x_event.xany.serial); | |
1886 if (CONSOLE_X_P (XCONSOLE (CDFW_CONSOLE (EVENT_CHANNEL (e1)))) || | |
1887 CONSOLE_X_P (XCONSOLE (CDFW_CONSOLE (EVENT_CHANNEL (e2))))) | |
1888 return 0; | |
1889 return 1; | |
1890 } | |
1891 | |
1892 static Hashcode | |
1893 emacs_Xt_hash_magic_event (Lisp_Event *e) | |
1894 { | |
1895 Lisp_Object console = CDFW_CONSOLE (EVENT_CHANNEL (e)); | |
1896 if (CONSOLE_X_P (XCONSOLE (console))) | |
1897 return e->event.magic.underlying_x_event.xany.serial; | |
1898 return 0; | |
1899 } | |
1900 | |
1901 static void | |
1871 emacs_Xt_handle_magic_event (Lisp_Event *emacs_event) | 1902 emacs_Xt_handle_magic_event (Lisp_Event *emacs_event) |
1872 { | 1903 { |
1873 /* This function can GC */ | 1904 /* This function can GC */ |
1874 XEvent *event = &emacs_event->event.magic.underlying_x_event; | 1905 XEvent *event = &emacs_event->event.magic.underlying_x_event; |
1875 struct frame *f = XFRAME (EVENT_CHANNEL (emacs_event)); | 1906 struct frame *f = XFRAME (EVENT_CHANNEL (emacs_event)); |
2433 #ifdef DEBUG_XEMACS | 2464 #ifdef DEBUG_XEMACS |
2434 #include "xintrinsicp.h" /* only describe_event() needs this */ | 2465 #include "xintrinsicp.h" /* only describe_event() needs this */ |
2435 #include <X11/Xproto.h> /* only describe_event() needs this */ | 2466 #include <X11/Xproto.h> /* only describe_event() needs this */ |
2436 | 2467 |
2437 static void | 2468 static void |
2438 describe_event_window (Window window, Display *display) | 2469 describe_event_window (Window window, Display *display, Lisp_Object pstream) |
2439 { | 2470 { |
2440 struct frame *f; | 2471 struct frame *f; |
2441 Widget w; | 2472 Widget w; |
2442 stderr_out (" window: 0x%lx", (unsigned long) window); | 2473 write_fmt_string (pstream, " window: 0x%lx", (unsigned long) window); |
2443 w = XtWindowToWidget (display, window); | 2474 w = XtWindowToWidget (display, window); |
2444 if (w) | 2475 if (w) |
2445 stderr_out (" %s", w->core.widget_class->core_class.class_name); | 2476 write_fmt_string (pstream, " %s", |
2477 w->core.widget_class->core_class.class_name); | |
2446 f = x_any_window_to_frame (get_device_from_display (display), window); | 2478 f = x_any_window_to_frame (get_device_from_display (display), window); |
2447 if (f) | 2479 if (f) |
2448 stderr_out_lisp (" \"%s\"", 1, f->name); | 2480 write_fmt_string_lisp (pstream, " \"%s\"", 1, f->name); |
2449 stderr_out ("\n"); | 2481 write_fmt_string (pstream, "\n"); |
2450 } | 2482 } |
2451 | 2483 |
2452 static const char * | 2484 static const char * |
2453 XEvent_mode_to_string (int mode) | 2485 XEvent_mode_to_string (int mode) |
2454 { | 2486 { |
2489 default: return "???"; | 2521 default: return "???"; |
2490 } | 2522 } |
2491 } | 2523 } |
2492 | 2524 |
2493 static void | 2525 static void |
2494 describe_event (XEvent *event) | 2526 describe_event (XEvent *event, Lisp_Object pstream) |
2495 { | 2527 { |
2496 char buf[100]; | 2528 char buf[100]; |
2497 struct device *d = get_device_from_display (event->xany.display); | 2529 struct device *d = get_device_from_display (event->xany.display); |
2498 | 2530 |
2499 sprintf (buf, "%s%s", x_event_name (event->type), | 2531 sprintf (buf, "%s%s", x_event_name (event->type), |
2500 event->xany.send_event ? " (send)" : ""); | 2532 event->xany.send_event ? " (send)" : ""); |
2501 stderr_out ("%-30s", buf); | 2533 write_fmt_string (pstream, "%-30s", buf); |
2502 switch (event->type) | 2534 switch (event->type) |
2503 { | 2535 { |
2504 case FocusIn: | 2536 case FocusIn: |
2505 case FocusOut: | 2537 case FocusOut: |
2506 { | 2538 { |
2507 XFocusChangeEvent *ev = &event->xfocus; | 2539 XFocusChangeEvent *ev = &event->xfocus; |
2508 describe_event_window (ev->window, ev->display); | 2540 describe_event_window (ev->window, ev->display, pstream); |
2509 stderr_out (" mode: %s\n", XEvent_mode_to_string (ev->mode)); | 2541 write_fmt_string (pstream, " mode: %s\n", |
2510 stderr_out (" detail: %s\n", XEvent_detail_to_string(ev->detail)); | 2542 XEvent_mode_to_string (ev->mode)); |
2543 write_fmt_string (pstream, " detail: %s\n", | |
2544 XEvent_detail_to_string (ev->detail)); | |
2511 break; | 2545 break; |
2512 } | 2546 } |
2513 | 2547 |
2514 case KeyPress: | 2548 case KeyPress: |
2515 { | 2549 { |
2516 XKeyEvent *ev = &event->xkey; | 2550 XKeyEvent *ev = &event->xkey; |
2517 unsigned int state = ev->state; | 2551 unsigned int state = ev->state; |
2518 | 2552 |
2519 describe_event_window (ev->window, ev->display); | 2553 describe_event_window (ev->window, ev->display, pstream); |
2520 stderr_out (" subwindow: %ld\n", ev->subwindow); | 2554 write_fmt_string (pstream, " subwindow: %ld\n", ev->subwindow); |
2521 stderr_out (" state: "); | 2555 write_fmt_string (pstream, " state: "); |
2522 /* Complete list of modifier key masks */ | 2556 /* Complete list of modifier key masks */ |
2523 if (state & ShiftMask) stderr_out ("Shift "); | 2557 if (state & ShiftMask) write_fmt_string (pstream, "Shift "); |
2524 if (state & LockMask) stderr_out ("Lock "); | 2558 if (state & LockMask) write_fmt_string (pstream, "Lock "); |
2525 if (state & ControlMask) stderr_out ("Control "); | 2559 if (state & ControlMask) write_fmt_string (pstream, "Control "); |
2526 if (state & Mod1Mask) stderr_out ("Mod1 "); | 2560 if (state & Mod1Mask) write_fmt_string (pstream, "Mod1 "); |
2527 if (state & Mod2Mask) stderr_out ("Mod2 "); | 2561 if (state & Mod2Mask) write_fmt_string (pstream, "Mod2 "); |
2528 if (state & Mod3Mask) stderr_out ("Mod3 "); | 2562 if (state & Mod3Mask) write_fmt_string (pstream, "Mod3 "); |
2529 if (state & Mod4Mask) stderr_out ("Mod4 "); | 2563 if (state & Mod4Mask) write_fmt_string (pstream, "Mod4 "); |
2530 if (state & Mod5Mask) stderr_out ("Mod5 "); | 2564 if (state & Mod5Mask) write_fmt_string (pstream, "Mod5 "); |
2531 | 2565 |
2532 if (! state) | 2566 if (! state) |
2533 stderr_out ("vanilla\n"); | 2567 write_fmt_string (pstream, "vanilla\n"); |
2534 else | 2568 else |
2535 stderr_out ("\n"); | 2569 write_fmt_string (pstream, "\n"); |
2536 if (x_key_is_modifier_p (ev->keycode, d)) | 2570 if (x_key_is_modifier_p (ev->keycode, d)) |
2537 stderr_out (" Modifier key"); | 2571 write_fmt_string (pstream, " Modifier key"); |
2538 stderr_out (" keycode: 0x%x\n", ev->keycode); | 2572 write_fmt_string (pstream, " keycode: 0x%x\n", ev->keycode); |
2539 } | 2573 } |
2540 break; | 2574 break; |
2541 | 2575 |
2542 case Expose: | 2576 case Expose: |
2543 if (debug_x_events > 1) | 2577 if (debug_x_events > 1) |
2544 { | 2578 { |
2545 XExposeEvent *ev = &event->xexpose; | 2579 XExposeEvent *ev = &event->xexpose; |
2546 describe_event_window (ev->window, ev->display); | 2580 describe_event_window (ev->window, ev->display, pstream); |
2547 stderr_out (" region: x=%d y=%d width=%d height=%d\n", | 2581 write_fmt_string (pstream, |
2582 " region: x=%d y=%d width=%d height=%d\n", | |
2548 ev->x, ev->y, ev->width, ev->height); | 2583 ev->x, ev->y, ev->width, ev->height); |
2549 stderr_out (" count: %d\n", ev->count); | 2584 write_fmt_string (pstream, " count: %d\n", ev->count); |
2550 } | 2585 } |
2551 else | 2586 else |
2552 stderr_out ("\n"); | 2587 write_fmt_string (pstream, "\n"); |
2553 break; | 2588 break; |
2554 | 2589 |
2555 case GraphicsExpose: | 2590 case GraphicsExpose: |
2556 if (debug_x_events > 1) | 2591 if (debug_x_events > 1) |
2557 { | 2592 { |
2558 XGraphicsExposeEvent *ev = &event->xgraphicsexpose; | 2593 XGraphicsExposeEvent *ev = &event->xgraphicsexpose; |
2559 describe_event_window (ev->drawable, ev->display); | 2594 describe_event_window (ev->drawable, ev->display, pstream); |
2560 stderr_out (" major: %s\n", | 2595 write_fmt_string (pstream, " major: %s\n", |
2561 (ev ->major_code == X_CopyArea ? "CopyArea" : | 2596 (ev ->major_code == X_CopyArea ? "CopyArea" : |
2562 (ev->major_code == X_CopyPlane ? "CopyPlane" : "?"))); | 2597 (ev->major_code == X_CopyPlane ? "CopyPlane" : "?"))); |
2563 stderr_out (" region: x=%d y=%d width=%d height=%d\n", | 2598 write_fmt_string (pstream, |
2599 " region: x=%d y=%d width=%d height=%d\n", | |
2564 ev->x, ev->y, ev->width, ev->height); | 2600 ev->x, ev->y, ev->width, ev->height); |
2565 stderr_out (" count: %d\n", ev->count); | 2601 write_fmt_string (pstream, " count: %d\n", ev->count); |
2566 } | 2602 } |
2567 else | 2603 else |
2568 stderr_out ("\n"); | 2604 write_fmt_string (pstream, "\n"); |
2569 break; | 2605 break; |
2570 | 2606 |
2571 case EnterNotify: | 2607 case EnterNotify: |
2572 case LeaveNotify: | 2608 case LeaveNotify: |
2573 if (debug_x_events > 1) | 2609 if (debug_x_events > 1) |
2574 { | 2610 { |
2575 XCrossingEvent *ev = &event->xcrossing; | 2611 XCrossingEvent *ev = &event->xcrossing; |
2576 describe_event_window (ev->window, ev->display); | 2612 describe_event_window (ev->window, ev->display, pstream); |
2577 #if 0 | 2613 #if 0 |
2578 stderr_out(" subwindow: 0x%x\n", ev->subwindow); | 2614 write_fmt_string (pstream, " subwindow: 0x%x\n", ev->subwindow); |
2579 stderr_out(" pos: %d %d\n", ev->x, ev->y); | 2615 write_fmt_string (pstream, " pos: %d %d\n", ev->x, ev->y); |
2580 stderr_out(" root pos: %d %d\n", ev->x_root, ev->y_root); | 2616 write_fmt_string (pstream, " root pos: %d %d\n", ev->x_root, |
2617 ev->y_root); | |
2581 #endif | 2618 #endif |
2582 stderr_out(" mode: %s\n", XEvent_mode_to_string(ev->mode)); | 2619 write_fmt_string (pstream, " mode: %s\n", |
2583 stderr_out(" detail: %s\n", XEvent_detail_to_string(ev->detail)); | 2620 XEvent_mode_to_string(ev->mode)); |
2584 stderr_out(" focus: %d\n", ev->focus); | 2621 write_fmt_string (pstream, " detail: %s\n", |
2622 XEvent_detail_to_string(ev->detail)); | |
2623 write_fmt_string (pstream, " focus: %d\n", ev->focus); | |
2585 #if 0 | 2624 #if 0 |
2586 stderr_out(" state: 0x%x\n", ev->state); | 2625 write_fmt_string (pstream, " state: 0x%x\n", ev->state); |
2587 #endif | 2626 #endif |
2588 } | 2627 } |
2589 else | 2628 else |
2590 stderr_out("\n"); | 2629 write_fmt_string (pstream, "\n"); |
2591 break; | 2630 break; |
2592 | 2631 |
2593 case ConfigureNotify: | 2632 case ConfigureNotify: |
2594 if (debug_x_events > 1) | 2633 if (debug_x_events > 1) |
2595 { | 2634 { |
2596 XConfigureEvent *ev = &event->xconfigure; | 2635 XConfigureEvent *ev = &event->xconfigure; |
2597 describe_event_window (ev->window, ev->display); | 2636 describe_event_window (ev->window, ev->display, pstream); |
2598 stderr_out(" above: 0x%lx\n", ev->above); | 2637 write_fmt_string (pstream, " above: 0x%lx\n", ev->above); |
2599 stderr_out(" size: %d %d %d %d\n", ev->x, ev->y, | 2638 write_fmt_string (pstream, " size: %d %d %d %d\n", ev->x, ev->y, |
2600 ev->width, ev->height); | 2639 ev->width, ev->height); |
2601 stderr_out(" redirect: %d\n", ev->override_redirect); | 2640 write_fmt_string (pstream, " redirect: %d\n", |
2641 ev->override_redirect); | |
2602 } | 2642 } |
2603 else | 2643 else |
2604 stderr_out("\n"); | 2644 write_fmt_string (pstream, "\n"); |
2605 break; | 2645 break; |
2606 | 2646 |
2607 case VisibilityNotify: | 2647 case VisibilityNotify: |
2608 if (debug_x_events > 1) | 2648 if (debug_x_events > 1) |
2609 { | 2649 { |
2610 XVisibilityEvent *ev = &event->xvisibility; | 2650 XVisibilityEvent *ev = &event->xvisibility; |
2611 describe_event_window (ev->window, ev->display); | 2651 describe_event_window (ev->window, ev->display, pstream); |
2612 stderr_out(" state: %s\n", XEvent_visibility_to_string(ev->state)); | 2652 write_fmt_string (pstream, " state: %s\n", |
2653 XEvent_visibility_to_string (ev->state)); | |
2613 } | 2654 } |
2614 else | 2655 else |
2615 stderr_out ("\n"); | 2656 write_fmt_string (pstream, "\n"); |
2616 break; | 2657 break; |
2617 | 2658 |
2618 case ClientMessage: | 2659 case ClientMessage: |
2619 { | 2660 { |
2620 XClientMessageEvent *ev = &event->xclient; | 2661 XClientMessageEvent *ev = &event->xclient; |
2621 char *name = XGetAtomName (ev->display, ev->message_type); | 2662 char *name = XGetAtomName (ev->display, ev->message_type); |
2622 stderr_out ("%s", name); | 2663 write_fmt_string (pstream, "%s", name); |
2623 if (!strcmp (name, "WM_PROTOCOLS")) { | 2664 if (!strcmp (name, "WM_PROTOCOLS")) |
2624 char *protname = XGetAtomName (ev->display, ev->data.l[0]); | 2665 { |
2625 stderr_out ("(%s)", protname); | 2666 char *protname = XGetAtomName (ev->display, ev->data.l[0]); |
2626 XFree (protname); | 2667 write_fmt_string (pstream, "(%s)", protname); |
2627 } | 2668 XFree (protname); |
2669 } | |
2628 XFree (name); | 2670 XFree (name); |
2629 stderr_out ("\n"); | 2671 write_fmt_string (pstream, "\n"); |
2630 break; | 2672 break; |
2631 } | 2673 } |
2632 | 2674 |
2633 default: | 2675 default: |
2634 stderr_out ("\n"); | 2676 write_fmt_string (pstream, "\n"); |
2635 break; | 2677 break; |
2636 } | 2678 } |
2637 | 2679 |
2638 fflush (stdout); | 2680 fflush (stdout); |
2639 } | 2681 } |
2767 { | 2809 { |
2768 Lisp_Object emacs_event = Fmake_event (Qnil, Qnil); | 2810 Lisp_Object emacs_event = Fmake_event (Qnil, Qnil); |
2769 | 2811 |
2770 #ifdef DEBUG_XEMACS | 2812 #ifdef DEBUG_XEMACS |
2771 if (debug_x_events > 0) | 2813 if (debug_x_events > 0) |
2772 { | 2814 describe_event (event, Qexternal_debugging_output); |
2773 describe_event (event); | |
2774 } | |
2775 #endif /* DEBUG_XEMACS */ | 2815 #endif /* DEBUG_XEMACS */ |
2776 if (x_event_to_emacs_event (event, XEVENT (emacs_event))) | 2816 if (x_event_to_emacs_event (event, XEVENT (emacs_event))) |
2777 enqueue_Xt_dispatch_event (emacs_event); | 2817 enqueue_Xt_dispatch_event (emacs_event); |
2778 else | 2818 else |
2779 Fdeallocate_event (emacs_event); | 2819 Fdeallocate_event (emacs_event); |
3284 Xt_event_stream = xnew (struct event_stream); | 3324 Xt_event_stream = xnew (struct event_stream); |
3285 Xt_event_stream->event_pending_p = emacs_Xt_event_pending_p; | 3325 Xt_event_stream->event_pending_p = emacs_Xt_event_pending_p; |
3286 Xt_event_stream->force_event_pending = emacs_Xt_force_event_pending; | 3326 Xt_event_stream->force_event_pending = emacs_Xt_force_event_pending; |
3287 Xt_event_stream->next_event_cb = emacs_Xt_next_event; | 3327 Xt_event_stream->next_event_cb = emacs_Xt_next_event; |
3288 Xt_event_stream->handle_magic_event_cb = emacs_Xt_handle_magic_event; | 3328 Xt_event_stream->handle_magic_event_cb = emacs_Xt_handle_magic_event; |
3329 Xt_event_stream->format_magic_event_cb = emacs_Xt_format_magic_event; | |
3330 Xt_event_stream->compare_magic_event_cb= emacs_Xt_compare_magic_event; | |
3331 Xt_event_stream->hash_magic_event_cb = emacs_Xt_hash_magic_event; | |
3289 Xt_event_stream->add_timeout_cb = emacs_Xt_add_timeout; | 3332 Xt_event_stream->add_timeout_cb = emacs_Xt_add_timeout; |
3290 Xt_event_stream->remove_timeout_cb = emacs_Xt_remove_timeout; | 3333 Xt_event_stream->remove_timeout_cb = emacs_Xt_remove_timeout; |
3291 Xt_event_stream->select_console_cb = emacs_Xt_select_console; | 3334 Xt_event_stream->select_console_cb = emacs_Xt_select_console; |
3292 Xt_event_stream->unselect_console_cb = emacs_Xt_unselect_console; | 3335 Xt_event_stream->unselect_console_cb = emacs_Xt_unselect_console; |
3293 Xt_event_stream->select_process_cb = emacs_Xt_select_process; | 3336 Xt_event_stream->select_process_cb = emacs_Xt_select_process; |