diff options
| author | Karoly Lorentey | 2006-10-14 16:56:21 +0000 |
|---|---|---|
| committer | Karoly Lorentey | 2006-10-14 16:56:21 +0000 |
| commit | 3f87f67ee215ffeecbd2f53bd7f342cdf03f47df (patch) | |
| tree | 16f2af9111af08a94d608d96a957f5c3ec5effcc /src/macfns.c | |
| parent | 350e4fb815d7413ef6d339dd664014706f742927 (diff) | |
| parent | 7a210b69c7f92650c524766d1b9d3f3eefdd67c7 (diff) | |
| download | emacs-3f87f67ee215ffeecbd2f53bd7f342cdf03f47df.tar.gz emacs-3f87f67ee215ffeecbd2f53bd7f342cdf03f47df.zip | |
Merged from emacs@sv.gnu.org
Patches applied:
* emacs@sv.gnu.org/emacs--devo--0--patch-371
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-372
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-373
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-374
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-375
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-376
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-377
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-378
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-379
Merge from erc--emacs--21
* emacs@sv.gnu.org/emacs--devo--0--patch-380
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-381
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-382
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-383
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-384
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-385
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-386
Update from erc--emacs--22
* emacs@sv.gnu.org/emacs--devo--0--patch-387
Fix ERC bug introduced in last patch
* emacs@sv.gnu.org/emacs--devo--0--patch-388
Update from erc--emacs--22
* emacs@sv.gnu.org/emacs--devo--0--patch-389
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-390
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-391
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-392
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-393
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-394
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-395
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-396
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-397
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-398
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-399
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-400
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-401
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-402
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-403
Rcirc update from Ryan Yeske
* emacs@sv.gnu.org/emacs--devo--0--patch-404
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-405
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-406
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-407
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-408
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-409
Update from CVS
* emacs@sv.gnu.org/emacs--devo--0--patch-410
Merge from gnus--rel--5.10
* emacs@sv.gnu.org/emacs--devo--0--patch-411
Miscellaneous tq-related fixes.
* emacs@sv.gnu.org/emacs--devo--0--patch-412
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-121
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-122
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-123
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-124
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-125
Update from CVS
* emacs@sv.gnu.org/gnus--rel--5.10--patch-126
Merge from emacs--devo--0
* emacs@sv.gnu.org/gnus--rel--5.10--patch-127
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-581
Diffstat (limited to 'src/macfns.c')
| -rw-r--r-- | src/macfns.c | 98 |
1 files changed, 56 insertions, 42 deletions
diff --git a/src/macfns.c b/src/macfns.c index 8716f072411..2d004be9962 100644 --- a/src/macfns.c +++ b/src/macfns.c | |||
| @@ -1945,63 +1945,80 @@ static void | |||
| 1945 | mac_update_proxy_icon (f) | 1945 | mac_update_proxy_icon (f) |
| 1946 | struct frame *f; | 1946 | struct frame *f; |
| 1947 | { | 1947 | { |
| 1948 | OSStatus err; | ||
| 1948 | Lisp_Object file_name = | 1949 | Lisp_Object file_name = |
| 1949 | XBUFFER (XWINDOW (FRAME_SELECTED_WINDOW (f))->buffer)->filename; | 1950 | XBUFFER (XWINDOW (FRAME_SELECTED_WINDOW (f))->buffer)->filename; |
| 1950 | Window w = FRAME_MAC_WINDOW (f); | 1951 | Window w = FRAME_MAC_WINDOW (f); |
| 1951 | 1952 | AliasHandle alias = NULL; | |
| 1952 | if (FRAME_FILE_NAME (f) == NULL && !STRINGP (file_name)) | ||
| 1953 | return; | ||
| 1954 | if (FRAME_FILE_NAME (f) && STRINGP (file_name) | ||
| 1955 | && strcmp (FRAME_FILE_NAME (f), SDATA (file_name)) == 0) | ||
| 1956 | return; | ||
| 1957 | |||
| 1958 | if (FRAME_FILE_NAME (f)) | ||
| 1959 | { | ||
| 1960 | xfree (FRAME_FILE_NAME (f)); | ||
| 1961 | FRAME_FILE_NAME (f) = NULL; | ||
| 1962 | } | ||
| 1963 | 1953 | ||
| 1964 | BLOCK_INPUT; | 1954 | BLOCK_INPUT; |
| 1965 | 1955 | ||
| 1956 | err = GetWindowProxyAlias (w, &alias); | ||
| 1957 | if (err == errWindowDoesNotHaveProxy && !STRINGP (file_name)) | ||
| 1958 | goto out; | ||
| 1959 | |||
| 1966 | if (STRINGP (file_name)) | 1960 | if (STRINGP (file_name)) |
| 1967 | { | 1961 | { |
| 1968 | OSStatus err; | ||
| 1969 | AEDesc desc; | 1962 | AEDesc desc; |
| 1963 | #ifdef MAC_OSX | ||
| 1964 | FSRef fref; | ||
| 1965 | #else | ||
| 1966 | FSSpec fss; | ||
| 1967 | #endif | ||
| 1968 | Boolean changed; | ||
| 1970 | Lisp_Object encoded_file_name = ENCODE_FILE (file_name); | 1969 | Lisp_Object encoded_file_name = ENCODE_FILE (file_name); |
| 1971 | 1970 | ||
| 1972 | #ifdef MAC_OS8 | 1971 | #ifdef MAC_OSX |
| 1972 | err = AECoercePtr (TYPE_FILE_NAME, SDATA (encoded_file_name), | ||
| 1973 | SBYTES (encoded_file_name), typeFSRef, &desc); | ||
| 1974 | #else | ||
| 1973 | SetPortWindowPort (w); | 1975 | SetPortWindowPort (w); |
| 1974 | #endif | ||
| 1975 | err = AECoercePtr (TYPE_FILE_NAME, SDATA (encoded_file_name), | 1976 | err = AECoercePtr (TYPE_FILE_NAME, SDATA (encoded_file_name), |
| 1976 | SBYTES (encoded_file_name), typeAlias, &desc); | 1977 | SBYTES (encoded_file_name), typeFSS, &desc); |
| 1978 | #endif | ||
| 1977 | if (err == noErr) | 1979 | if (err == noErr) |
| 1978 | { | 1980 | { |
| 1979 | Size size = AEGetDescDataSize (&desc); | 1981 | #ifdef MAC_OSX |
| 1980 | AliasHandle alias = (AliasHandle) NewHandle (size); | 1982 | err = AEGetDescData (&desc, &fref, sizeof (FSRef)); |
| 1981 | 1983 | #else | |
| 1982 | if (alias == NULL) | 1984 | err = AEGetDescData (&desc, &fss, sizeof (FSSpec)); |
| 1983 | err = memFullErr; | 1985 | #endif |
| 1984 | else | ||
| 1985 | { | ||
| 1986 | HLock ((Handle) alias); | ||
| 1987 | err = AEGetDescData (&desc, *alias, size); | ||
| 1988 | HUnlock ((Handle) alias); | ||
| 1989 | if (err == noErr) | ||
| 1990 | err = SetWindowProxyAlias (w, alias); | ||
| 1991 | DisposeHandle ((Handle) alias); | ||
| 1992 | } | ||
| 1993 | AEDisposeDesc (&desc); | 1986 | AEDisposeDesc (&desc); |
| 1994 | } | 1987 | } |
| 1995 | if (err == noErr) | 1988 | if (err == noErr) |
| 1996 | { | 1989 | { |
| 1997 | FRAME_FILE_NAME (f) = xmalloc (SBYTES (file_name) + 1); | 1990 | if (alias) |
| 1998 | strcpy (FRAME_FILE_NAME (f), SDATA (file_name)); | 1991 | { |
| 1992 | #ifdef MAC_OSX | ||
| 1993 | err = FSUpdateAlias (NULL, &fref, alias, &changed); | ||
| 1994 | #else | ||
| 1995 | err = UpdateAlias (NULL, &fss, alias, &changed); | ||
| 1996 | #endif | ||
| 1997 | } | ||
| 1998 | if (err != noErr || alias == NULL) | ||
| 1999 | { | ||
| 2000 | if (alias) | ||
| 2001 | DisposeHandle ((Handle) alias); | ||
| 2002 | #ifdef MAC_OSX | ||
| 2003 | err = FSNewAliasMinimal (&fref, &alias); | ||
| 2004 | #else | ||
| 2005 | err = NewAliasMinimal (&fss, &alias); | ||
| 2006 | #endif | ||
| 2007 | changed = true; | ||
| 2008 | } | ||
| 1999 | } | 2009 | } |
| 2010 | if (err == noErr) | ||
| 2011 | if (changed) | ||
| 2012 | err = SetWindowProxyAlias (w, alias); | ||
| 2000 | } | 2013 | } |
| 2001 | 2014 | ||
| 2002 | if (FRAME_FILE_NAME (f) == NULL) | 2015 | if (alias) |
| 2016 | DisposeHandle ((Handle) alias); | ||
| 2017 | |||
| 2018 | if (err != noErr || !STRINGP (file_name)) | ||
| 2003 | RemoveWindowProxy (w); | 2019 | RemoveWindowProxy (w); |
| 2004 | 2020 | ||
| 2021 | out: | ||
| 2005 | UNBLOCK_INPUT; | 2022 | UNBLOCK_INPUT; |
| 2006 | } | 2023 | } |
| 2007 | #endif | 2024 | #endif |
| @@ -2566,7 +2583,6 @@ This function is an internal primitive--use `make-frame' instead. */) | |||
| 2566 | f->output_data.mac = (struct mac_output *) xmalloc (sizeof (struct mac_output)); | 2583 | f->output_data.mac = (struct mac_output *) xmalloc (sizeof (struct mac_output)); |
| 2567 | bzero (f->output_data.mac, sizeof (struct mac_output)); | 2584 | bzero (f->output_data.mac, sizeof (struct mac_output)); |
| 2568 | FRAME_FONTSET (f) = -1; | 2585 | FRAME_FONTSET (f) = -1; |
| 2569 | record_unwind_protect (unwind_create_frame, frame); | ||
| 2570 | 2586 | ||
| 2571 | f->icon_name | 2587 | f->icon_name |
| 2572 | = mac_get_arg (parms, Qicon_name, "iconName", "Title", RES_TYPE_STRING); | 2588 | = mac_get_arg (parms, Qicon_name, "iconName", "Title", RES_TYPE_STRING); |
| @@ -2574,6 +2590,9 @@ This function is an internal primitive--use `make-frame' instead. */) | |||
| 2574 | f->icon_name = Qnil; | 2590 | f->icon_name = Qnil; |
| 2575 | 2591 | ||
| 2576 | /* FRAME_MAC_DISPLAY_INFO (f) = dpyinfo; */ | 2592 | /* FRAME_MAC_DISPLAY_INFO (f) = dpyinfo; */ |
| 2593 | |||
| 2594 | /* With FRAME_MAC_DISPLAY_INFO set up, this unwind-protect is safe. */ | ||
| 2595 | record_unwind_protect (unwind_create_frame, frame); | ||
| 2577 | #if GLYPH_DEBUG | 2596 | #if GLYPH_DEBUG |
| 2578 | image_cache_refcount = FRAME_X_IMAGE_CACHE (f)->refcount; | 2597 | image_cache_refcount = FRAME_X_IMAGE_CACHE (f)->refcount; |
| 2579 | dpyinfo_refcount = dpyinfo->reference_count; | 2598 | dpyinfo_refcount = dpyinfo->reference_count; |
| @@ -2876,14 +2895,9 @@ DEFUN ("xw-color-values", Fxw_color_values, Sxw_color_values, 1, 2, 0, | |||
| 2876 | CHECK_STRING (color); | 2895 | CHECK_STRING (color); |
| 2877 | 2896 | ||
| 2878 | if (mac_defined_color (f, SDATA (color), &foo, 0)) | 2897 | if (mac_defined_color (f, SDATA (color), &foo, 0)) |
| 2879 | { | 2898 | return list3 (make_number (foo.red), |
| 2880 | Lisp_Object rgb[3]; | 2899 | make_number (foo.green), |
| 2881 | 2900 | make_number (foo.blue)); | |
| 2882 | rgb[0] = make_number (foo.red); | ||
| 2883 | rgb[1] = make_number (foo.green); | ||
| 2884 | rgb[2] = make_number (foo.blue); | ||
| 2885 | return Flist (3, rgb); | ||
| 2886 | } | ||
| 2887 | else | 2901 | else |
| 2888 | return Qnil; | 2902 | return Qnil; |
| 2889 | } | 2903 | } |