[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs/src ChangeLog frame.c frame.h terminal.c ...
From: |
Martin Rudalics |
Subject: |
[Emacs-diffs] emacs/src ChangeLog frame.c frame.h terminal.c ... |
Date: |
Mon, 22 Dec 2008 09:40:38 +0000 |
CVSROOT: /sources/emacs
Module name: emacs
Changes by: Martin Rudalics <m061211> 08/12/22 09:40:37
Modified files:
src : ChangeLog frame.c frame.h terminal.c w32fns.c
window.c xfns.c xterm.c
Log message:
* frame.c (delete_frame): New function derived from
Fdelete_frame to handle Qnoelisp value for FORCE argument.
Delete last frame iff FORCE equals Qnoelisp. (Bug#1450)
(Fdelete_frame): Call delete_frame. Remove line from doc-string
saying that FORCE non-nil doesn't run `delete-frame-functions'.
* frame.h: Extern delete_frame.
* window.c (window_loop):
* terminal.c (delete_terminal):
* xterm.c (x_connection_closed):
* xfns.c (Fx_hide_tip):
* w32fns.c (Fx_hide_tip): Call delete_frame instead of
Fdelete_frame.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/src/ChangeLog?cvsroot=emacs&r1=1.7221&r2=1.7222
http://cvs.savannah.gnu.org/viewcvs/emacs/src/frame.c?cvsroot=emacs&r1=1.403&r2=1.404
http://cvs.savannah.gnu.org/viewcvs/emacs/src/frame.h?cvsroot=emacs&r1=1.145&r2=1.146
http://cvs.savannah.gnu.org/viewcvs/emacs/src/terminal.c?cvsroot=emacs&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/emacs/src/w32fns.c?cvsroot=emacs&r1=1.350&r2=1.351
http://cvs.savannah.gnu.org/viewcvs/emacs/src/window.c?cvsroot=emacs&r1=1.635&r2=1.636
http://cvs.savannah.gnu.org/viewcvs/emacs/src/xfns.c?cvsroot=emacs&r1=1.730&r2=1.731
http://cvs.savannah.gnu.org/viewcvs/emacs/src/xterm.c?cvsroot=emacs&r1=1.1018&r2=1.1019
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/emacs/emacs/src/ChangeLog,v
retrieving revision 1.7221
retrieving revision 1.7222
diff -u -b -r1.7221 -r1.7222
--- ChangeLog 21 Dec 2008 15:52:26 -0000 1.7221
+++ ChangeLog 22 Dec 2008 09:40:33 -0000 1.7222
@@ -1,3 +1,18 @@
+2008-12-22 Martin Rudalics <address@hidden>
+
+ * frame.c (delete_frame): New function derived from
+ Fdelete_frame to handle Qnoelisp value for FORCE argument.
+ Delete last frame iff FORCE equals Qnoelisp. (Bug#1450)
+ (Fdelete_frame): Call delete_frame. Remove line from doc-string
+ saying that FORCE non-nil doesn't run `delete-frame-functions'.
+ * frame.h: Extern delete_frame.
+ * window.c (window_loop):
+ * terminal.c (delete_terminal):
+ * xterm.c (x_connection_closed):
+ * xfns.c (Fx_hide_tip):
+ * w32fns.c (Fx_hide_tip): Call delete_frame instead of
+ Fdelete_frame.
+
2008-12-21 Jason Rumney <address@hidden>
* w32uniscribe.c (uniscribe_encode_char): Return FONT_INVALID_CHAR
Index: frame.c
===================================================================
RCS file: /sources/emacs/emacs/src/frame.c,v
retrieving revision 1.403
retrieving revision 1.404
diff -u -b -r1.403 -r1.404
--- frame.c 20 Dec 2008 20:51:23 -0000 1.403
+++ frame.c 22 Dec 2008 09:40:35 -0000 1.404
@@ -1322,20 +1322,13 @@
extern Lisp_Object Qrun_hook_with_args;
-DEFUN ("delete-frame", Fdelete_frame, Sdelete_frame, 0, 2, "",
- doc: /* Delete FRAME, permanently eliminating it from use.
-If omitted, FRAME defaults to the selected frame.
-A frame may not be deleted if its minibuffer is used by other frames.
-Normally, you may not delete a frame if all other frames are invisible,
-but if the second optional argument FORCE is non-nil, you may do so.
-
-This function runs `delete-frame-functions' before actually deleting the
-frame, unless the frame is a tooltip.
-The functions are run with one arg, the frame to be deleted.
-But FORCE inhibits this too. */)
-/* FORCE is non-nil when handling a disconnected terminal. */
- (frame, force)
- Lisp_Object frame, force;
+/* Delete FRAME. When FORCE equals Qnoelisp, delete FRAME
+ unconditionally. x_connection_closed and delete_terminal use
+ this. Any other value of FORCE implements the semantics
+ described for Fdelete_frame. */
+Lisp_Object
+delete_frame (frame, force)
+ register Lisp_Object frame, force;
{
struct frame *f;
struct frame *sf = SELECTED_FRAME ();
@@ -1360,12 +1353,10 @@
if (NILP (force) && !other_visible_frames (f))
error ("Attempt to delete the sole visible or iconified frame");
-#if 0
- /* This is a nice idea, but x_connection_closed needs to be able
+ /* x_connection_closed must have set FORCE to `noelisp' in order
to delete the last frame, if it is gone. */
- if (NILP (XCDR (Vframe_list)))
+ if (NILP (XCDR (Vframe_list)) && !EQ (force, Qnoelisp))
error ("Attempt to delete the only frame");
-#endif
/* Does this frame have a minibuffer, and is it the surrogate
minibuffer for any other frame? */
@@ -1385,19 +1376,20 @@
WINDOW_FRAME (XWINDOW
(FRAME_MINIBUF_WINDOW (XFRAME (this))))))
{
- /* If we MUST delete this frame, delete the other first. */
- if (!NILP (force))
- Fdelete_frame (this, force);
+ /* If we MUST delete this frame, delete the other first.
+ But do this only if FORCE equals `noelisp'. */
+ if (EQ (force, Qnoelisp))
+ delete_frame (this, Qnoelisp);
else
error ("Attempt to delete a surrogate minibuffer frame");
}
}
}
- /* Run `delete-frame-functions'
- unless FORCE is `noelisp' or frame is a tooltip.
- FORCE is set to `noelisp' when handling a disconnect from the terminal,
- so we don't dare call Lisp code. */
+ /* Run `delete-frame-functions' unless FORCE is `noelisp' or
+ frame is a tooltip. FORCE is set to `noelisp' when handling
+ a disconnect from the terminal, so we don't dare call Lisp
+ code. */
if (NILP (Vrun_hooks) || !NILP (Fframe_parameter (frame, intern
("tooltip"))))
;
if (EQ (force, Qnoelisp))
@@ -1642,6 +1634,24 @@
return Qnil;
}
+DEFUN ("delete-frame", Fdelete_frame, Sdelete_frame, 0, 2, "",
+ doc: /* Delete FRAME, permanently eliminating it from use.
+FRAME defaults to the selected frame.
+
+A frame may not be deleted if its minibuffer is used by other frames.
+Normally, you may not delete a frame if all other frames are invisible,
+but if the second optional argument FORCE is non-nil, you may do so.
+
+This function runs `delete-frame-functions' before actually
+deleting the frame, unless the frame is a tooltip.
+The functions are run with one argument, the frame to be deleted. */)
+ (frame, force)
+ Lisp_Object frame, force;
+{
+ return delete_frame (frame, !NILP (force) ? Qt : Qnil);
+}
+
+
/* Return mouse position in character cell units. */
DEFUN ("mouse-position", Fmouse_position, Smouse_position, 0, 0, 0,
Index: frame.h
===================================================================
RCS file: /sources/emacs/emacs/src/frame.h,v
retrieving revision 1.145
retrieving revision 1.146
diff -u -b -r1.145 -r1.146
--- frame.h 12 Nov 2008 15:51:35 -0000 1.145
+++ frame.h 22 Dec 2008 09:40:35 -0000 1.146
@@ -1115,6 +1115,7 @@
Lisp_Object component,
Lisp_Object subclass);
+extern Lisp_Object delete_frame P_ ((Lisp_Object, Lisp_Object));
#endif /* HAVE_WINDOW_SYSTEM */
Index: terminal.c
===================================================================
RCS file: /sources/emacs/emacs/src/terminal.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- terminal.c 31 Jul 2008 02:47:29 -0000 1.13
+++ terminal.c 22 Dec 2008 09:40:35 -0000 1.14
@@ -256,7 +256,7 @@
struct terminal **tp;
Lisp_Object tail, frame;
- /* Protect against recursive calls. Fdelete_frame calls the
+ /* Protect against recursive calls. delete_frame calls the
delete_terminal_hook when we delete our last frame. */
if (!terminal->name)
return;
@@ -269,8 +269,8 @@
struct frame *f = XFRAME (frame);
if (FRAME_LIVE_P (f) && f->terminal == terminal)
{
- /* Maybe this should pass Qnoelisp rather than Qt? */
- Fdelete_frame (frame, Qt);
+ /* Pass Qnoelisp rather than Qt. */
+ delete_frame (frame, Qnoelisp);
}
}
Index: w32fns.c
===================================================================
RCS file: /sources/emacs/emacs/src/w32fns.c,v
retrieving revision 1.350
retrieving revision 1.351
diff -u -b -r1.350 -r1.351
--- w32fns.c 12 Dec 2008 15:34:46 -0000 1.350
+++ w32fns.c 22 Dec 2008 09:40:35 -0000 1.351
@@ -5944,7 +5944,7 @@
if (FRAMEP (frame))
{
- Fdelete_frame (frame, Qnil);
+ delete_frame (frame, Qnil);
deleted = Qt;
}
Index: window.c
===================================================================
RCS file: /sources/emacs/emacs/src/window.c,v
retrieving revision 1.635
retrieving revision 1.636
diff -u -b -r1.635 -r1.636
--- window.c 20 Nov 2008 10:13:06 -0000 1.635
+++ window.c 22 Dec 2008 09:40:36 -0000 1.636
@@ -2273,7 +2273,7 @@
windows = XCDR (windows);
/* Now we can safely delete the frame. */
- Fdelete_frame (w->frame, Qnil);
+ delete_frame (w->frame, Qnil);
}
else if (NILP (w->parent))
{
@@ -2334,7 +2334,7 @@
windows = XCDR (windows);
/* Now we can safely delete the frame. */
- Fdelete_frame (w->frame, Qnil);
+ delete_frame (w->frame, Qnil);
}
else if (!NILP (w->dedicated) && !NILP (w->parent))
{
@@ -6909,7 +6909,7 @@
int (* fn) P_ ((struct window *, void *));
void *user_data;
{
- /* Fdelete_frame may set FRAME_ROOT_WINDOW (f) to Qnil. */
+ /* delete_frame may set FRAME_ROOT_WINDOW (f) to Qnil. */
if (WINDOWP (FRAME_ROOT_WINDOW (f)))
foreach_window_1 (XWINDOW (FRAME_ROOT_WINDOW (f)), fn, user_data);
}
Index: xfns.c
===================================================================
RCS file: /sources/emacs/emacs/src/xfns.c,v
retrieving revision 1.730
retrieving revision 1.731
diff -u -b -r1.730 -r1.731
--- xfns.c 13 Dec 2008 01:21:17 -0000 1.730
+++ xfns.c 22 Dec 2008 09:40:36 -0000 1.731
@@ -5248,7 +5248,7 @@
if (FRAMEP (frame))
{
- Fdelete_frame (frame, Qnil);
+ delete_frame (frame, Qnil);
deleted = Qt;
#ifdef USE_LUCID
Index: xterm.c
===================================================================
RCS file: /sources/emacs/emacs/src/xterm.c,v
retrieving revision 1.1018
retrieving revision 1.1019
diff -u -b -r1.1018 -r1.1019
--- xterm.c 15 Dec 2008 01:57:54 -0000 1.1018
+++ xterm.c 22 Dec 2008 09:40:37 -0000 1.1019
@@ -7883,7 +7883,7 @@
&& FRAME_X_P (XFRAME (minibuf_frame))
&& ! EQ (frame, minibuf_frame)
&& FRAME_X_DISPLAY_INFO (XFRAME (minibuf_frame)) == dpyinfo)
- Fdelete_frame (frame, Qnoelisp);
+ delete_frame (frame, Qnoelisp);
}
/* Now delete all remaining frames on the dead display.
@@ -7893,10 +7893,10 @@
if (FRAME_X_P (XFRAME (frame))
&& FRAME_X_DISPLAY_INFO (XFRAME (frame)) == dpyinfo)
{
- /* Set this to t so that Fdelete_frame won't get confused
+ /* Set this to t so that delete_frame won't get confused
trying to find a replacement. */
FRAME_KBOARD (XFRAME (frame))->Vdefault_minibuffer_frame = Qt;
- Fdelete_frame (frame, Qnoelisp);
+ delete_frame (frame, Qnoelisp);
}
/* We have to close the display to inform Xt that it doesn't
@@ -10622,7 +10622,7 @@
struct x_display_info *dpyinfo = terminal->display_info.x;
int i;
- /* Protect against recursive calls. Fdelete_frame in
+ /* Protect against recursive calls. delete_frame in
delete_terminal calls us back when it deletes our last frame. */
if (!terminal->name)
return;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] emacs/src ChangeLog frame.c frame.h terminal.c ...,
Martin Rudalics <=