# HG changeset patch # User YAMAMOTO Mitsuharu # Date 1174896807 0 # Node ID d3898ad6d0d5c2ce236c7f744eb2c4b62580c532 # Parent f6a5251341886ebbd9f01961be6f36d761ebf453 (create_text_encoding_info_alist): Move assignments outside predicate macros. (mac_initialize_display_info) [MAC_OSX]: dpyinfo->height and dpyinfo->width are those of whole screen. diff -r f6a525134188 -r d3898ad6d0d5 src/macterm.c --- a/src/macterm.c Mon Mar 26 08:13:09 2007 +0000 +++ b/src/macterm.c Mon Mar 26 08:13:27 2007 +0000 @@ -7172,11 +7172,14 @@ Lisp_Object existing_info; if (!(CONSP (charset_info) - && STRINGP (charset = XCAR (charset_info)) + && (charset = XCAR (charset_info), + STRINGP (charset)) && CONSP (XCDR (charset_info)) - && INTEGERP (text_encoding = XCAR (XCDR (charset_info))) + && (text_encoding = XCAR (XCDR (charset_info)), + INTEGERP (text_encoding)) && CONSP (XCDR (XCDR (charset_info))) - && SYMBOLP (coding_system = XCAR (XCDR (XCDR (charset_info)))))) + && (coding_system = XCAR (XCDR (XCDR (charset_info))), + SYMBOLP (coding_system)))) continue; existing_info = assq_no_quit (text_encoding, result); @@ -11538,8 +11541,32 @@ but this may not be what is actually used. Mac OSX can do better. */ dpyinfo->color_p = CGDisplaySamplesPerPixel (kCGDirectMainDisplay) > 1; dpyinfo->n_planes = CGDisplayBitsPerPixel (kCGDirectMainDisplay); - dpyinfo->height = CGDisplayPixelsHigh (kCGDirectMainDisplay); - dpyinfo->width = CGDisplayPixelsWide (kCGDirectMainDisplay); + { + CGDisplayErr err; + CGDisplayCount ndisps; + CGDirectDisplayID *displays; + + err = CGGetActiveDisplayList (0, NULL, &ndisps); + if (err == noErr) + { + displays = alloca (sizeof (CGDirectDisplayID) * ndisps); + err = CGGetActiveDisplayList (ndisps, displays, &ndisps); + } + if (err == noErr) + { + CGRect bounds = CGRectMake (0, 0, 0, 0); + + while (ndisps-- > 0) + bounds = CGRectUnion (bounds, CGDisplayBounds (displays[ndisps])); + dpyinfo->height = CGRectGetHeight (bounds); + dpyinfo->width = CGRectGetWidth (bounds); + } + else + { + dpyinfo->height = CGDisplayPixelsHigh (kCGDirectMainDisplay); + dpyinfo->width = CGDisplayPixelsWide (kCGDirectMainDisplay); + } + } #else { GDHandle main_device_handle = LMGetMainDevice();