aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDave Love2002-10-31 17:59:30 +0000
committerDave Love2002-10-31 17:59:30 +0000
commit560d7ceb94923d12a2863a7f1ba1a953d49049ec (patch)
tree072931437775e74fea8ad56a6bde7e6e311797e6 /src
parent296b92467f24d14d61dfadbc0e193ff6c35beee8 (diff)
downloademacs-560d7ceb94923d12a2863a7f1ba1a953d49049ec.tar.gz
emacs-560d7ceb94923d12a2863a7f1ba1a953d49049ec.zip
(XTread_socket): Fix last change.
(xaw_scroll_callback): Cast call_data to long to avoid warning.
Diffstat (limited to 'src')
-rw-r--r--src/xterm.c158
1 files changed, 88 insertions, 70 deletions
diff --git a/src/xterm.c b/src/xterm.c
index ebc9fb734fc..1b16ba85055 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -8788,7 +8788,8 @@ xaw_scroll_callback (widget, client_data, call_data)
8788 XtPointer client_data, call_data; 8788 XtPointer client_data, call_data;
8789{ 8789{
8790 struct scroll_bar *bar = (struct scroll_bar *) client_data; 8790 struct scroll_bar *bar = (struct scroll_bar *) client_data;
8791 int position = (int) call_data; 8791 /* The position really is stored cast to a pointer. */
8792 int position = (long) call_data;
8792 Dimension height; 8793 Dimension height;
8793 int part; 8794 int part;
8794 8795
@@ -10737,117 +10738,134 @@ XTread_socket (sd, bufp, numchars, expected)
10737 10738
10738 if (numchars > 1) 10739 if (numchars > 1)
10739 { 10740 {
10740 if (((keysym >= XK_BackSpace && keysym <= XK_Escape) 10741 Lisp_Object c;
10741 || keysym == XK_Delete 10742
10743 /* First deal with keysyms which have defined
10744 translations to characters. */
10745 if (keysym >= 32 && keysym < 128)
10746 /* Avoid explicitly decoding each ASCII character. */
10747 {
10748 bufp->kind = ASCII_KEYSTROKE_EVENT;
10749 bufp->code = keysym;
10750 XSETFRAME (bufp->frame_or_window, f);
10751 bufp->arg = Qnil;
10752 bufp->modifiers
10753 = x_x_to_emacs_modifiers (FRAME_X_DISPLAY_INFO (f),
10754 modifiers);
10755 bufp->timestamp = event.xkey.time;
10756 bufp++;
10757 count++;
10758 numchars--;
10759 }
10760 /* Now non-ASCII. */
10761 else if (! EQ ((c = Fgethash (make_number (keysym),
10762 Vx_keysym_table, Qnil)),
10763 Qnil))
10764 {
10765 bufp->kind = (SINGLE_BYTE_CHAR_P (c)
10766 ? ASCII_KEYSTROKE_EVENT
10767 : MULTIBYTE_CHAR_KEYSTROKE_EVENT);
10768 bufp->code = c;
10769 XSETFRAME (bufp->frame_or_window, f);
10770 bufp->arg = Qnil;
10771 bufp->modifiers
10772 = x_x_to_emacs_modifiers (FRAME_X_DISPLAY_INFO (f),
10773 modifiers);
10774 bufp->timestamp = event.xkey.time;
10775 bufp++;
10776 count++;
10777 numchars--;
10778 }
10779 /* Random non-modifier sorts of keysyms. */
10780 else if (((keysym >= XK_BackSpace && keysym <= XK_Escape)
10781 || keysym == XK_Delete
10742#ifdef XK_ISO_Left_Tab 10782#ifdef XK_ISO_Left_Tab
10743 || (keysym >= XK_ISO_Left_Tab && keysym <= XK_ISO_Enter) 10783 || (keysym >= XK_ISO_Left_Tab
10784 && keysym <= XK_ISO_Enter)
10744#endif 10785#endif
10745 || (keysym >= XK_Kanji && keysym <= XK_Eisu_toggle) 10786 || IsCursorKey (keysym) /* 0xff50 <= x < 0xff60 */
10746 || IsCursorKey (keysym) /* 0xff50 <= x < 0xff60 */ 10787 || IsMiscFunctionKey (keysym) /* 0xff60 <= x < VARIES */
10747 || IsMiscFunctionKey (keysym) /* 0xff60 <= x < VARIES */
10748#ifdef HPUX 10788#ifdef HPUX
10749 /* This recognizes the "extended function keys". 10789 /* This recognizes the "extended function
10750 It seems there's no cleaner way. 10790 keys". It seems there's no cleaner way.
10751 Test IsModifierKey to avoid handling mode_switch 10791 Test IsModifierKey to avoid handling
10752 incorrectly. */ 10792 mode_switch incorrectly. */
10753 || ((unsigned) (keysym) >= XK_Select 10793 || ((unsigned) (keysym) >= XK_Select
10754 && (unsigned)(keysym) < XK_KP_Space) 10794 && (unsigned)(keysym) < XK_KP_Space)
10755#endif 10795#endif
10756#ifdef XK_dead_circumflex 10796#ifdef XK_dead_circumflex
10757 || orig_keysym == XK_dead_circumflex 10797 || orig_keysym == XK_dead_circumflex
10758#endif 10798#endif
10759#ifdef XK_dead_grave 10799#ifdef XK_dead_grave
10760 || orig_keysym == XK_dead_grave 10800 || orig_keysym == XK_dead_grave
10761#endif 10801#endif
10762#ifdef XK_dead_tilde 10802#ifdef XK_dead_tilde
10763 || orig_keysym == XK_dead_tilde 10803 || orig_keysym == XK_dead_tilde
10764#endif 10804#endif
10765#ifdef XK_dead_diaeresis 10805#ifdef XK_dead_diaeresis
10766 || orig_keysym == XK_dead_diaeresis 10806 || orig_keysym == XK_dead_diaeresis
10767#endif 10807#endif
10768#ifdef XK_dead_macron 10808#ifdef XK_dead_macron
10769 || orig_keysym == XK_dead_macron 10809 || orig_keysym == XK_dead_macron
10770#endif 10810#endif
10771#ifdef XK_dead_degree 10811#ifdef XK_dead_degree
10772 || orig_keysym == XK_dead_degree 10812 || orig_keysym == XK_dead_degree
10773#endif 10813#endif
10774#ifdef XK_dead_acute 10814#ifdef XK_dead_acute
10775 || orig_keysym == XK_dead_acute 10815 || orig_keysym == XK_dead_acute
10776#endif 10816#endif
10777#ifdef XK_dead_cedilla 10817#ifdef XK_dead_cedilla
10778 || orig_keysym == XK_dead_cedilla 10818 || orig_keysym == XK_dead_cedilla
10779#endif 10819#endif
10780#ifdef XK_dead_breve 10820#ifdef XK_dead_breve
10781 || orig_keysym == XK_dead_breve 10821 || orig_keysym == XK_dead_breve
10782#endif 10822#endif
10783#ifdef XK_dead_ogonek 10823#ifdef XK_dead_ogonek
10784 || orig_keysym == XK_dead_ogonek 10824 || orig_keysym == XK_dead_ogonek
10785#endif 10825#endif
10786#ifdef XK_dead_caron 10826#ifdef XK_dead_caron
10787 || orig_keysym == XK_dead_caron 10827 || orig_keysym == XK_dead_caron
10788#endif 10828#endif
10789#ifdef XK_dead_doubleacute 10829#ifdef XK_dead_doubleacute
10790 || orig_keysym == XK_dead_doubleacute 10830 || orig_keysym == XK_dead_doubleacute
10791#endif 10831#endif
10792#ifdef XK_dead_abovedot 10832#ifdef XK_dead_abovedot
10793 || orig_keysym == XK_dead_abovedot 10833 || orig_keysym == XK_dead_abovedot
10794#endif 10834#endif
10795 || IsKeypadKey (keysym) /* 0xff80 <= x < 0xffbe */ 10835 || IsKeypadKey (keysym) /* 0xff80 <= x < 0xffbe */
10796 || IsFunctionKey (keysym) /* 0xffbe <= x < 0xffe1 */ 10836 || IsFunctionKey (keysym) /* 0xffbe <= x < 0xffe1 */
10797 /* Any "vendor-specific" key is ok. */ 10837 /* Any "vendor-specific" key is ok. */
10798 || (orig_keysym & (1 << 28)) 10838 || (orig_keysym & (1 << 28))
10799 || (keysym != NoSymbol && nbytes == 0)) 10839 || (keysym != NoSymbol && nbytes == 0))
10800 && ! (IsModifierKey (orig_keysym) 10840 && ! (IsModifierKey (orig_keysym)
10801#ifndef HAVE_X11R5 10841#ifndef HAVE_X11R5
10802#ifdef XK_Mode_switch 10842#ifdef XK_Mode_switch
10803 || ((unsigned)(orig_keysym) == XK_Mode_switch) 10843 || ((unsigned)(orig_keysym) == XK_Mode_switch)
10804#endif 10844#endif
10805#ifdef XK_Num_Lock 10845#ifdef XK_Num_Lock
10806 || ((unsigned)(orig_keysym) == XK_Num_Lock) 10846 || ((unsigned)(orig_keysym) == XK_Num_Lock)
10807#endif 10847#endif
10808#endif /* not HAVE_X11R5 */ 10848#endif /* not HAVE_X11R5 */
10809 /* The symbols from XK_ISO_Lock to 10849 /* The symbols from XK_ISO_Lock
10810 XK_ISO_Last_Group_Lock doesn't have real 10850 to XK_ISO_Last_Group_Lock
10811 modifiers but should be treated similarly 10851 don't have real modifiers but
10812 to Mode_switch by Emacs. */ 10852 should be treated similarly to
10853 Mode_switch by Emacs. */
10813#if defined XK_ISO_Lock && defined XK_ISO_Last_Group_Lock 10854#if defined XK_ISO_Lock && defined XK_ISO_Last_Group_Lock
10814 || ((unsigned)(orig_keysym) >= XK_ISO_Lock 10855 || ((unsigned)(orig_keysym)
10815 && (unsigned)(orig_keysym) <= XK_ISO_Last_Group_Lock) 10856 >= XK_ISO_Lock
10857 && (unsigned)(orig_keysym)
10858 <= XK_ISO_Last_Group_Lock)
10816#endif 10859#endif
10817 )) 10860 ))
10818 { 10861 {
10819 Lisp_Object c;
10820
10821 if (temp_index == sizeof temp_buffer / sizeof (short)) 10862 if (temp_index == sizeof temp_buffer / sizeof (short))
10822 temp_index = 0; 10863 temp_index = 0;
10823 temp_buffer[temp_index++] = keysym; 10864 temp_buffer[temp_index++] = keysym;
10824 /* First deal with keysyms which have 10865 /* make_lispy_event will convert this to a symbolic
10825 defined translations to characters. */ 10866 key. */
10826 if (keysym >= 32 && keysym < 128) 10867 bufp->kind = NON_ASCII_KEYSTROKE_EVENT;
10827 /* Avoid explicitly decoding each ASCII 10868 bufp->code = keysym;
10828 character. */
10829 {
10830 bufp->kind = ASCII_KEYSTROKE_EVENT;
10831 bufp->code = c;
10832 }
10833 else if (! EQ ((c = Fgethash (make_number (keysym),
10834 Vx_keysym_table,
10835 Qnil)),
10836 Qnil))
10837 {
10838 bufp->kind = (SINGLE_BYTE_CHAR_P (c)
10839 ? ASCII_KEYSTROKE_EVENT
10840 : MULTIBYTE_CHAR_KEYSTROKE_EVENT);
10841 bufp->code = c;
10842 }
10843 else
10844 {
10845 /* Not a character keysym.
10846 make_lispy_event will convert it to a
10847 symbolic key. */
10848 bufp->kind = NON_ASCII_KEYSTROKE_EVENT;
10849 bufp->code = keysym;
10850 }
10851 XSETFRAME (bufp->frame_or_window, f); 10869 XSETFRAME (bufp->frame_or_window, f);
10852 bufp->arg = Qnil; 10870 bufp->arg = Qnil;
10853 bufp->modifiers 10871 bufp->modifiers