diff options
| author | Richard M. Stallman | 1993-06-14 07:07:05 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1993-06-14 07:07:05 +0000 |
| commit | 0def0403ca727619f461d20d9cb78becab70c8ac (patch) | |
| tree | 056a9643163b042fdadb28671006a7f3b34c8d50 /src/window.c | |
| parent | 087f61c885f07dc9a337e96c6d22a4d3dc46bb9b (diff) | |
| download | emacs-0def0403ca727619f461d20d9cb78becab70c8ac.tar.gz emacs-0def0403ca727619f461d20d9cb78becab70c8ac.zip | |
(Fdelete_window): Handle deleting a parent of the selected window.
(Fdelete_window): Mostly undo last change which made `frame' a FRAME_PTR.
Don't initialize `frame' in the declaration.
Diffstat (limited to 'src/window.c')
| -rw-r--r-- | src/window.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/window.c b/src/window.c index e50a9bc7be5..d3baca1d8a2 100644 --- a/src/window.c +++ b/src/window.c | |||
| @@ -700,9 +700,22 @@ DEFUN ("delete-window", Fdelete_window, Sdelete_window, 0, 1, "", | |||
| 700 | 700 | ||
| 701 | /* Are we trying to delete any frame's selected window? */ | 701 | /* Are we trying to delete any frame's selected window? */ |
| 702 | { | 702 | { |
| 703 | FRAME_PTR frame = WINDOW_FRAME (XWINDOW (window)); | 703 | Lisp_Object frame, pwindow; |
| 704 | 704 | ||
| 705 | if (EQ (window, FRAME_SELECTED_WINDOW (frame))) | 705 | /* See if the frame's selected window is either WINDOW |
| 706 | or any subwindow of it, by finding all that window's parents | ||
| 707 | and comparing each one with WINDOW. */ | ||
| 708 | frame = WINDOW_FRAME (XWINDOW (window)); | ||
| 709 | pwindow = FRAME_SELECTED_WINDOW (XFRAME (frame)); | ||
| 710 | |||
| 711 | while (!NILP (pwindow)) | ||
| 712 | { | ||
| 713 | if (EQ (window, pwindow)) | ||
| 714 | break; | ||
| 715 | pwindow = XWINDOW (pwindow)->parent; | ||
| 716 | } | ||
| 717 | |||
| 718 | if (EQ (window, pwindow)) | ||
| 706 | { | 719 | { |
| 707 | Lisp_Object alternative = Fnext_window (window, Qlambda, Qnil); | 720 | Lisp_Object alternative = Fnext_window (window, Qlambda, Qnil); |
| 708 | 721 | ||
| @@ -714,7 +727,7 @@ DEFUN ("delete-window", Fdelete_window, Sdelete_window, 0, 1, "", | |||
| 714 | if (EQ (window, selected_window)) | 727 | if (EQ (window, selected_window)) |
| 715 | Fselect_window (alternative); | 728 | Fselect_window (alternative); |
| 716 | else | 729 | else |
| 717 | FRAME_SELECTED_WINDOW (frame) = alternative; | 730 | FRAME_SELECTED_WINDOW (XFRAME (frame)) = alternative; |
| 718 | } | 731 | } |
| 719 | } | 732 | } |
| 720 | 733 | ||