Mercurial > hg > xemacs-beta
view src/s/sol2.h @ 5043:d0c14ea98592
various frame-geometry fixes
-------------------- ChangeLog entries follow: --------------------
src/ChangeLog addition:
2010-02-15 Ben Wing <ben@xemacs.org>
* EmacsFrame.c:
* EmacsFrame.c (EmacsFrameResize):
* console-msw-impl.h:
* console-msw-impl.h (struct mswindows_frame):
* console-msw-impl.h (FRAME_MSWINDOWS_TARGET_RECT):
* device-tty.c:
* device-tty.c (tty_asynch_device_change):
* event-msw.c:
* event-msw.c (mswindows_wnd_proc):
* faces.c (Fface_list):
* faces.h:
* frame-gtk.c:
* frame-gtk.c (gtk_set_initial_frame_size):
* frame-gtk.c (gtk_set_frame_size):
* frame-msw.c:
* frame-msw.c (mswindows_init_frame_1):
* frame-msw.c (mswindows_set_frame_size):
* frame-msw.c (mswindows_size_frame_internal):
* frame-msw.c (msprinter_init_frame_3):
* frame.c:
* frame.c (enum):
* frame.c (Fmake_frame):
* frame.c (adjust_frame_size):
* frame.c (store_minibuf_frame_prop):
* frame.c (Fframe_property):
* frame.c (Fframe_properties):
* frame.c (Fframe_displayable_pixel_height):
* frame.c (Fframe_displayable_pixel_width):
* frame.c (internal_set_frame_size):
* frame.c (Fset_frame_height):
* frame.c (Fset_frame_pixel_height):
* frame.c (Fset_frame_displayable_pixel_height):
* frame.c (Fset_frame_width):
* frame.c (Fset_frame_pixel_width):
* frame.c (Fset_frame_displayable_pixel_width):
* frame.c (Fset_frame_size):
* frame.c (Fset_frame_pixel_size):
* frame.c (Fset_frame_displayable_pixel_size):
* frame.c (frame_conversion_internal_1):
* frame.c (get_frame_displayable_pixel_size):
* frame.c (change_frame_size_1):
* frame.c (change_frame_size):
* frame.c (generate_title_string):
* frame.h:
* gtk-xemacs.c:
* gtk-xemacs.c (gtk_xemacs_size_request):
* gtk-xemacs.c (gtk_xemacs_size_allocate):
* gtk-xemacs.c (gtk_xemacs_paint):
* gutter.c:
* gutter.c (update_gutter_geometry):
* redisplay.c (end_hold_frame_size_changes):
* redisplay.c (redisplay_frame):
* toolbar.c:
* toolbar.c (update_frame_toolbars_geometry):
* window.c:
* window.c (frame_pixsize_valid_p):
* window.c (check_frame_size):
Various fixes to frame geometry to make it a bit easier to understand
and fix some bugs.
1. IMPORTANT: Some renamings. Will need to be applied carefully to
the carbon repository, in the following order:
-- pixel_to_char_size -> pixel_to_frame_unit_size
-- char_to_pixel_size -> frame_unit_to_pixel_size
-- pixel_to_real_char_size -> pixel_to_char_size
-- char_to_real_pixel_size -> char_to_pixel_size
-- Reverse second and third arguments of change_frame_size() and
change_frame_size_1() to try to make functions consistent in
putting width before height.
-- Eliminate old round_size_to_char, because it didn't really
do anything differently from round_size_to_real_char()
-- round_size_to_real_char -> round_size_to_char; any places that
called the old round_size_to_char should just call the new one.
2. IMPORTANT FOR CARBON: The set_frame_size() method is now passed
sizes in "frame units", like all other frame-sizing functions,
rather than some hacked-up combination of char-cell units and
total pixel size. This only affects window systems that use
"pixelated geometry", and I'm not sure if Carbon is one of them.
MS Windows is pixelated, X and GTK are not. For pixelated-geometry
systems, the size in set_frame_size() is in displayable pixels
rather than total pixels and needs to be converted appropriately;
take a look at the changes made to mswindows_set_frame_size()
method if necessary.
3. Add a big long comment in frame.c describing how frame geometry
works.
4. Remove MS Windows-specific character height and width fields,
duplicative and unused.
5. frame-displayable-pixel-* and set-frame-displayable-pixel-*
didn't use to work on MS Windows, but they do now.
6. In general, clean up the handling of "pixelated geometry" so
that fewer functions have to worry about this. This is really
an abomination that should be removed entirely but that will
have to happen later. Fix some buggy code in
frame_conversion_internal() that happened to "work" because it
was countered by oppositely buggy code in change_frame_size().
7. Clean up some frame-size code in toolbar.c and use functions
already provided in frame.c instead of rolling its own.
8. Fix check_frame_size() in window.c, which formerly didn't take
pixelated geometry into account.
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Mon, 15 Feb 2010 22:14:11 -0600 |
parents | 8fea628c26fb |
children | 8c406331e77e 861f2601a38b |
line wrap: on
line source
/* Synched up with: Completely divergent from FSF. */ #define SOLARIS2 1 #define POSIX 1 #ifndef USG #define USG #endif #ifndef USG5_4 #define USG5_4 #endif /* Fix understandable GCC lossage on Solaris 2.6 */ #if defined(__GNUC__) && OS_RELEASE >= 506 && OS_RELEASE < 510 && !defined(NOT_C_CODE) /* GCC va_list munging is a little messed up */ #define __GNUC_VA_LIST #define _VA_LIST_ #define _VA_LIST va_list typedef void *__gnuc_va_list; typedef __gnuc_va_list va_list; /* Missing prototypes for functions added in Solaris 2.6 */ #include <sys/types.h> struct msghdr; struct sockaddr; extern int __xnet_bind (int, const struct sockaddr *, size_t); extern int __xnet_listen (int, int); extern int __xnet_connect (int, const struct sockaddr *, size_t); extern ssize_t __xnet_recvmsg (int, struct msghdr *, int); extern ssize_t __xnet_sendmsg (int, const struct msghdr *, int); extern ssize_t __xnet_sendto (int, const void *, size_t, int, const struct sockaddr *, size_t); extern int __xnet_socket (int, int, int); extern int __xnet_socketpair (int, int, int, int *); extern int __xnet_getsockopt (int, int, int, void *, size_t *); #endif /* GCC && >= Solaris 2.6 && C code */ #include "usg5-4-2.h" /* XEmacs change from 5-4 to 5-4-2 */ #undef PC /* Defined in x86 /usr/include/sys/reg.h */ /* SIGIO seems to be working under Solaris and it makes ^G work better... */ #undef BROKEN_SIGIO /* eggert@twinsun.com said these work in Solaris. Perhaps they work in all kinds of SVR4, but this is more conservative. */ #undef BROKEN_TIOCGETC #undef BROKEN_TIOCGWINSZ #ifdef NOT_C_CODE #define ORDINARY_LINK /* XEmacs change -- some Motif packages need -lgen to get regex and regcmp */ #undef LIBS_SYSTEM #define LIBS_SYSTEM "-lsocket -lnsl -lelf -lgen -ldl" /* SYSTEM_MALLOC must be defined if dbx/RTC is going to be used. dbx/RTC does not work with a static definition of malloc(). */ /* We want to be able to test out ralloc.c. */ /* #define SYSTEM_MALLOC */ /* XEmacs: there used to be a special definition of PTY_TTY_NAME_SPRINTF here that was identical to the other SYSV R4 definitions except that it didn't block SIGCHLD around the call to grantpt(). This is *not* in 19.29 and is almost certainly incorrect. */ #undef UNEXEC #if OS_RELEASE < 506 #define UNEXEC "unexsol2.o" #else #define UNEXEC "unexsol2-6.o" #endif #else /* C_CODE */ #if OS_RELEASE <= 503 /* Solaris 2.3 has a bug in XListFontsWithInfo. */ #define BROKEN_XLISTFONTSWITHINFO #endif /* XEmacs addition: Raymond Toy says XEmacs completely misses SIGCHLD when compiled with GCC 2.7.0 (but not, apparently, with SunPro C?), X11R6, and Solaris 2.4. Someone else submitted a simple test program that duplicates this behavior, and says it has something to do with the fact that X11R6 links with the threads library. */ #ifdef THIS_IS_X11R6 #define BROKEN_SIGCHLD #endif #if OS_RELEASE < 505 #if __STDC__ == 1 && defined(__SUNPRO_C) #define _POSIX_C_SOURCE 1 #include <setjmp.h> #undef _POSIX_C_SOURCE #endif /* cc -Xc */ /* Missing prototype, added in Solaris 2.5 */ extern void *__builtin_alloca (size_t); #endif /* before SunOS 5.5 */ #if OS_RELEASE == 505 /* The following functions were added in Solaris 2.5, but they forgot to add prototypes to the system header files. */ int getpagesize (void); long random (void); void srandom (unsigned int seed); int usleep (unsigned int useconds); #endif /* SunOS 5.5 */ /* 2.5 now has `random' back in libc but we don't want to use it. */ #if OS_RELEASE >= 505 #undef HAVE_RANDOM /* Apparently not necessary here, and it causes 10% CPU chewage. */ #undef BROKEN_SIGCHLD #endif /* >= SunOS 5.5 */ #if OS_RELEASE < 506 /* Missing prototypes, added in Solaris 2.6 */ struct timeval; int utimes (char *file, struct timeval *tvp); int gethostname (char *name, int namelen); #endif /* before SunOS 5.6 */ #include <sys/utsname.h> /* warning: macro redefined: SYS_NMLN */ /* XEmacs: Solaris has sigsetjmp but using it leads to core dumps at least under 2.4 */ #undef _setjmp #define _setjmp setjmp #endif /* C_CODE */