diff options
| author | Karoly Lorentey | 2004-11-06 17:52:02 +0000 |
|---|---|---|
| committer | Karoly Lorentey | 2004-11-06 17:52:02 +0000 |
| commit | 65ea79492334e2ef7b5b4e0d23b6f68ba2f4d0bb (patch) | |
| tree | 853cf391ca1abda4f4ccd6fe8e7bb43f7c86ee08 /src/macfns.c | |
| parent | e0bc17abe6979d607e8de4684dddb96e53c60065 (diff) | |
| parent | 392cf16dd0ee9358f8af0cd0d8048b822456bbeb (diff) | |
| download | emacs-65ea79492334e2ef7b5b4e0d23b6f68ba2f4d0bb.tar.gz emacs-65ea79492334e2ef7b5b4e0d23b6f68ba2f4d0bb.zip | |
Merged in changes from CVS trunk.
Patches applied:
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-653
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-654
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-655
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-656
Update from CVS: lisp/man.el (Man-xref-normal-file): Fix help-echo.
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-657
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-658
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-659
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-660
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-661
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-662
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-663
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-664
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-665
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-666
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-667
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-668
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-669
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-670
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-671
Update from CVS
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-64
Update from CVS
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-65
Update from CVS
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-66
Update from CVS
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-67
Update from CVS
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-68
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-264
Diffstat (limited to 'src/macfns.c')
| -rw-r--r-- | src/macfns.c | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/src/macfns.c b/src/macfns.c index 88f975a65c8..401c7011fea 100644 --- a/src/macfns.c +++ b/src/macfns.c | |||
| @@ -4216,22 +4216,23 @@ Value is t if tooltip was open, nil otherwise. */) | |||
| 4216 | 4216 | ||
| 4217 | extern Lisp_Object Qfile_name_history; | 4217 | extern Lisp_Object Qfile_name_history; |
| 4218 | 4218 | ||
| 4219 | DEFUN ("x-file-dialog", Fx_file_dialog, Sx_file_dialog, 2, 4, 0, | 4219 | DEFUN ("x-file-dialog", Fx_file_dialog, Sx_file_dialog, 2, 5, 0, |
| 4220 | doc: /* Read file name, prompting with PROMPT in directory DIR. | 4220 | doc: /* Read file name, prompting with PROMPT in directory DIR. |
| 4221 | Use a file selection dialog. | 4221 | Use a file selection dialog. |
| 4222 | Select DEFAULT-FILENAME in the dialog's file selection box, if | 4222 | Select DEFAULT-FILENAME in the dialog's file selection box, if |
| 4223 | specified. Ensure that file exists if MUSTMATCH is non-nil. */) | 4223 | specified. Ensure that file exists if MUSTMATCH is non-nil. |
| 4224 | (prompt, dir, default_filename, mustmatch) | 4224 | If ONLY-DIR-P is non-nil, the user can only select directories. */) |
| 4225 | Lisp_Object prompt, dir, default_filename, mustmatch; | 4225 | (prompt, dir, default_filename, mustmatch, only_dir_p) |
| 4226 | Lisp_Object prompt, dir, default_filename, mustmatch, only_dir_p; | ||
| 4226 | { | 4227 | { |
| 4227 | struct frame *f = SELECTED_FRAME (); | 4228 | struct frame *f = SELECTED_FRAME (); |
| 4228 | Lisp_Object file = Qnil; | 4229 | Lisp_Object file = Qnil; |
| 4229 | int count = SPECPDL_INDEX (); | 4230 | int count = SPECPDL_INDEX (); |
| 4230 | struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5; | 4231 | struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5, gcpro6; |
| 4231 | char filename[1001]; | 4232 | char filename[1001]; |
| 4232 | int default_filter_index = 1; /* 1: All Files, 2: Directories only */ | 4233 | int default_filter_index = 1; /* 1: All Files, 2: Directories only */ |
| 4233 | 4234 | ||
| 4234 | GCPRO5 (prompt, dir, default_filename, mustmatch, file); | 4235 | GCPRO6 (prompt, dir, default_filename, mustmatch, file, only_dir_p); |
| 4235 | CHECK_STRING (prompt); | 4236 | CHECK_STRING (prompt); |
| 4236 | CHECK_STRING (dir); | 4237 | CHECK_STRING (dir); |
| 4237 | 4238 | ||
| @@ -4245,7 +4246,8 @@ specified. Ensure that file exists if MUSTMATCH is non-nil. */) | |||
| 4245 | NavDialogRef dialogRef; | 4246 | NavDialogRef dialogRef; |
| 4246 | NavTypeListHandle fileTypes = NULL; | 4247 | NavTypeListHandle fileTypes = NULL; |
| 4247 | NavUserAction userAction; | 4248 | NavUserAction userAction; |
| 4248 | CFStringRef message=NULL, client=NULL, saveName = NULL; | 4249 | CFStringRef message=NULL, client=NULL, saveName = NULL, ok = NULL; |
| 4250 | CFStringRef title = NULL; | ||
| 4249 | 4251 | ||
| 4250 | BLOCK_INPUT; | 4252 | BLOCK_INPUT; |
| 4251 | /* No need for a callback function because we are modal */ | 4253 | /* No need for a callback function because we are modal */ |
| @@ -4268,13 +4270,19 @@ specified. Ensure that file exists if MUSTMATCH is non-nil. */) | |||
| 4268 | options.clientName = client; | 4270 | options.clientName = client; |
| 4269 | */ | 4271 | */ |
| 4270 | 4272 | ||
| 4271 | /* Do Dired hack copied from w32fns.c */ | 4273 | if (!NILP (only_dir_p)) |
| 4272 | if (!NILP(prompt) && strncmp (SDATA(prompt), "Dired", 5) == 0) | ||
| 4273 | status = NavCreateChooseFolderDialog(&options, NULL, NULL, NULL, | 4274 | status = NavCreateChooseFolderDialog(&options, NULL, NULL, NULL, |
| 4274 | &dialogRef); | 4275 | &dialogRef); |
| 4275 | else if (NILP (mustmatch)) | 4276 | else if (NILP (mustmatch)) |
| 4276 | { | 4277 | { |
| 4277 | /* This is a save dialog */ | 4278 | /* This is a save dialog */ |
| 4279 | ok = CFStringCreateWithCString (NULL, "Ok", kCFStringEncodingUTF8); | ||
| 4280 | title = CFStringCreateWithCString (NULL, "Enter name", | ||
| 4281 | kCFStringEncodingUTF8); | ||
| 4282 | options.optionFlags |= kNavDontConfirmReplacement; | ||
| 4283 | options.actionButtonLabel = ok; | ||
| 4284 | options.windowTitle = title; | ||
| 4285 | |||
| 4278 | if (!NILP(default_filename)) | 4286 | if (!NILP(default_filename)) |
| 4279 | { | 4287 | { |
| 4280 | saveName = CFStringCreateWithCString(NULL, SDATA(default_filename), | 4288 | saveName = CFStringCreateWithCString(NULL, SDATA(default_filename), |
| @@ -4282,20 +4290,10 @@ specified. Ensure that file exists if MUSTMATCH is non-nil. */) | |||
| 4282 | options.saveFileName = saveName; | 4290 | options.saveFileName = saveName; |
| 4283 | options.optionFlags |= kNavSelectDefaultLocation; | 4291 | options.optionFlags |= kNavSelectDefaultLocation; |
| 4284 | } | 4292 | } |
| 4285 | /* MAC_TODO: Find a better way to determine if this is a save | ||
| 4286 | or load dialog than comparing dir with default_filename */ | ||
| 4287 | if (EQ(dir, default_filename)) | ||
| 4288 | { | ||
| 4289 | status = NavCreateChooseFileDialog(&options, fileTypes, | ||
| 4290 | NULL, NULL, NULL, NULL, | ||
| 4291 | &dialogRef); | ||
| 4292 | } | ||
| 4293 | else { | ||
| 4294 | status = NavCreatePutFileDialog(&options, | 4293 | status = NavCreatePutFileDialog(&options, |
| 4295 | 'TEXT', kNavGenericSignature, | 4294 | 'TEXT', kNavGenericSignature, |
| 4296 | NULL, NULL, &dialogRef); | 4295 | NULL, NULL, &dialogRef); |
| 4297 | } | 4296 | } |
| 4298 | } | ||
| 4299 | else | 4297 | else |
| 4300 | { | 4298 | { |
| 4301 | /* This is an open dialog*/ | 4299 | /* This is an open dialog*/ |
| @@ -4324,6 +4322,8 @@ specified. Ensure that file exists if MUSTMATCH is non-nil. */) | |||
| 4324 | if (saveName) CFRelease(saveName); | 4322 | if (saveName) CFRelease(saveName); |
| 4325 | if (client) CFRelease(client); | 4323 | if (client) CFRelease(client); |
| 4326 | if (message) CFRelease(message); | 4324 | if (message) CFRelease(message); |
| 4325 | if (ok) CFRelease(ok); | ||
| 4326 | if (title) CFRelease(title); | ||
| 4327 | 4327 | ||
| 4328 | if (status == noErr) { | 4328 | if (status == noErr) { |
| 4329 | userAction = NavDialogGetUserAction(dialogRef); | 4329 | userAction = NavDialogGetUserAction(dialogRef); |