diff options
| author | Karl Heuer | 1995-04-24 18:27:33 +0000 |
|---|---|---|
| committer | Karl Heuer | 1995-04-24 18:27:33 +0000 |
| commit | 0f9419350b4bfbe8d2a291a277b51fc157066978 (patch) | |
| tree | 38d49260a5d0697e13c7c9901868ed01f5a8a68f /src | |
| parent | dc0700f64ca372b4c593b6fb03983eb209d99088 (diff) | |
| download | emacs-0f9419350b4bfbe8d2a291a277b51fc157066978.tar.gz emacs-0f9419350b4bfbe8d2a291a277b51fc157066978.zip | |
(x_focus_frame, x_focus_event_frame, x_highlight_frame):
Delete these vars; now part of struct x_display_info.
(x_new_focus_frame): New arg DPYINFO. Callers changed.
Use the struct members instead of the globals.
Call x_frame_rehighlight instead of XTframe_rehighlight, so we can
pass on the dpyinfo pointer.
(x_mouse_leave): New arg DPYINFO. Callers changed.
(XTframe_rehighlight): New arg FRAME. Callers changed.
Now does all the work in x_frame_rehighlight.
(x_frame_rehighlight): New function, code from XTframe_rehighlight.
(XTread_socket): Use the struct members instead of the globals.
(x_unfocus_frame, x_iconify_frame, x_destroy_window): Likewise.
(x_display_box_cursor, x_make_frame_invisible): Likewise.
(x_term_init): Initialize the struct members.
(x_initialize): Delete initialization of deleted globals.
Diffstat (limited to 'src')
| -rw-r--r-- | src/xterm.c | 149 |
1 files changed, 71 insertions, 78 deletions
diff --git a/src/xterm.c b/src/xterm.c index bf633dd982c..cf05dcc0b6c 100644 --- a/src/xterm.c +++ b/src/xterm.c | |||
| @@ -118,29 +118,9 @@ Lisp_Object x_display_name_list; | |||
| 118 | is the frame to apply to. */ | 118 | is the frame to apply to. */ |
| 119 | extern struct frame *updating_frame; | 119 | extern struct frame *updating_frame; |
| 120 | 120 | ||
| 121 | /* The frame (if any) which has the X window that has keyboard focus. | ||
| 122 | Zero if none. This is examined by Ffocus_frame in frame.c. Note | ||
| 123 | that a mere EnterNotify event can set this; if you need to know the | ||
| 124 | last frame specified in a FocusIn or FocusOut event, use | ||
| 125 | x_focus_event_frame. */ | ||
| 126 | struct frame *x_focus_frame; | ||
| 127 | |||
| 128 | /* This is a frame waiting to be autoraised, within XTread_socket. */ | 121 | /* This is a frame waiting to be autoraised, within XTread_socket. */ |
| 129 | struct frame *pending_autoraise_frame; | 122 | struct frame *pending_autoraise_frame; |
| 130 | 123 | ||
| 131 | /* The last frame mentioned in a FocusIn or FocusOut event. This is | ||
| 132 | separate from x_focus_frame, because whether or not LeaveNotify | ||
| 133 | events cause us to lose focus depends on whether or not we have | ||
| 134 | received a FocusIn event for it. */ | ||
| 135 | struct frame *x_focus_event_frame; | ||
| 136 | |||
| 137 | /* The frame which currently has the visual highlight, and should get | ||
| 138 | keyboard input (other sorts of input have the frame encoded in the | ||
| 139 | event). It points to the X focus frame's selected window's | ||
| 140 | frame. It differs from x_focus_frame when we're using a global | ||
| 141 | minibuffer. */ | ||
| 142 | static struct frame *x_highlight_frame; | ||
| 143 | |||
| 144 | #ifdef USE_X_TOOLKIT | 124 | #ifdef USE_X_TOOLKIT |
| 145 | /* The application context for Xt use. */ | 125 | /* The application context for Xt use. */ |
| 146 | XtAppContext Xt_app_con; | 126 | XtAppContext Xt_app_con; |
| @@ -1420,6 +1400,7 @@ frame_unhighlight (f) | |||
| 1420 | } | 1400 | } |
| 1421 | 1401 | ||
| 1422 | static void XTframe_rehighlight (); | 1402 | static void XTframe_rehighlight (); |
| 1403 | static void x_frame_rehighlight (); | ||
| 1423 | 1404 | ||
| 1424 | /* The focus has changed. Update the frames as necessary to reflect | 1405 | /* The focus has changed. Update the frames as necessary to reflect |
| 1425 | the new situation. Note that we can't change the selected frame | 1406 | the new situation. Note that we can't change the selected frame |
| @@ -1428,17 +1409,18 @@ static void XTframe_rehighlight (); | |||
| 1428 | Lisp code can tell when the switch took place by examining the events. */ | 1409 | Lisp code can tell when the switch took place by examining the events. */ |
| 1429 | 1410 | ||
| 1430 | static void | 1411 | static void |
| 1431 | x_new_focus_frame (frame) | 1412 | x_new_focus_frame (dpyinfo, frame) |
| 1413 | struct x_display_info *dpyinfo; | ||
| 1432 | struct frame *frame; | 1414 | struct frame *frame; |
| 1433 | { | 1415 | { |
| 1434 | struct frame *old_focus = x_focus_frame; | 1416 | struct frame *old_focus = dpyinfo->x_focus_frame; |
| 1435 | int events_enqueued = 0; | 1417 | int events_enqueued = 0; |
| 1436 | 1418 | ||
| 1437 | if (frame != x_focus_frame) | 1419 | if (frame != dpyinfo->x_focus_frame) |
| 1438 | { | 1420 | { |
| 1439 | /* Set this before calling other routines, so that they see | 1421 | /* Set this before calling other routines, so that they see |
| 1440 | the correct value of x_focus_frame. */ | 1422 | the correct value of x_focus_frame. */ |
| 1441 | x_focus_frame = frame; | 1423 | dpyinfo->x_focus_frame = frame; |
| 1442 | 1424 | ||
| 1443 | if (old_focus && old_focus->auto_lower) | 1425 | if (old_focus && old_focus->auto_lower) |
| 1444 | x_lower_frame (old_focus); | 1426 | x_lower_frame (old_focus); |
| @@ -1451,55 +1433,65 @@ x_new_focus_frame (frame) | |||
| 1451 | choose_minibuf_frame (); | 1433 | choose_minibuf_frame (); |
| 1452 | #endif /* ! 0 */ | 1434 | #endif /* ! 0 */ |
| 1453 | 1435 | ||
| 1454 | if (x_focus_frame && x_focus_frame->auto_raise) | 1436 | if (dpyinfo->x_focus_frame && dpyinfo->x_focus_frame->auto_raise) |
| 1455 | pending_autoraise_frame = x_focus_frame; | 1437 | pending_autoraise_frame = dpyinfo->x_focus_frame; |
| 1456 | else | 1438 | else |
| 1457 | pending_autoraise_frame = 0; | 1439 | pending_autoraise_frame = 0; |
| 1458 | } | 1440 | } |
| 1459 | 1441 | ||
| 1460 | XTframe_rehighlight (); | 1442 | x_frame_rehighlight (dpyinfo); |
| 1461 | } | 1443 | } |
| 1462 | 1444 | ||
| 1463 | /* Handle an event saying the mouse has moved out of an Emacs frame. */ | 1445 | /* Handle an event saying the mouse has moved out of an Emacs frame. */ |
| 1464 | 1446 | ||
| 1465 | void | 1447 | void |
| 1466 | x_mouse_leave () | 1448 | x_mouse_leave (dpyinfo) |
| 1449 | struct x_display_info *dpyinfo; | ||
| 1467 | { | 1450 | { |
| 1468 | if (! x_focus_event_frame) | 1451 | x_new_focus_frame (dpyinfo, dpyinfo->x_focus_event_frame); |
| 1469 | x_new_focus_frame (NULL); | ||
| 1470 | else | ||
| 1471 | x_new_focus_frame (x_focus_event_frame); /* Was f, but that seems wrong. */ | ||
| 1472 | } | 1452 | } |
| 1473 | 1453 | ||
| 1474 | /* The focus has changed, or we have redirected a frame's focus to | 1454 | /* The focus has changed, or we have redirected a frame's focus to |
| 1475 | another frame (this happens when a frame uses a surrogate | 1455 | another frame (this happens when a frame uses a surrogate |
| 1476 | minibuffer frame). Shift the highlight as appropriate. */ | 1456 | minibuffer frame). Shift the highlight as appropriate. |
| 1457 | |||
| 1458 | The FRAME argument doesn't necessarily have anything to do with which | ||
| 1459 | frame is being highlighted or unhighlighted; we only use it to find | ||
| 1460 | the appropriate X display info. */ | ||
| 1477 | static void | 1461 | static void |
| 1478 | XTframe_rehighlight () | 1462 | XTframe_rehighlight (frame) |
| 1463 | struct frame *frame; | ||
| 1479 | { | 1464 | { |
| 1480 | struct frame *old_highlight = x_highlight_frame; | 1465 | x_frame_rehighlight (FRAME_X_DISPLAY_INFO (frame)); |
| 1466 | } | ||
| 1481 | 1467 | ||
| 1482 | if (x_focus_frame) | 1468 | static void |
| 1469 | x_frame_rehighlight (dpyinfo) | ||
| 1470 | struct x_display_info *dpyinfo; | ||
| 1471 | { | ||
| 1472 | struct frame *old_highlight = dpyinfo->x_highlight_frame; | ||
| 1473 | |||
| 1474 | if (dpyinfo->x_focus_frame) | ||
| 1483 | { | 1475 | { |
| 1484 | x_highlight_frame | 1476 | dpyinfo->x_highlight_frame |
| 1485 | = ((GC_FRAMEP (FRAME_FOCUS_FRAME (x_focus_frame))) | 1477 | = ((GC_FRAMEP (FRAME_FOCUS_FRAME (dpyinfo->x_focus_frame))) |
| 1486 | ? XFRAME (FRAME_FOCUS_FRAME (x_focus_frame)) | 1478 | ? XFRAME (FRAME_FOCUS_FRAME (dpyinfo->x_focus_frame)) |
| 1487 | : x_focus_frame); | 1479 | : dpyinfo->x_focus_frame); |
| 1488 | if (! FRAME_LIVE_P (x_highlight_frame)) | 1480 | if (! FRAME_LIVE_P (dpyinfo->x_highlight_frame)) |
| 1489 | { | 1481 | { |
| 1490 | FRAME_FOCUS_FRAME (x_focus_frame) = Qnil; | 1482 | FRAME_FOCUS_FRAME (dpyinfo->x_focus_frame) = Qnil; |
| 1491 | x_highlight_frame = x_focus_frame; | 1483 | dpyinfo->x_highlight_frame = dpyinfo->x_focus_frame; |
| 1492 | } | 1484 | } |
| 1493 | } | 1485 | } |
| 1494 | else | 1486 | else |
| 1495 | x_highlight_frame = 0; | 1487 | dpyinfo->x_highlight_frame = 0; |
| 1496 | 1488 | ||
| 1497 | if (x_highlight_frame != old_highlight) | 1489 | if (dpyinfo->x_highlight_frame != old_highlight) |
| 1498 | { | 1490 | { |
| 1499 | if (old_highlight) | 1491 | if (old_highlight) |
| 1500 | frame_unhighlight (old_highlight); | 1492 | frame_unhighlight (old_highlight); |
| 1501 | if (x_highlight_frame) | 1493 | if (dpyinfo->x_highlight_frame) |
| 1502 | frame_highlight (x_highlight_frame); | 1494 | frame_highlight (dpyinfo->x_highlight_frame); |
| 1503 | } | 1495 | } |
| 1504 | } | 1496 | } |
| 1505 | 1497 | ||
| @@ -3701,12 +3693,12 @@ XTread_socket (sd, bufp, numchars, waitp, expected) | |||
| 3701 | || !(f->auto_lower) | 3693 | || !(f->auto_lower) |
| 3702 | || (event.xcrossing.time - enter_timestamp) > 500)) | 3694 | || (event.xcrossing.time - enter_timestamp) > 500)) |
| 3703 | { | 3695 | { |
| 3704 | x_new_focus_frame (f); | 3696 | x_new_focus_frame (dpyinfo, f); |
| 3705 | enter_timestamp = event.xcrossing.time; | 3697 | enter_timestamp = event.xcrossing.time; |
| 3706 | } | 3698 | } |
| 3707 | } | 3699 | } |
| 3708 | else if (f == x_focus_frame) | 3700 | else if (f == dpyinfo->x_focus_frame) |
| 3709 | x_new_focus_frame (0); | 3701 | x_new_focus_frame (dpyinfo, 0); |
| 3710 | /* EnterNotify counts as mouse movement, | 3702 | /* EnterNotify counts as mouse movement, |
| 3711 | so update things that depend on mouse position. */ | 3703 | so update things that depend on mouse position. */ |
| 3712 | if (f) | 3704 | if (f) |
| @@ -3719,9 +3711,9 @@ XTread_socket (sd, bufp, numchars, waitp, expected) | |||
| 3719 | case FocusIn: | 3711 | case FocusIn: |
| 3720 | f = x_any_window_to_frame (dpyinfo, event.xfocus.window); | 3712 | f = x_any_window_to_frame (dpyinfo, event.xfocus.window); |
| 3721 | if (event.xfocus.detail != NotifyPointer) | 3713 | if (event.xfocus.detail != NotifyPointer) |
| 3722 | x_focus_event_frame = f; | 3714 | dpyinfo->x_focus_event_frame = f; |
| 3723 | if (f) | 3715 | if (f) |
| 3724 | x_new_focus_frame (f); | 3716 | x_new_focus_frame (dpyinfo, f); |
| 3725 | #ifdef USE_X_TOOLKIT | 3717 | #ifdef USE_X_TOOLKIT |
| 3726 | goto OTHER; | 3718 | goto OTHER; |
| 3727 | #endif /* USE_X_TOOLKIT */ | 3719 | #endif /* USE_X_TOOLKIT */ |
| @@ -3738,13 +3730,13 @@ XTread_socket (sd, bufp, numchars, waitp, expected) | |||
| 3738 | clear_mouse_face (dpyinfo); | 3730 | clear_mouse_face (dpyinfo); |
| 3739 | 3731 | ||
| 3740 | if (event.xcrossing.focus) | 3732 | if (event.xcrossing.focus) |
| 3741 | x_mouse_leave (); | 3733 | x_mouse_leave (dpyinfo); |
| 3742 | else | 3734 | else |
| 3743 | { | 3735 | { |
| 3744 | if (f == x_focus_event_frame) | 3736 | if (f == dpyinfo->x_focus_event_frame) |
| 3745 | x_focus_event_frame = 0; | 3737 | dpyinfo->x_focus_event_frame = 0; |
| 3746 | if (f == x_focus_frame) | 3738 | if (f == dpyinfo->x_focus_frame) |
| 3747 | x_new_focus_frame (0); | 3739 | x_new_focus_frame (dpyinfo, 0); |
| 3748 | } | 3740 | } |
| 3749 | } | 3741 | } |
| 3750 | #ifdef USE_X_TOOLKIT | 3742 | #ifdef USE_X_TOOLKIT |
| @@ -3755,10 +3747,10 @@ XTread_socket (sd, bufp, numchars, waitp, expected) | |||
| 3755 | case FocusOut: | 3747 | case FocusOut: |
| 3756 | f = x_any_window_to_frame (dpyinfo, event.xfocus.window); | 3748 | f = x_any_window_to_frame (dpyinfo, event.xfocus.window); |
| 3757 | if (event.xfocus.detail != NotifyPointer | 3749 | if (event.xfocus.detail != NotifyPointer |
| 3758 | && f == x_focus_event_frame) | 3750 | && f == dpyinfo->x_focus_event_frame) |
| 3759 | x_focus_event_frame = 0; | 3751 | dpyinfo->x_focus_event_frame = 0; |
| 3760 | if (f && f == x_focus_frame) | 3752 | if (f && f == dpyinfo->x_focus_frame) |
| 3761 | x_new_focus_frame (0); | 3753 | x_new_focus_frame (dpyinfo, 0); |
| 3762 | #ifdef USE_X_TOOLKIT | 3754 | #ifdef USE_X_TOOLKIT |
| 3763 | goto OTHER; | 3755 | goto OTHER; |
| 3764 | #endif /* USE_X_TOOLKIT */ | 3756 | #endif /* USE_X_TOOLKIT */ |
| @@ -3907,7 +3899,7 @@ XTread_socket (sd, bufp, numchars, waitp, expected) | |||
| 3907 | 3899 | ||
| 3908 | if (f) | 3900 | if (f) |
| 3909 | { | 3901 | { |
| 3910 | if (!x_focus_frame || (f == x_focus_frame)) | 3902 | if (!dpyinfo->x_focus_frame || f == dpyinfo->x_focus_frame) |
| 3911 | construct_mouse_click (&emacs_event, &event, f); | 3903 | construct_mouse_click (&emacs_event, &event, f); |
| 3912 | } | 3904 | } |
| 3913 | else | 3905 | else |
| @@ -4173,7 +4165,7 @@ x_display_box_cursor (f, on) | |||
| 4173 | || f->phys_cursor_x != curs_x | 4165 | || f->phys_cursor_x != curs_x |
| 4174 | || f->phys_cursor_y != curs_y | 4166 | || f->phys_cursor_y != curs_y |
| 4175 | || (f->display.x->current_cursor != hollow_box_cursor | 4167 | || (f->display.x->current_cursor != hollow_box_cursor |
| 4176 | && (f != x_highlight_frame)))) | 4168 | && (f != FRAME_X_DISPLAY_INFO (f)->x_highlight_frame)))) |
| 4177 | { | 4169 | { |
| 4178 | int mouse_face_here = 0; | 4170 | int mouse_face_here = 0; |
| 4179 | struct frame_glyphs *active_glyphs = FRAME_CURRENT_GLYPHS (f); | 4171 | struct frame_glyphs *active_glyphs = FRAME_CURRENT_GLYPHS (f); |
| @@ -4218,14 +4210,14 @@ x_display_box_cursor (f, on) | |||
| 4218 | if (on | 4210 | if (on |
| 4219 | && (f->phys_cursor_x < 0 | 4211 | && (f->phys_cursor_x < 0 |
| 4220 | || (f->display.x->current_cursor != filled_box_cursor | 4212 | || (f->display.x->current_cursor != filled_box_cursor |
| 4221 | && f == x_highlight_frame))) | 4213 | && f == FRAME_X_DISPLAY_INFO (f)->x_highlight_frame))) |
| 4222 | { | 4214 | { |
| 4223 | f->phys_cursor_glyph | 4215 | f->phys_cursor_glyph |
| 4224 | = ((current_glyphs->enable[curs_y] | 4216 | = ((current_glyphs->enable[curs_y] |
| 4225 | && curs_x < current_glyphs->used[curs_y]) | 4217 | && curs_x < current_glyphs->used[curs_y]) |
| 4226 | ? current_glyphs->glyphs[curs_y][curs_x] | 4218 | ? current_glyphs->glyphs[curs_y][curs_x] |
| 4227 | : SPACEGLYPH); | 4219 | : SPACEGLYPH); |
| 4228 | if (f != x_highlight_frame) | 4220 | if (f != FRAME_X_DISPLAY_INFO (f)->x_highlight_frame) |
| 4229 | { | 4221 | { |
| 4230 | x_draw_box (f); | 4222 | x_draw_box (f); |
| 4231 | f->display.x->current_cursor = hollow_box_cursor; | 4223 | f->display.x->current_cursor = hollow_box_cursor; |
| @@ -4962,7 +4954,7 @@ x_unfocus_frame (f) | |||
| 4962 | { | 4954 | { |
| 4963 | #if 0 | 4955 | #if 0 |
| 4964 | /* Look at the remarks in x_focus_on_frame. */ | 4956 | /* Look at the remarks in x_focus_on_frame. */ |
| 4965 | if (x_focus_frame == f) | 4957 | if (FRAME_X_DISPLAY_INFO (f)->x_focus_frame == f) |
| 4966 | XSetInputFocus (FRAME_X_DISPLAY (f), PointerRoot, | 4958 | XSetInputFocus (FRAME_X_DISPLAY (f), PointerRoot, |
| 4967 | RevertToPointerRoot, CurrentTime); | 4959 | RevertToPointerRoot, CurrentTime); |
| 4968 | #endif /* ! 0 */ | 4960 | #endif /* ! 0 */ |
| @@ -5117,8 +5109,8 @@ x_make_frame_invisible (f) | |||
| 5117 | #endif /* not USE_X_TOOLKIT */ | 5109 | #endif /* not USE_X_TOOLKIT */ |
| 5118 | 5110 | ||
| 5119 | /* Don't keep the highlight on an invisible frame. */ | 5111 | /* Don't keep the highlight on an invisible frame. */ |
| 5120 | if (x_highlight_frame == f) | 5112 | if (FRAME_X_DISPLAY_INFO (f)->x_highlight_frame == f) |
| 5121 | x_highlight_frame = 0; | 5113 | FRAME_X_DISPLAY_INFO (f)->x_highlight_frame = 0; |
| 5122 | 5114 | ||
| 5123 | #if 0/* This might add unreliability; I don't trust it -- rms. */ | 5115 | #if 0/* This might add unreliability; I don't trust it -- rms. */ |
| 5124 | if (! f->async_visible && ! f->async_iconified) | 5116 | if (! f->async_visible && ! f->async_iconified) |
| @@ -5193,8 +5185,8 @@ x_iconify_frame (f) | |||
| 5193 | Lisp_Object type; | 5185 | Lisp_Object type; |
| 5194 | 5186 | ||
| 5195 | /* Don't keep the highlight on an invisible frame. */ | 5187 | /* Don't keep the highlight on an invisible frame. */ |
| 5196 | if (x_highlight_frame == f) | 5188 | if (FRAME_X_DISPLAY_INFO (f)->x_highlight_frame == f) |
| 5197 | x_highlight_frame = 0; | 5189 | FRAME_X_DISPLAY_INFO (f)->x_highlight_frame = 0; |
| 5198 | 5190 | ||
| 5199 | if (f->async_iconified) | 5191 | if (f->async_iconified) |
| 5200 | return; | 5192 | return; |
| @@ -5301,12 +5293,12 @@ x_destroy_window (f) | |||
| 5301 | 5293 | ||
| 5302 | xfree (f->display.x); | 5294 | xfree (f->display.x); |
| 5303 | f->display.x = 0; | 5295 | f->display.x = 0; |
| 5304 | if (f == x_focus_frame) | 5296 | if (f == dpyinfo->x_focus_frame) |
| 5305 | x_focus_frame = 0; | 5297 | dpyinfo->x_focus_frame = 0; |
| 5306 | if (f == x_focus_event_frame) | 5298 | if (f == dpyinfo->x_focus_event_frame) |
| 5307 | x_focus_event_frame = 0; | 5299 | dpyinfo->x_focus_event_frame = 0; |
| 5308 | if (f == x_highlight_frame) | 5300 | if (f == dpyinfo->x_highlight_frame) |
| 5309 | x_highlight_frame = 0; | 5301 | dpyinfo->x_highlight_frame = 0; |
| 5310 | 5302 | ||
| 5311 | dpyinfo->reference_count--; | 5303 | dpyinfo->reference_count--; |
| 5312 | 5304 | ||
| @@ -5703,6 +5695,9 @@ x_term_init (display_name, xrm_option, resource_name) | |||
| 5703 | dpyinfo->mouse_face_window = Qnil; | 5695 | dpyinfo->mouse_face_window = Qnil; |
| 5704 | dpyinfo->mouse_face_mouse_x = dpyinfo->mouse_face_mouse_y = 0; | 5696 | dpyinfo->mouse_face_mouse_x = dpyinfo->mouse_face_mouse_y = 0; |
| 5705 | dpyinfo->mouse_face_defer = 0; | 5697 | dpyinfo->mouse_face_defer = 0; |
| 5698 | dpyinfo->x_focus_frame = 0; | ||
| 5699 | dpyinfo->x_focus_event_frame = 0; | ||
| 5700 | dpyinfo->x_highlight_frame = 0; | ||
| 5706 | 5701 | ||
| 5707 | dpyinfo->Xatom_wm_protocols | 5702 | dpyinfo->Xatom_wm_protocols |
| 5708 | = XInternAtom (dpyinfo->display, "WM_PROTOCOLS", False); | 5703 | = XInternAtom (dpyinfo->display, "WM_PROTOCOLS", False); |
| @@ -5864,8 +5859,6 @@ x_initialize () | |||
| 5864 | 5859 | ||
| 5865 | x_noop_count = 0; | 5860 | x_noop_count = 0; |
| 5866 | 5861 | ||
| 5867 | x_focus_frame = x_highlight_frame = 0; | ||
| 5868 | |||
| 5869 | /* Try to use interrupt input; if we can't, then start polling. */ | 5862 | /* Try to use interrupt input; if we can't, then start polling. */ |
| 5870 | Fset_input_mode (Qt, Qnil, Qt, Qnil); | 5863 | Fset_input_mode (Qt, Qnil, Qt, Qnil); |
| 5871 | 5864 | ||