Mercurial > emacs
diff src/window.c @ 88050:449ffc76e463
* window.c (run_window_configuration_change_hook): New function.
Code extracted from set_window_buffer. Set the selected frame.
(set_window_buffer): Use it.
* window.h (run_window_configuration_change_hook): Declare.
* dispnew.c (change_frame_size_1): Use it instead of set-window-buffer.
| author | Stefan Monnier <monnier@iro.umontreal.ca> |
|---|---|
| date | Mon, 28 Jan 2008 19:05:13 +0000 |
| parents | 800f21c9f989 |
| children | c70e45a7acfd |
line wrap: on
line diff
--- a/src/window.c Mon Jan 28 18:49:55 2008 +0000 +++ b/src/window.c Mon Jan 28 19:05:13 2008 +0000 @@ -3307,6 +3307,25 @@ EXFUN (Fset_window_fringes, 4); EXFUN (Fset_window_scroll_bars, 4); +void +run_window_configuration_change_hook (struct frame *f) +{ + if (! NILP (Vwindow_configuration_change_hook) + && ! NILP (Vrun_hooks)) + { + int count = SPECPDL_INDEX (); + if (SELECTED_FRAME () != f) + { + Lisp_Object frame; + XSETFRAME (frame, f); + record_unwind_protect (Fselect_frame, Fselected_frame ()); + Fselect_frame (frame); + } + call1 (Vrun_hooks, Qwindow_configuration_change_hook); + unbind_to (count, Qnil); + } +} + /* Make WINDOW display BUFFER as its contents. RUN_HOOKS_P non-zero means it's allowed to run hooks. See make_frame for a case where it's not allowed. KEEP_MARGINS_P non-zero means that the current @@ -3408,10 +3427,7 @@ if (! NILP (Vwindow_scroll_functions)) run_hook_with_args_2 (Qwindow_scroll_functions, window, Fmarker_position (w->start)); - - if (! NILP (Vwindow_configuration_change_hook) - && ! NILP (Vrun_hooks)) - call1 (Vrun_hooks, Qwindow_configuration_change_hook); + run_window_configuration_change_hook (XFRAME (WINDOW_FRAME (w))); } unbind_to (count, Qnil);
