451 |
string++; |
string++; |
452 |
else if (*string == '@') |
else if (*string == '@') |
453 |
{ |
{ |
454 |
Lisp_Object event; |
Lisp_Object event, tem; |
455 |
|
|
456 |
event = (next_event < key_count |
event = (next_event < key_count |
457 |
? XVECTOR (keys)->contents[next_event] |
? XVECTOR (keys)->contents[next_event] |
458 |
: Qnil); |
: Qnil); |
459 |
if (EVENT_HAS_PARAMETERS (event) |
if (EVENT_HAS_PARAMETERS (event) |
460 |
&& (event = XCDR (event), CONSP (event)) |
&& (tem = XCDR (event), CONSP (tem)) |
461 |
&& (event = XCAR (event), CONSP (event)) |
&& (tem = XCAR (tem), CONSP (tem)) |
462 |
&& (event = XCAR (event), WINDOWP (event))) |
&& (tem = XCAR (tem), WINDOWP (tem))) |
463 |
{ |
{ |
464 |
if (MINI_WINDOW_P (XWINDOW (event)) |
if (MINI_WINDOW_P (XWINDOW (tem)) |
465 |
&& ! (minibuf_level > 0 && EQ (event, minibuf_window))) |
&& ! (minibuf_level > 0 && EQ (tem, minibuf_window))) |
466 |
error ("Attempt to select inactive minibuffer window"); |
error ("Attempt to select inactive minibuffer window"); |
467 |
|
|
468 |
/* If the current buffer wants to clean up, let it. */ |
/* If the current buffer wants to clean up, let it. */ |
469 |
if (!NILP (Vmouse_leave_buffer_hook)) |
if (!NILP (Vmouse_leave_buffer_hook)) |
470 |
call1 (Vrun_hooks, Qmouse_leave_buffer_hook); |
call1 (Vrun_hooks, Qmouse_leave_buffer_hook); |
471 |
|
|
472 |
Fselect_window (event, Qnil); |
Fselect_window (tem, Qnil); |
473 |
} |
} |
474 |
string++; |
string++; |
475 |
} |
} |