From: Stefan Monnier Date: Mon, 28 Jan 2008 19:05:13 +0000 (+0000) Subject: * window.c (run_window_configuration_change_hook): New function. X-Git-Tag: emacs-pretest-23.0.90~8349 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=ef264c42097f5317044f6a85f895588184c2dbdd;p=emacs.git * 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. --- diff --git a/src/ChangeLog b/src/ChangeLog index 3986b4f9284..0d1a18ef2ca 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,11 @@ 2008-01-28 Stefan Monnier + * 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. + * keyboard.c (read_char): Yet another int/Lisp_Object mixup (YAILOM). 2008-01-27 Dan Nicolaescu diff --git a/src/dispnew.c b/src/dispnew.c index ab0f581b53d..284e1fde4bd 100644 --- a/src/dispnew.c +++ b/src/dispnew.c @@ -6386,9 +6386,7 @@ change_frame_size_1 (f, newheight, newwidth, pretend, delay, safe) record_unwind_protect (Fset_buffer, Fcurrent_buffer ()); - /* This isn't quite a no-op: it runs window-configuration-change-hook. */ - Fset_window_buffer (FRAME_SELECTED_WINDOW (f), - XWINDOW (FRAME_SELECTED_WINDOW (f))->buffer, Qt); + run_window_configuration_change_hook (f); unbind_to (count, Qnil); } diff --git a/src/window.c b/src/window.c index bf36cbc032f..5b0d8f4375a 100644 --- a/src/window.c +++ b/src/window.c @@ -3307,6 +3307,25 @@ Fset_window_buffer_unwind (obuf) 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 @@ set_window_buffer (window, buffer, run_hooks_p, keep_margins_p) 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); diff --git a/src/window.h b/src/window.h index fb56be8bfb7..b2c62fde01f 100644 --- a/src/window.h +++ b/src/window.h @@ -790,6 +790,7 @@ extern void foreach_window P_ ((struct frame *, extern void grow_mini_window P_ ((struct window *, int)); extern void shrink_mini_window P_ ((struct window *)); +void run_window_configuration_change_hook (struct frame *f); /* 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