# HG changeset patch # User Stefan Monnier # Date 1201547113 0 # Node ID 449ffc76e46391b2fcef237e9d5dddf7fdcadb41 # Parent 3f51de0dbaeeaa5d1d182fba065a445a1663f979 * 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 -r 3f51de0dbaee -r 449ffc76e463 src/ChangeLog --- a/src/ChangeLog Mon Jan 28 18:49:55 2008 +0000 +++ b/src/ChangeLog Mon Jan 28 19:05:13 2008 +0000 @@ -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 -r 3f51de0dbaee -r 449ffc76e463 src/dispnew.c --- a/src/dispnew.c Mon Jan 28 18:49:55 2008 +0000 +++ b/src/dispnew.c Mon Jan 28 19:05:13 2008 +0000 @@ -6386,9 +6386,7 @@ 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 -r 3f51de0dbaee -r 449ffc76e463 src/window.c --- 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); diff -r 3f51de0dbaee -r 449ffc76e463 src/window.h --- a/src/window.h Mon Jan 28 18:49:55 2008 +0000 +++ b/src/window.h Mon Jan 28 19:05:13 2008 +0000 @@ -790,6 +790,7 @@ 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