aboutsummaryrefslogtreecommitdiffstats
path: root/src/window.c
diff options
context:
space:
mode:
authorStefan Monnier2005-04-12 22:52:52 +0000
committerStefan Monnier2005-04-12 22:52:52 +0000
commit203eb0aa1d75155378080885ad4a1123fe355ba8 (patch)
tree599b6e2c1fd13d5eb6e67026942b93c4e9e599a3 /src/window.c
parentdc56fc01ff1ff4950432c445ac0325920a70d6e4 (diff)
downloademacs-203eb0aa1d75155378080885ad4a1123fe355ba8.tar.gz
emacs-203eb0aa1d75155378080885ad4a1123fe355ba8.zip
(Fset_window_configuration): Be careful when you choose
among several possible points for the new_current_buffer.
Diffstat (limited to 'src/window.c')
-rw-r--r--src/window.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/window.c b/src/window.c
index 988b663cbba..1070f8cf37c 100644
--- a/src/window.c
+++ b/src/window.c
@@ -1,7 +1,7 @@
1/* Window creation, deletion and examination for GNU Emacs. 1/* Window creation, deletion and examination for GNU Emacs.
2 Does not include redisplay. 2 Does not include redisplay.
3 Copyright (C) 1985,86,87, 1993,94,95,96,97,98, 2000,01,02,03,04 3 Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998, 2000,
4 Free Software Foundation, Inc. 4 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
5 5
6This file is part of GNU Emacs. 6This file is part of GNU Emacs.
7 7
@@ -5594,7 +5594,20 @@ the return value is nil. Otherwise the value is t. */)
5594 if (XBUFFER (new_current_buffer) == current_buffer) 5594 if (XBUFFER (new_current_buffer) == current_buffer)
5595 old_point = PT; 5595 old_point = PT;
5596 else 5596 else
5597 old_point = BUF_PT (XBUFFER (new_current_buffer)); 5597 /* BUF_PT (XBUFFER (new_current_buffer)) gives us the position of
5598 point in new_current_buffer as of the last time this buffer was
5599 used. This can be non-deterministic since it can be changed by
5600 things like jit-lock by mere temporary selection of some random
5601 window that happens to show this buffer.
5602 So if possible we want this arbitrary choice of "which point" to
5603 be the one from the to-be-selected-window so as to prevent this
5604 window's cursor from being copied from another window. */
5605 if (EQ (XWINDOW (data->current_window)->buffer, new_current_buffer)
5606 /* If current_window = selected_window, its point is in BUF_PT. */
5607 && !EQ (selected_window, data->current_window))
5608 old_point = XMARKER (XWINDOW (data->current_window)->pointm)->charpos;
5609 else
5610 old_point = BUF_PT (XBUFFER (new_current_buffer));
5598 } 5611 }
5599 5612
5600 frame = XWINDOW (SAVED_WINDOW_N (saved_windows, 0)->window)->frame; 5613 frame = XWINDOW (SAVED_WINDOW_N (saved_windows, 0)->window)->frame;