diff options
| author | Martin Rudalics | 2012-08-14 10:44:24 +0200 |
|---|---|---|
| committer | Martin Rudalics | 2012-08-14 10:44:24 +0200 |
| commit | 08908acaa6d4e2679cf2fc32c91c17906a4de639 (patch) | |
| tree | b2958f917124c082f606daf1b62bc4748550f60b /src/frame.c | |
| parent | e5b19827faaff8168889c9cf3c8f746fd67e6991 (diff) | |
| download | emacs-08908acaa6d4e2679cf2fc32c91c17906a4de639.tar.gz emacs-08908acaa6d4e2679cf2fc32c91c17906a4de639.zip | |
Don't call Fset_window_buffer from C code.
* frame.c (make_frame_without_minibuffer, make_minibuffer_frame)
(delete_frame, Fmake_frame_invisible, Ficonify_frame):
* minibuf.c (choose_minibuf_frame, read_minibuf):
* w32fns.c (x_create_tip_frame):
* xfns.c (x_create_tip_frame): Call set_window_buffer instead of
Fset_window_buffer (Bug#11984, Bug#12025, Bug#12026).
Diffstat (limited to 'src/frame.c')
| -rw-r--r-- | src/frame.c | 40 |
1 files changed, 25 insertions, 15 deletions
diff --git a/src/frame.c b/src/frame.c index b2990929058..ea682835a87 100644 --- a/src/frame.c +++ b/src/frame.c | |||
| @@ -407,10 +407,12 @@ make_frame_without_minibuffer (register Lisp_Object mini_window, KBOARD *kb, Lis | |||
| 407 | /* Make the chosen minibuffer window display the proper minibuffer, | 407 | /* Make the chosen minibuffer window display the proper minibuffer, |
| 408 | unless it is already showing a minibuffer. */ | 408 | unless it is already showing a minibuffer. */ |
| 409 | if (NILP (Fmemq (XWINDOW (mini_window)->buffer, Vminibuffer_list))) | 409 | if (NILP (Fmemq (XWINDOW (mini_window)->buffer, Vminibuffer_list))) |
| 410 | Fset_window_buffer (mini_window, | 410 | /* Use set_window_buffer instead of Fset_window_buffer (see |
| 411 | (NILP (Vminibuffer_list) | 411 | discussion of bug#11984, bug#12025, bug#12026). */ |
| 412 | ? get_minibuffer (0) | 412 | set_window_buffer (mini_window, |
| 413 | : Fcar (Vminibuffer_list)), Qnil); | 413 | (NILP (Vminibuffer_list) |
| 414 | ? get_minibuffer (0) | ||
| 415 | : Fcar (Vminibuffer_list)), 0, 0); | ||
| 414 | return f; | 416 | return f; |
| 415 | } | 417 | } |
| 416 | 418 | ||
| @@ -445,10 +447,12 @@ make_minibuffer_frame (void) | |||
| 445 | 447 | ||
| 446 | /* Put the proper buffer in that window. */ | 448 | /* Put the proper buffer in that window. */ |
| 447 | 449 | ||
| 448 | Fset_window_buffer (mini_window, | 450 | /* Use set_window_buffer instead of Fset_window_buffer (see |
| 449 | (NILP (Vminibuffer_list) | 451 | discussion of bug#11984, bug#12025, bug#12026). */ |
| 450 | ? get_minibuffer (0) | 452 | set_window_buffer (mini_window, |
| 451 | : Fcar (Vminibuffer_list)), Qnil); | 453 | (NILP (Vminibuffer_list) |
| 454 | ? get_minibuffer (0) | ||
| 455 | : Fcar (Vminibuffer_list)), 0, 0); | ||
| 452 | return f; | 456 | return f; |
| 453 | } | 457 | } |
| 454 | #endif /* HAVE_WINDOW_SYSTEM */ | 458 | #endif /* HAVE_WINDOW_SYSTEM */ |
| @@ -1240,8 +1244,10 @@ delete_frame (Lisp_Object frame, Lisp_Object force) | |||
| 1240 | /* Don't allow minibuf_window to remain on a deleted frame. */ | 1244 | /* Don't allow minibuf_window to remain on a deleted frame. */ |
| 1241 | if (EQ (f->minibuffer_window, minibuf_window)) | 1245 | if (EQ (f->minibuffer_window, minibuf_window)) |
| 1242 | { | 1246 | { |
| 1243 | Fset_window_buffer (sf->minibuffer_window, | 1247 | /* Use set_window_buffer instead of Fset_window_buffer (see |
| 1244 | XWINDOW (minibuf_window)->buffer, Qnil); | 1248 | discussion of bug#11984, bug#12025, bug#12026). */ |
| 1249 | set_window_buffer (sf->minibuffer_window, | ||
| 1250 | XWINDOW (minibuf_window)->buffer, 0, 0); | ||
| 1245 | minibuf_window = sf->minibuffer_window; | 1251 | minibuf_window = sf->minibuffer_window; |
| 1246 | 1252 | ||
| 1247 | /* If the dying minibuffer window was selected, | 1253 | /* If the dying minibuffer window was selected, |
| @@ -1713,8 +1719,10 @@ displayed in the terminal. */) | |||
| 1713 | if (EQ (XFRAME (frame)->minibuffer_window, minibuf_window)) | 1719 | if (EQ (XFRAME (frame)->minibuffer_window, minibuf_window)) |
| 1714 | { | 1720 | { |
| 1715 | struct frame *sf = XFRAME (selected_frame); | 1721 | struct frame *sf = XFRAME (selected_frame); |
| 1716 | Fset_window_buffer (sf->minibuffer_window, | 1722 | /* Use set_window_buffer instead of Fset_window_buffer (see |
| 1717 | XWINDOW (minibuf_window)->buffer, Qnil); | 1723 | discussion of bug#11984, bug#12025, bug#12026). */ |
| 1724 | set_window_buffer (sf->minibuffer_window, | ||
| 1725 | XWINDOW (minibuf_window)->buffer, 0, 0); | ||
| 1718 | minibuf_window = sf->minibuffer_window; | 1726 | minibuf_window = sf->minibuffer_window; |
| 1719 | } | 1727 | } |
| 1720 | 1728 | ||
| @@ -1747,12 +1755,14 @@ If omitted, FRAME defaults to the currently selected frame. */) | |||
| 1747 | Fhandle_switch_frame (next_frame (frame, Qt)); | 1755 | Fhandle_switch_frame (next_frame (frame, Qt)); |
| 1748 | #endif | 1756 | #endif |
| 1749 | 1757 | ||
| 1750 | /* Don't allow minibuf_window to remain on a deleted frame. */ | 1758 | /* Don't allow minibuf_window to remain on an iconified frame. */ |
| 1751 | if (EQ (XFRAME (frame)->minibuffer_window, minibuf_window)) | 1759 | if (EQ (XFRAME (frame)->minibuffer_window, minibuf_window)) |
| 1752 | { | 1760 | { |
| 1753 | struct frame *sf = XFRAME (selected_frame); | 1761 | struct frame *sf = XFRAME (selected_frame); |
| 1754 | Fset_window_buffer (sf->minibuffer_window, | 1762 | /* Use set_window_buffer instead of Fset_window_buffer (see |
| 1755 | XWINDOW (minibuf_window)->buffer, Qnil); | 1763 | discussion of bug#11984, bug#12025, bug#12026). */ |
| 1764 | set_window_buffer (sf->minibuffer_window, | ||
| 1765 | XWINDOW (minibuf_window)->buffer, 0, 0); | ||
| 1756 | minibuf_window = sf->minibuffer_window; | 1766 | minibuf_window = sf->minibuffer_window; |
| 1757 | } | 1767 | } |
| 1758 | 1768 | ||