diff options
| author | YAMAMOTO Mitsuharu | 2006-05-01 01:11:56 +0000 |
|---|---|---|
| committer | YAMAMOTO Mitsuharu | 2006-05-01 01:11:56 +0000 |
| commit | caec817144f49a22d92f77ffb1ed6091ce654b21 (patch) | |
| tree | 624c742950de4455f2c99fea5ab44b820aff8dfe /src | |
| parent | d3601bf266b918b090170efa11e32fe8ba137151 (diff) | |
| download | emacs-caec817144f49a22d92f77ffb1ed6091ce654b21.tar.gz emacs-caec817144f49a22d92f77ffb1ed6091ce654b21.zip | |
(mac_update_title_bar): New function.
[TARGET_API_MAC_CARBON] (mac_update_proxy_icon): New function.
(show_hourglass, hide_hourglass) [USE_CG_DRAWING]: Call
mac_prepare_for_quickdraw.
Diffstat (limited to 'src')
| -rw-r--r-- | src/macfns.c | 103 |
1 files changed, 102 insertions, 1 deletions
diff --git a/src/macfns.c b/src/macfns.c index f9a5f051eb4..dd74808d1cf 100644 --- a/src/macfns.c +++ b/src/macfns.c | |||
| @@ -1919,6 +1919,99 @@ mac_set_scroll_bar_width (f, arg, oldval) | |||
| 1919 | x_set_scroll_bar_width (f, arg, oldval); | 1919 | x_set_scroll_bar_width (f, arg, oldval); |
| 1920 | } | 1920 | } |
| 1921 | 1921 | ||
| 1922 | #if TARGET_API_MAC_CARBON | ||
| 1923 | static void | ||
| 1924 | mac_update_proxy_icon (f) | ||
| 1925 | struct frame *f; | ||
| 1926 | { | ||
| 1927 | Lisp_Object file_name = | ||
| 1928 | XBUFFER (XWINDOW (FRAME_SELECTED_WINDOW (f))->buffer)->filename; | ||
| 1929 | Window w = FRAME_MAC_WINDOW (f); | ||
| 1930 | |||
| 1931 | if (FRAME_FILE_NAME (f) == NULL && !STRINGP (file_name)) | ||
| 1932 | return; | ||
| 1933 | if (FRAME_FILE_NAME (f) && STRINGP (file_name) | ||
| 1934 | && strcmp (FRAME_FILE_NAME (f), SDATA (file_name)) == 0) | ||
| 1935 | return; | ||
| 1936 | |||
| 1937 | if (FRAME_FILE_NAME (f)) | ||
| 1938 | { | ||
| 1939 | xfree (FRAME_FILE_NAME (f)); | ||
| 1940 | FRAME_FILE_NAME (f) = NULL; | ||
| 1941 | } | ||
| 1942 | |||
| 1943 | BLOCK_INPUT; | ||
| 1944 | |||
| 1945 | if (STRINGP (file_name)) | ||
| 1946 | { | ||
| 1947 | OSStatus err; | ||
| 1948 | AEDesc desc; | ||
| 1949 | Lisp_Object encoded_file_name = ENCODE_FILE (file_name); | ||
| 1950 | |||
| 1951 | #ifdef MAC_OS8 | ||
| 1952 | SetPortWindowPort (w); | ||
| 1953 | #endif | ||
| 1954 | err = AECoercePtr (TYPE_FILE_NAME, SDATA (encoded_file_name), | ||
| 1955 | SBYTES (encoded_file_name), typeAlias, &desc); | ||
| 1956 | if (err == noErr) | ||
| 1957 | { | ||
| 1958 | Size size = AEGetDescDataSize (&desc); | ||
| 1959 | AliasHandle alias = (AliasHandle) NewHandle (size); | ||
| 1960 | |||
| 1961 | if (alias == NULL) | ||
| 1962 | err = memFullErr; | ||
| 1963 | else | ||
| 1964 | { | ||
| 1965 | HLock ((Handle) alias); | ||
| 1966 | err = AEGetDescData (&desc, *alias, size); | ||
| 1967 | HUnlock ((Handle) alias); | ||
| 1968 | if (err == noErr) | ||
| 1969 | err = SetWindowProxyAlias (w, alias); | ||
| 1970 | DisposeHandle ((Handle) alias); | ||
| 1971 | } | ||
| 1972 | AEDisposeDesc (&desc); | ||
| 1973 | } | ||
| 1974 | if (err == noErr) | ||
| 1975 | { | ||
| 1976 | FRAME_FILE_NAME (f) = xmalloc (SBYTES (file_name) + 1); | ||
| 1977 | strcpy (FRAME_FILE_NAME (f), SDATA (file_name)); | ||
| 1978 | } | ||
| 1979 | } | ||
| 1980 | |||
| 1981 | if (FRAME_FILE_NAME (f) == NULL) | ||
| 1982 | RemoveWindowProxy (w); | ||
| 1983 | |||
| 1984 | UNBLOCK_INPUT; | ||
| 1985 | } | ||
| 1986 | #endif | ||
| 1987 | |||
| 1988 | void mac_update_title_bar (f, save_match_data) | ||
| 1989 | struct frame *f; | ||
| 1990 | int save_match_data; | ||
| 1991 | { | ||
| 1992 | #if TARGET_API_MAC_CARBON | ||
| 1993 | struct window *w; | ||
| 1994 | int modified_p; | ||
| 1995 | |||
| 1996 | if (!FRAME_MAC_P (f)) | ||
| 1997 | return; | ||
| 1998 | |||
| 1999 | w = XWINDOW (FRAME_SELECTED_WINDOW (f)); | ||
| 2000 | modified_p = (BUF_SAVE_MODIFF (XBUFFER (w->buffer)) | ||
| 2001 | < BUF_MODIFF (XBUFFER (w->buffer))); | ||
| 2002 | if (windows_or_buffers_changed | ||
| 2003 | /* Minibuffer modification status shown in the close button is | ||
| 2004 | confusing. */ | ||
| 2005 | || (!MINI_WINDOW_P (w) | ||
| 2006 | && (modified_p != !NILP (w->last_had_star)))) | ||
| 2007 | SetWindowModified (FRAME_MAC_WINDOW (f), | ||
| 2008 | !MINI_WINDOW_P (w) && modified_p); | ||
| 2009 | |||
| 2010 | if (windows_or_buffers_changed) | ||
| 2011 | mac_update_proxy_icon (f); | ||
| 2012 | #endif | ||
| 2013 | } | ||
| 2014 | |||
| 1922 | 2015 | ||
| 1923 | /* Subroutines of creating a frame. */ | 2016 | /* Subroutines of creating a frame. */ |
| 1924 | 2017 | ||
| @@ -3470,6 +3563,9 @@ show_hourglass (timer) | |||
| 3470 | if (FRAME_LIVE_P (f) && FRAME_MAC_P (f) | 3563 | if (FRAME_LIVE_P (f) && FRAME_MAC_P (f) |
| 3471 | && FRAME_MAC_WINDOW (f) != tip_window) | 3564 | && FRAME_MAC_WINDOW (f) != tip_window) |
| 3472 | { | 3565 | { |
| 3566 | #if USE_CG_DRAWING | ||
| 3567 | mac_prepare_for_quickdraw (f); | ||
| 3568 | #endif | ||
| 3473 | if (!f->output_data.mac->hourglass_control) | 3569 | if (!f->output_data.mac->hourglass_control) |
| 3474 | { | 3570 | { |
| 3475 | Window w = FRAME_MAC_WINDOW (f); | 3571 | Window w = FRAME_MAC_WINDOW (f); |
| @@ -3514,7 +3610,12 @@ hide_hourglass () | |||
| 3514 | if (FRAME_MAC_P (f) | 3610 | if (FRAME_MAC_P (f) |
| 3515 | /* Watch out for newly created frames. */ | 3611 | /* Watch out for newly created frames. */ |
| 3516 | && f->output_data.mac->hourglass_control) | 3612 | && f->output_data.mac->hourglass_control) |
| 3517 | HideControl (f->output_data.mac->hourglass_control); | 3613 | { |
| 3614 | #if USE_CG_DRAWING | ||
| 3615 | mac_prepare_for_quickdraw (f); | ||
| 3616 | #endif | ||
| 3617 | HideControl (f->output_data.mac->hourglass_control); | ||
| 3618 | } | ||
| 3518 | } | 3619 | } |
| 3519 | 3620 | ||
| 3520 | hourglass_shown_p = 0; | 3621 | hourglass_shown_p = 0; |