diff options
| -rw-r--r-- | src/ChangeLog | 7 | ||||
| -rw-r--r-- | src/macfns.c | 27 |
2 files changed, 25 insertions, 9 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 740f9b229cf..3428722beca 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,10 @@ | |||
| 1 | 2006-12-22 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | ||
| 2 | |||
| 3 | * macfns.c (mac_update_title_bar) [TARGET_API_MAC_CARBON]: Call | ||
| 4 | mac_update_proxy_icon also when buffer modification flag changed. | ||
| 5 | [TARGET_API_MAC_CARBON] (mac_update_proxy_icon): Don't update alias, | ||
| 6 | but compare FSRef/FSSpec of resolved alias. | ||
| 7 | |||
| 1 | 2006-12-21 Kim F. Storm <storm@cua.dk> | 8 | 2006-12-21 Kim F. Storm <storm@cua.dk> |
| 2 | 9 | ||
| 3 | * w32.c (_sys_wait_accept): Fix handle leak. | 10 | * w32.c (_sys_wait_accept): Fix handle leak. |
diff --git a/src/macfns.c b/src/macfns.c index 521156a0de6..21cff69dd40 100644 --- a/src/macfns.c +++ b/src/macfns.c | |||
| @@ -1969,9 +1969,9 @@ mac_update_proxy_icon (f) | |||
| 1969 | { | 1969 | { |
| 1970 | AEDesc desc; | 1970 | AEDesc desc; |
| 1971 | #ifdef MAC_OSX | 1971 | #ifdef MAC_OSX |
| 1972 | FSRef fref; | 1972 | FSRef fref, fref_proxy; |
| 1973 | #else | 1973 | #else |
| 1974 | FSSpec fss; | 1974 | FSSpec fss, fss_proxy; |
| 1975 | #endif | 1975 | #endif |
| 1976 | Boolean changed; | 1976 | Boolean changed; |
| 1977 | Lisp_Object encoded_file_name = ENCODE_FILE (file_name); | 1977 | Lisp_Object encoded_file_name = ENCODE_FILE (file_name); |
| @@ -1997,10 +1997,19 @@ mac_update_proxy_icon (f) | |||
| 1997 | { | 1997 | { |
| 1998 | if (alias) | 1998 | if (alias) |
| 1999 | { | 1999 | { |
| 2000 | /* (FS)ResolveAlias never sets `changed' to true if | ||
| 2001 | `alias' is minimal. */ | ||
| 2000 | #ifdef MAC_OSX | 2002 | #ifdef MAC_OSX |
| 2001 | err = FSUpdateAlias (NULL, &fref, alias, &changed); | 2003 | err = FSResolveAlias (NULL, alias, &fref_proxy, &changed); |
| 2004 | if (err == noErr) | ||
| 2005 | err = FSCompareFSRefs (&fref, &fref_proxy); | ||
| 2002 | #else | 2006 | #else |
| 2003 | err = UpdateAlias (NULL, &fss, alias, &changed); | 2007 | err = ResolveAlias (NULL, alias, &fss_proxy, &changed); |
| 2008 | if (err == noErr) | ||
| 2009 | err = !(fss.vRefNum == fss_proxy.vRefNum | ||
| 2010 | && fss.parID == fss_proxy.parID | ||
| 2011 | && EqualString (fss.name, fss_proxy.name, | ||
| 2012 | false, true)); | ||
| 2004 | #endif | 2013 | #endif |
| 2005 | } | 2014 | } |
| 2006 | if (err != noErr || alias == NULL) | 2015 | if (err != noErr || alias == NULL) |
| @@ -2051,11 +2060,11 @@ mac_update_title_bar (f, save_match_data) | |||
| 2051 | confusing. */ | 2060 | confusing. */ |
| 2052 | || (!MINI_WINDOW_P (w) | 2061 | || (!MINI_WINDOW_P (w) |
| 2053 | && (modified_p != !NILP (w->last_had_star)))) | 2062 | && (modified_p != !NILP (w->last_had_star)))) |
| 2054 | SetWindowModified (FRAME_MAC_WINDOW (f), | 2063 | { |
| 2055 | !MINI_WINDOW_P (w) && modified_p); | 2064 | SetWindowModified (FRAME_MAC_WINDOW (f), |
| 2056 | 2065 | !MINI_WINDOW_P (w) && modified_p); | |
| 2057 | if (windows_or_buffers_changed) | 2066 | mac_update_proxy_icon (f); |
| 2058 | mac_update_proxy_icon (f); | 2067 | } |
| 2059 | #endif | 2068 | #endif |
| 2060 | } | 2069 | } |
| 2061 | 2070 | ||