diff options
Diffstat (limited to 'src/frame.c')
| -rw-r--r-- | src/frame.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/frame.c b/src/frame.c index 1b29bd8f085..dbee6a8092b 100644 --- a/src/frame.c +++ b/src/frame.c @@ -1237,7 +1237,7 @@ delete_frame (Lisp_Object frame, Lisp_Object force) else { #ifdef HAVE_X_WINDOWS - /* Also, save clipboard to the the clipboard manager. */ + /* Also, save clipboard to the clipboard manager. */ x_clipboard_manager_save_frame (frame); #endif @@ -1320,7 +1320,7 @@ delete_frame (Lisp_Object frame, Lisp_Object force) /* Mark all the windows that used to be on FRAME as deleted, and then remove the reference to them. */ - delete_all_subwindows (f->root_window); + delete_all_child_windows (f->root_window); f->root_window = Qnil; Vframe_list = Fdelq (frame, Vframe_list); @@ -1359,6 +1359,13 @@ delete_frame (Lisp_Object frame, Lisp_Object force) /* If needed, delete the terminal that this frame was on. (This must be done after the frame is killed.) */ terminal->reference_count--; +#ifdef USE_GTK + /* FIXME: Deleting the terminal crashes emacs because of a GTK + bug. + http://lists.gnu.org/archive/html/emacs-devel/2011-10/msg00363.html */ + if (terminal->reference_count == 0 && terminal->type == output_x_window) + terminal->reference_count = 1; +#endif /* USE_GTK */ if (terminal->reference_count == 0) { Lisp_Object tmp; @@ -2490,7 +2497,7 @@ If FRAME is omitted, the selected frame is used. The exact value of the result depends on the window-system and toolkit in use: In the Gtk+ version of Emacs, it includes only any window (including -the minibuffer or eacho area), mode line, and header line. It does not +the minibuffer or echo area), mode line, and header line. It does not include the tool bar or menu bar. With the Motif or Lucid toolkits, it also includes the tool bar (but |
