diff options
author | Karoly Lorentey <[email protected]> | 2005-03-19 17:55:13 +0000 |
---|---|---|
committer | Karoly Lorentey <[email protected]> | 2005-03-19 17:55:13 +0000 |
commit | 392711ede18168618ac6eedd4fdf5910d11a2714 (patch) | |
tree | 29940aa43a5fb4527b4111db7fb7aa2b57b444fd /src/frame.c | |
parent | 04e9296582b1bbe7b2c5911691d9fbe4a9581382 (diff) | |
parent | 951f97e67d904729032b476caf5f7c2e7e303d73 (diff) |
Merged from [email protected] (patch 39-44, 184-191)
Patches applied:
* [email protected]/emacs--cvs-trunk--0--patch-184
Update from CVS
* [email protected]/emacs--cvs-trunk--0--patch-185
Update from CVS
* [email protected]/emacs--cvs-trunk--0--patch-186
Update from CVS
* [email protected]/emacs--cvs-trunk--0--patch-187
Merge from gnus--rel--5.10
* [email protected]/emacs--cvs-trunk--0--patch-188
Update from CVS
* [email protected]/emacs--cvs-trunk--0--patch-189
Update from CVS
* [email protected]/emacs--cvs-trunk--0--patch-190
Update from CVS
* [email protected]/emacs--cvs-trunk--0--patch-191
Update from CVS
* [email protected]/gnus--rel--5.10--patch-39
Merge from emacs--cvs-trunk--0
* [email protected]/gnus--rel--5.10--patch-40
Update from CVS
* [email protected]/gnus--rel--5.10--patch-41
Update from CVS
* [email protected]/gnus--rel--5.10--patch-42
Update from CVS
* [email protected]/gnus--rel--5.10--patch-43
Update from CVS
* [email protected]/gnus--rel--5.10--patch-44
Merge from emacs--cvs-trunk--0
git-archimport-id: [email protected]/emacs--multi-tty--0--patch-311
Diffstat (limited to 'src/frame.c')
-rw-r--r-- | src/frame.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/frame.c b/src/frame.c index 375b1a20a9..6c8f837bbd 100644 --- a/src/frame.c +++ b/src/frame.c @@ -1,5 +1,5 @@ /* Generic frame functions. - Copyright (C) 1993, 1994, 1995, 1997, 1999, 2000, 2001, 2003, 2004 + Copyright (C) 1993, 1994, 1995, 1997, 1999, 2000, 2001, 2003, 2004, 2005 Free Software Foundation. This file is part of GNU Emacs. @@ -944,11 +944,28 @@ to that frame. */) } DEFUN ("ignore-event", Fignore_event, Signore_event, 0, 0, "", - doc: /* Do nothing, but preserve any prefix argument already specified. + doc: /* Do nothing. This is a suitable binding for `iconify-frame' and `make-frame-visible'. */) () { - current_kboard->Vprefix_arg = Vcurrent_prefix_arg; + /* Contrary to `handle-switch-frame', `ignore-event' is used from + `special-event-map'. Commands from that map are run in a special + way that automatically preserves the prefix-arg. Restoring + the prefix arg here is not just redundant but harmful: + - C-u C-x v = + - current-prefix-arg is set to non-nil, prefix-arg is set to nil. + - after the first prompt, the exit-minibuffer-hook is run which may + iconify a frame and thus push a `iconify-frame' event. + - after running exit-minibuffer-hook, current-prefix-arg is + restored to the non-nil value it had before the prompt. + - we enter the second prompt. + current-prefix-arg is non-nil, prefix-arg is nil. + - before running the first real event, we run the special iconify-frame + event, but we pass the `special' arg to execute-command so + current-prefix-arg and prefix-arg are left untouched. + - here we foolishly copy the non-nil current-prefix-arg to prefix-arg. + - the next key event will have a spuriously non-nil current-prefix-arg. + current_kboard->Vprefix_arg = Vcurrent_prefix_arg; */ return Qnil; } |