From: Tor Lillqvist Date: Thu, 8 Nov 2001 20:57:18 +0000 (+0000) Subject: Add headers. Add section about ActiveIMM. X-Git-Url: http://pileus.org/git/?p=~andy%2Fgtk;a=commitdiff_plain;h=15d20507948e6a9f899a4443c722c5651d91e519 Add headers. Add section about ActiveIMM. 2001-11-08 Tor Lillqvist * README.win32: Add headers. Add section about ActiveIMM. * configure.in: Add --with-ie55 flag to specify the location of the "IE55 libs and headers" package downloadable from Microsoft, which contains, among other things, the Active IMM header dimm.h and UUID library uuid.lib. Use test -f instead of AC_CHECK_FILE. Require GLib 1.3.10. * config.h.win32.in: New version, produced by merging two configure-generated ones (for gcc and MSVC). Hopefully #defines the same flags that the previous, hand-written one, did. * gdk/Makefile.am * gdk/win32/Makefile.am: Handle the uuid library from the IE55 lib. * gdk/win32/gdkevents-win32.c: Conditionalize ActiveIMM stuff. Remove unused GdkIOClosure. * gdk/win32/surrogate-dimm.h: Remove, use real dimm.h instead (if available). * gdk/win32/libie55uuid.la: New file, handwritten libtool wrapper for uuid.lib. (Does it really have to be this hard to use an existing library with libtool? Probably I am missing something.) --- diff --git a/ChangeLog b/ChangeLog index f29951a50..39fbf9a9a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,30 @@ +2001-11-08 Tor Lillqvist + + * README.win32: Add headers. Add section about ActiveIMM. + + * configure.in: Add --with-ie55 flag to specify the location of + the "IE55 libs and headers" package downloadable from Microsoft, + which contains, among other things, the Active IMM header dimm.h + and UUID library uuid.lib. Use test -f instead of AC_CHECK_FILE. + Require GLib 1.3.10. + + * config.h.win32.in: New version, produced by merging two + configure-generated ones (for gcc and MSVC). Hopefully #defines + the same flags that the previous, hand-written one, did. + + * gdk/Makefile.am + * gdk/win32/Makefile.am: Handle the uuid library from the IE55 lib. + + * gdk/win32/gdkevents-win32.c: Conditionalize ActiveIMM + stuff. Remove unused GdkIOClosure. + + * gdk/win32/surrogate-dimm.h: Remove, use real dimm.h instead (if + available). + + * gdk/win32/libie55uuid.la: New file, handwritten libtool wrapper + for uuid.lib. (Does it really have to be this hard to use an + existing library with libtool? Probably I am missing something.) + 2001-11-08 Darin Adler * gtk/gtklabel.c: (gtk_label_ensure_layout): Fix an obvious diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index f29951a50..39fbf9a9a 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,30 @@ +2001-11-08 Tor Lillqvist + + * README.win32: Add headers. Add section about ActiveIMM. + + * configure.in: Add --with-ie55 flag to specify the location of + the "IE55 libs and headers" package downloadable from Microsoft, + which contains, among other things, the Active IMM header dimm.h + and UUID library uuid.lib. Use test -f instead of AC_CHECK_FILE. + Require GLib 1.3.10. + + * config.h.win32.in: New version, produced by merging two + configure-generated ones (for gcc and MSVC). Hopefully #defines + the same flags that the previous, hand-written one, did. + + * gdk/Makefile.am + * gdk/win32/Makefile.am: Handle the uuid library from the IE55 lib. + + * gdk/win32/gdkevents-win32.c: Conditionalize ActiveIMM + stuff. Remove unused GdkIOClosure. + + * gdk/win32/surrogate-dimm.h: Remove, use real dimm.h instead (if + available). + + * gdk/win32/libie55uuid.la: New file, handwritten libtool wrapper + for uuid.lib. (Does it really have to be this hard to use an + existing library with libtool? Probably I am missing something.) + 2001-11-08 Darin Adler * gtk/gtklabel.c: (gtk_label_ensure_layout): Fix an obvious diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index f29951a50..39fbf9a9a 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,30 @@ +2001-11-08 Tor Lillqvist + + * README.win32: Add headers. Add section about ActiveIMM. + + * configure.in: Add --with-ie55 flag to specify the location of + the "IE55 libs and headers" package downloadable from Microsoft, + which contains, among other things, the Active IMM header dimm.h + and UUID library uuid.lib. Use test -f instead of AC_CHECK_FILE. + Require GLib 1.3.10. + + * config.h.win32.in: New version, produced by merging two + configure-generated ones (for gcc and MSVC). Hopefully #defines + the same flags that the previous, hand-written one, did. + + * gdk/Makefile.am + * gdk/win32/Makefile.am: Handle the uuid library from the IE55 lib. + + * gdk/win32/gdkevents-win32.c: Conditionalize ActiveIMM + stuff. Remove unused GdkIOClosure. + + * gdk/win32/surrogate-dimm.h: Remove, use real dimm.h instead (if + available). + + * gdk/win32/libie55uuid.la: New file, handwritten libtool wrapper + for uuid.lib. (Does it really have to be this hard to use an + existing library with libtool? Probably I am missing something.) + 2001-11-08 Darin Adler * gtk/gtklabel.c: (gtk_label_ensure_layout): Fix an obvious diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index f29951a50..39fbf9a9a 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,30 @@ +2001-11-08 Tor Lillqvist + + * README.win32: Add headers. Add section about ActiveIMM. + + * configure.in: Add --with-ie55 flag to specify the location of + the "IE55 libs and headers" package downloadable from Microsoft, + which contains, among other things, the Active IMM header dimm.h + and UUID library uuid.lib. Use test -f instead of AC_CHECK_FILE. + Require GLib 1.3.10. + + * config.h.win32.in: New version, produced by merging two + configure-generated ones (for gcc and MSVC). Hopefully #defines + the same flags that the previous, hand-written one, did. + + * gdk/Makefile.am + * gdk/win32/Makefile.am: Handle the uuid library from the IE55 lib. + + * gdk/win32/gdkevents-win32.c: Conditionalize ActiveIMM + stuff. Remove unused GdkIOClosure. + + * gdk/win32/surrogate-dimm.h: Remove, use real dimm.h instead (if + available). + + * gdk/win32/libie55uuid.la: New file, handwritten libtool wrapper + for uuid.lib. (Does it really have to be this hard to use an + existing library with libtool? Probably I am missing something.) + 2001-11-08 Darin Adler * gtk/gtklabel.c: (gtk_label_ensure_layout): Fix an obvious diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index f29951a50..39fbf9a9a 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,30 @@ +2001-11-08 Tor Lillqvist + + * README.win32: Add headers. Add section about ActiveIMM. + + * configure.in: Add --with-ie55 flag to specify the location of + the "IE55 libs and headers" package downloadable from Microsoft, + which contains, among other things, the Active IMM header dimm.h + and UUID library uuid.lib. Use test -f instead of AC_CHECK_FILE. + Require GLib 1.3.10. + + * config.h.win32.in: New version, produced by merging two + configure-generated ones (for gcc and MSVC). Hopefully #defines + the same flags that the previous, hand-written one, did. + + * gdk/Makefile.am + * gdk/win32/Makefile.am: Handle the uuid library from the IE55 lib. + + * gdk/win32/gdkevents-win32.c: Conditionalize ActiveIMM + stuff. Remove unused GdkIOClosure. + + * gdk/win32/surrogate-dimm.h: Remove, use real dimm.h instead (if + available). + + * gdk/win32/libie55uuid.la: New file, handwritten libtool wrapper + for uuid.lib. (Does it really have to be this hard to use an + existing library with libtool? Probably I am missing something.) + 2001-11-08 Darin Adler * gtk/gtklabel.c: (gtk_label_ensure_layout): Fix an obvious diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index f29951a50..39fbf9a9a 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,30 @@ +2001-11-08 Tor Lillqvist + + * README.win32: Add headers. Add section about ActiveIMM. + + * configure.in: Add --with-ie55 flag to specify the location of + the "IE55 libs and headers" package downloadable from Microsoft, + which contains, among other things, the Active IMM header dimm.h + and UUID library uuid.lib. Use test -f instead of AC_CHECK_FILE. + Require GLib 1.3.10. + + * config.h.win32.in: New version, produced by merging two + configure-generated ones (for gcc and MSVC). Hopefully #defines + the same flags that the previous, hand-written one, did. + + * gdk/Makefile.am + * gdk/win32/Makefile.am: Handle the uuid library from the IE55 lib. + + * gdk/win32/gdkevents-win32.c: Conditionalize ActiveIMM + stuff. Remove unused GdkIOClosure. + + * gdk/win32/surrogate-dimm.h: Remove, use real dimm.h instead (if + available). + + * gdk/win32/libie55uuid.la: New file, handwritten libtool wrapper + for uuid.lib. (Does it really have to be this hard to use an + existing library with libtool? Probably I am missing something.) + 2001-11-08 Darin Adler * gtk/gtklabel.c: (gtk_label_ensure_layout): Fix an obvious diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index f29951a50..39fbf9a9a 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,30 @@ +2001-11-08 Tor Lillqvist + + * README.win32: Add headers. Add section about ActiveIMM. + + * configure.in: Add --with-ie55 flag to specify the location of + the "IE55 libs and headers" package downloadable from Microsoft, + which contains, among other things, the Active IMM header dimm.h + and UUID library uuid.lib. Use test -f instead of AC_CHECK_FILE. + Require GLib 1.3.10. + + * config.h.win32.in: New version, produced by merging two + configure-generated ones (for gcc and MSVC). Hopefully #defines + the same flags that the previous, hand-written one, did. + + * gdk/Makefile.am + * gdk/win32/Makefile.am: Handle the uuid library from the IE55 lib. + + * gdk/win32/gdkevents-win32.c: Conditionalize ActiveIMM + stuff. Remove unused GdkIOClosure. + + * gdk/win32/surrogate-dimm.h: Remove, use real dimm.h instead (if + available). + + * gdk/win32/libie55uuid.la: New file, handwritten libtool wrapper + for uuid.lib. (Does it really have to be this hard to use an + existing library with libtool? Probably I am missing something.) + 2001-11-08 Darin Adler * gtk/gtklabel.c: (gtk_label_ensure_layout): Fix an obvious diff --git a/README.win32 b/README.win32 index 0c527f01a..e4c091666 100644 --- a/README.win32 +++ b/README.win32 @@ -10,12 +10,18 @@ until the CVS HEAD version is useable. (But note, the Win32 backend has never been claimed to be "production quality", although it works surprisingly well for the GIMP.) +Building GTK+ on Win32 +====================== + There are two ways to build GTK+ for win32: 1) Use the autoconf-generated configure script, and the resulting Makefiles (which use libtool and gcc to do the compilation). I use this myself, but it might be hell to setup correctly. +Personally I run configure with: +CC='gcc -mpentium -fnative-struct' CPPFLAGS='-I/target/include' CFLAGS=-O2 LDFLAGS='-L/target/lib' ./configure --disable-static --prefix=/target --with-gdktarget=win32 --with-wintab=/src/wtkit126 --with-ie55=/src/workshop/ie55_lib --host=i386-pc-mingw32 --enable-maintainer-mode + 2) Use the Microsoft compiler, cl and Make, nmake. Say nmake -f makefile.msc in gdk and gtk. @@ -34,6 +40,9 @@ taking care of those makefiles. At times, we disagree a bit, and the msc makefiles might not produce compatible or identically named DLLs and import libraries as the autoconfiscated makefiles and libtool do. +Using GTK+ on Win32 +=================== + To use GTK+ on Win32, you also need either one of the above mentioned compilers. Other compilers might work, but don't count on it. The same instructions on how to set up a correct version of gcc should also be @@ -41,12 +50,26 @@ followed if you want to build applications that use GTk+ with gcc. For prebuilt developer packages (DLLs, import libraries, headers), see the above website. +Multi-threaded use of GTK+ on Win32 +=================================== + +Multi-threaded GTK+ programs might work in special simple cases, but +not in general. Sorry. If you have all GTK+ and GDK calls in the same +thread, it might work. Otherwise, probably not at all. Possible ways +to fix this are being investigated. + +Wintab +====== + The tablet support uses the Wintab API. The Wintab development kit can be downloaded from http://www.pointing.com. Pass the --with-wintab flag to configure if you use that. If you use nmake and you don't care for Wintab, undefine HAVE_WINTAB in config.h.win32 and remove references to the wntab32x library from the makefile before building. +Libintl +======= + GTK wants to be built with the GNU "intl" library for internationalisation (i18n). Get the version ported to Win32 (not a very big deal) from the web site mentioned above. The "intl" library @@ -59,4 +82,16 @@ Note that while the GNU gettext package is under the GPL, the "intl" part of it is under the LGPL (like GTK or GLib), as of gettext-0.10.40. +ActiveIMM +========= + +If you want to build a GTK+ that supports ActiveIMM (the Input Method +Manager for non-EastAsia locales that can be used on Win9x/NT4), you +need the dimm.h header file. That is somewhat difficult to find, but +http://msdn.microsoft.com/downloads/samples/internet/wizard/ seems to +be a good place to look nowadays. If you use autoconfiscated build, +pass the --with-ie55 flag to configure specifyin the location of the +ie55_lib directory created by downloading the IE5.5 headers and libs +from the above URL. + --Tor Lillqvist diff --git a/config.h.win32.in b/config.h.win32.in index 58aaec2d5..f05267e3d 100644 --- a/config.h.win32.in +++ b/config.h.win32.in @@ -1,203 +1,297 @@ -/* config.h.win32. Handcrafted for Microsoft C or mingw */ +/* config.h.win32.in. Merged from two versions generated by configure for gcc and MSVC. */ +/* config.h.in. Generated from configure.in by autoheader. */ +/* acconfig.h + This file is in the public domain. -#if ! (defined(_MSC_VER) || defined(__GNUC__)) -#error Unrecognized Win32 compiler, edit config.h.win32 by hand -#endif + Descriptive text for the C preprocessor macros that + the distributed Autoconf macros can define. + No software package will use all of them; autoheader copies the ones + your configure.in uses into your configuration header file templates. -/* Define if using alloca.c. */ -/* #undef C_ALLOCA */ + The entries are in sort -df order: alphabetical, case insensitive, + ignoring punctuation (such as underscores). Although this order + can split up related entries, it makes it easier to check whether + a given entry is in the file. -/* Define to empty if the keyword does not work. */ -/* #undef const */ - -/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems. - This function is required for alloca.c support on those systems. */ -/* #undef CRAY_STACKSEG_END */ - -/* Define if you have alloca, as a function or macro. */ -#define HAVE_ALLOCA 1 -#ifndef alloca - #ifdef _MSC_VER - #define alloca _alloca - #elif defined (__GNUC__) - #define alloca __builtin_alloca - #endif -#endif - -/* Define if you have and it should be used (not on Ultrix). */ -/* #undef HAVE_ALLOCA_H */ - -/* Define if you have a working `mmap' system call. */ -/* #undef HAVE_MMAP */ - -/* Define to empty, or __inline if that's what your compiler wants. */ -#define inline __inline - -/* Define to `long' if doesn't define. */ -/* #undef off_t */ - -/* Define if you need to in order for stat and other things to work. */ -/* #undef _POSIX_SOURCE*/ - -/* Define as the return type of signal handlers (int or void). */ -#define RETSIGTYPE void - -/* Define to `unsigned' if doesn't define. */ -/* #undef size_t */ - -/* If using the C implementation of alloca, define if you know the - direction of stack growth for your system; otherwise it will be - automatically deduced at run-time. - STACK_DIRECTION > 0 => grows toward higher addresses - STACK_DIRECTION < 0 => grows toward lower addresses - STACK_DIRECTION = 0 => direction of growth unknown - */ -/* #undef STACK_DIRECTION */ - -/* Define if you have the ANSI C header files. */ -#define STDC_HEADERS 1 + Leave the following blank line there!! Autoheader needs it. */ + /* Other stuff */ #define ENABLE_NLS 1 -#define GTK_COMPILED_WITH_DEBUGGING "minimum" +#define GTK_COMPILED_WITH_DEBUGGING "yes" /* #undef HAVE_CATGETS */ -/* #undef HAVE_DIRENT_H */ +/* #undef HAVE_DIMM_H */ +#define HAVE_DIRENT_H 1 /* MSVC users: include it from build/win32/dirent */ #define HAVE_GETTEXT 1 /* #undef HAVE_IPC_H */ /* #undef HAVE_LC_MESSAGES */ +#define HAVE_PROGRESSIVE_JPEG 1 /* #undef HAVE_PWD_H */ /* #undef HAVE_SHM_H */ /* #undef HAVE_STPCPY */ /* #undef HAVE_XSHM_H */ -#define HAVE_SHAPE_EXT 1 +/* #undef HAVE_SHAPE_EXT */ /* #undef HAVE_SYS_SELECT_H */ +#ifndef _MSC_VER +#define HAVE_SYS_TIME_H 1 +#else /* _MSC_VER */ /* #undef HAVE_SYS_TIME_H */ +#endif /* _MSC_VER */ +#define HAVE_WINSOCK_H 1 +#define HAVE_WINTAB 1 /* #undef HAVE_XCONVERTCASE */ +/* #undef HAVE_XFT */ + +#define NO_FD_SET 1 + +/* #undef RESOURCE_BASE */ -/* #undef NO_FD_SET */ +#ifndef _MSC_VER +#define USE_GMODULE 1 +#define USE_MMX 1 +#endif + +/* Define to use X11R6 additions to XIM */ +/* #undef USE_X11R6_XIM */ + +/* Define to use XKB extension */ +/* #undef HAVE_XKB */ + +/* Define to use shadowfb in the linux-fb port */ +/* #undef ENABLE_SHADOW_FB */ + +/* Define to use a fb manager in the linux-fb port */ +/* #undef ENABLE_FB_MANAGER */ /* #undef XINPUT_NONE */ /* #undef XINPUT_GXI */ /* #undef XINPUT_XFREE */ -#define XINPUT_WIN32 1 /* Define as the return type of signal handlers (int or void). */ #define RETSIGTYPE void -/* Define if you have the __argz_count function. */ -/* #undef HAVE___ARGZ_COUNT */ +/* Most machines will be happy with int or void. IRIX requires '...' */ +/* #undef SIGNAL_ARG_TYPE */ -/* Define if you have the __argz_next function. */ -/* #undef HAVE___ARGZ_NEXT */ +#define GETTEXT_PACKAGE "@GETTEXT_PACKAGE@" -/* Define if you have the __argz_stringify function. */ -/* #undef HAVE___ARGZ_STRINGIFY */ +/* #undef PACKAGE */ +/* #undef VERSION */ + + +/* Leave that blank line there!! Autoheader needs it. + If you're adding to this file, keep in mind: + The entries are in sort -df order: alphabetical, case insensitive, + ignoring punctuation (such as underscores). */ + +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +/* #undef CRAY_STACKSEG_END */ + +/* Define if using `alloca.c'. */ +/* #undef C_ALLOCA */ -/* Define if you have the broken_wctype function. */ +/* Define if you have `alloca', as a function or macro. */ +#define HAVE_ALLOCA 1 + +/* Define if you have and it should be used (not on Ultrix). */ +/* #undef HAVE_ALLOCA_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_ARGZ_H */ + +/* Define if you have the `bind_textdomain_codeset' function. */ +/* #undef HAVE_BIND_TEXTDOMAIN_CODESET */ + +/* Is the wctype implementation broken */ /* #undef HAVE_BROKEN_WCTYPE */ -/* Define if you have the dcgettext function. */ -/* #undef HAVE_DCGETTEXT */ +/* Define if you have the `dcgettext' function. */ +#define HAVE_DCGETTEXT 1 + +/* Define if you have the header file. */ +/* #undef HAVE_DIMM_H */ -/* Define if you have the getcwd function. */ +/* Define if you have the header file, and it defines `DIR'. */ +#define HAVE_DIRENT_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_DLFCN_H */ + +/* Define if you have the `getcwd' function. */ #define HAVE_GETCWD 1 -/* Define if you have the getpagesize function. */ +/* Define if you have the `getpagesize' function. */ +#ifndef _MSC_VER #define HAVE_GETPAGESIZE 1 +#else /* _MSC_VER */ +/* #undef HAVE_GETPAGESIZE */ +#endif /* _MSC_VER */ + +/* Define if you have the `getresuid' function. */ +/* #undef HAVE_GETRESUID */ + +/* Define if you have the header file. */ +/* #undef HAVE_INTTYPES_H */ + +/* Define if your file defines LC_MESSAGES. */ +/* #undef HAVE_LC_MESSAGES */ -/* Define if you have the lstat function. */ +/* Define if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define if you have the header file. */ +#define HAVE_LOCALE_H 1 + +/* Define if you have the `lstat' function. */ /* #undef HAVE_LSTAT */ -/* Define if you have the munmap function. */ +/* Define if you have the header file. */ +#define HAVE_MALLOC_H 1 + +/* Define if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define if you have the `mkstemp' function. */ +/* #undef HAVE_MKSTEMP */ + +/* Define if you have a working `mmap' system call. */ +/* #undef HAVE_MMAP */ + +/* Define if you have the `munmap' function. */ /* #undef HAVE_MUNMAP */ -/* Define if you have the putenv function. */ +/* Define if you have the header file, and it defines `DIR'. */ +/* #undef HAVE_NDIR_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_NL_TYPES_H */ + +/* Define if you have the `putenv' function. */ #define HAVE_PUTENV 1 -#define putenv _putenv -/* Define if you have the setenv function. */ +/* Define if you have the header file. */ +/* #undef HAVE_PWD_H */ + +/* Define if you have the `setenv' function. */ /* #undef HAVE_SETENV */ -/* Define if you have the setlocale function. */ +/* Define if you have the `setlocale' function. */ #define HAVE_SETLOCALE 1 -/* Define if you have the stpcpy function. */ -/* #undef HAVE_STPCPY */ +/* Define if you have the `sigsetjmp' function. */ +/* #undef HAVE_SIGSETJMP */ -/* Define if you have the strcasecmp function. */ +/* Define if you have the header file. */ +#ifndef _MSC_VER +#define HAVE_STDINT_H 1 +#else /* _MSC_VER */ +/* #undef HAVE_STDINT_H */ +#endif /* _MSC_VER */ + +/* Define if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define if you have the `strcasecmp' function. */ +#ifndef _MSC_VER #define HAVE_STRCASECMP 1 -#define strcasecmp _stricmp +#else /* _MSC_VER */ +/* #undef HAVE_STRCASECMP */ +#endif /* _MSC_VER */ -/* Define if you have the strchr function. */ +/* Define if you have the `strchr' function. */ #define HAVE_STRCHR 1 -/* Define if you have the strdup function. */ +/* Define if you have the `strdup' function. */ #define HAVE_STRDUP 1 -/* Define if you have the header file. */ -/* #undef HAVE_ARGZ_H */ - -/* Define if you have the header file. */ -/* #undef HAVE_DIRENT_H */ +/* Define if you have the header file. */ +/* #undef HAVE_STRINGS_H */ -/* Define if you have the header file. */ -#define HAVE_LIMITS_H 1 +/* Define if you have the header file. */ +#define HAVE_STRING_H 1 -/* Define if you have the header file. */ -#define HAVE_LOCALE_H 1 +/* Define if you have the header file, and it defines `DIR'. */ +/* #undef HAVE_SYS_DIR_H */ -/* Define if you have the header file. */ -#define HAVE_MALLOC_H 1 +/* Define if you have the header file, and it defines `DIR'. */ +/* #undef HAVE_SYS_NDIR_H */ -/* Define if you have the header file. */ -/* #undef HAVE_NL_TYPES_H */ +/* Define if you have the header file. */ +/* #undef HAVE_SYS_PARAM_H */ -/* Define if you have the header file. */ -/* #undef HAVE_PWD_H */ +/* Define if you have the header file. */ +#define HAVE_SYS_STAT_H 1 -/* Define if you have the header file. */ -#define HAVE_STRING_H 1 +/* Define if you have the header file. */ +#ifndef _MSC_VER +#define HAVE_SYS_TIME_H 1 +#else /* _MSC_VER */ +/* #undef HAVE_SYS_TIME_H */ +#endif /* _MSC_VER */ -/* Define if you have the header file. */ -/* #undef HAVE_SYS_PARAM_H */ +/* Define if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 -/* Define if you have the header file. */ -/* #undef HAVE_SYS_TIME_H */ +/* Define if you have that is POSIX.1 compatible. */ +/* #undef HAVE_SYS_WAIT_H */ -/* Define if you have the header file. */ +/* Define if you have the header file. */ +#ifndef _MSC_VER +#define HAVE_UNISTD_H 1 +#else /* _MSC_VER */ /* #undef HAVE_UNISTD_H */ +#endif /* _MSC_VER */ -/* Define if you have the header file. */ +/* Have wchar.h include file */ #define HAVE_WCHAR_H 1 -/* Define if you have the header file. */ -#ifdef _MSC_VER +/* Have wctype.h include file */ #define HAVE_WCTYPE_H 1 -#endif /* _MSC_VER */ -/* Define if you have the i library (-li). */ -/* #undef HAVE_LIBI */ +/* Define if you have the header file. */ +#define HAVE_WINSOCK_H 1 -/* Define if you have the intl library (-lintl). */ -#define HAVE_LIBINTL 1 +/* Define if you have the `__argz_count' function. */ +/* #undef HAVE___ARGZ_COUNT */ -/* define if compiled symbols have a leading underscore */ -/* #undef WITH_SYMBOL_UNDERSCORE */ +/* Define if you have the `__argz_next' function. */ +/* #undef HAVE___ARGZ_NEXT */ -/* Define if you have the Wintab programmer's kit */ -#define HAVE_WINTAB 1 +/* Define if you have the `__argz_stringify' function. */ +/* #undef HAVE___ARGZ_STRINGIFY */ -/* Define if you have the header file - * (available in the Platform SDK) -*/ -/* #define HAVE_DIMM_H 1 */ +/* Define as the return type of signal handlers (`int' or `void'). */ +#define RETSIGTYPE void -#ifndef _MSC_VER -#define USE_GMODULE 1 -#define USE_MMX 1 -#endif +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +/* #undef STACK_DIRECTION */ -/* #undef HAVE_SIGSETJMP */ +/* Define if you have the ANSI C header files. */ +#define STDC_HEADERS 1 -#define GETTEXT_PACKAGE "@GETTEXT_PACKAGE@" +/* Define to empty if `const' does not conform to ANSI C. */ +/* #undef const */ + +/* Define to `int' if doesn't define. */ +#define gid_t int + +/* Define as `__inline' if that's what the C compiler calls it, or to nothing + if it is not supported. */ +/* #undef inline */ + +/* Define to `long' if does not define. */ +/* #undef off_t */ + +/* Define to `unsigned' if does not define. */ +/* #undef size_t */ + +/* Define to `int' if doesn't define. */ +#define uid_t int diff --git a/configure.in b/configure.in index 37f121a13..ec5a8ce06 100644 --- a/configure.in +++ b/configure.in @@ -173,6 +173,7 @@ AC_ARG_ENABLE(rebuilds, [ --disable-rebuilds disable all source autogenera AC_ARG_WITH(xinput, [ --with-xinput=[no/gxi/xfree] support XInput ]) AC_ARG_WITH(wintab, [ --with-wintab=DIRECTORY use Wintab API with win32 backend]) +AC_ARG_WITH(ie55, [ --with-ie55=DIRECTORY IE5.5 libs and headers (for Active IMM)]) GLIB_AC_DIVERT_BEFORE_HELP([ if test "$platform_win32" = yes; then @@ -182,7 +183,7 @@ else fi ]) -AC_ARG_WITH(gdktarget, [ --with-gdktarget=[x11/linux-fb/win32] select GDK target [default=$gdktarget]], +AC_ARG_WITH(gdktarget, [ --with-gdktarget=[[x11/linux-fb/win32]] select GDK target [default=$gdktarget]], gdktarget=$with_gdktarget) AC_SUBST(gdktarget) @@ -394,7 +395,43 @@ AC_CHECK_HEADERS(pwd.h, AC_DEFINE(HAVE_PWD_H)) AC_CHECK_HEADERS(sys/time.h, AC_DEFINE(HAVE_SYS_TIME_H)) AC_CHECK_HEADERS(unistd.h, AC_DEFINE(HAVE_UNISTD_H)) AC_CHECK_HEADERS(winsock.h, AC_DEFINE(HAVE_WINSOCK_H)) -AC_CHECK_HEADERS(dimm.h, AC_DEFINE(HAVE_DIMM_H)) + +if test "${with_ie55+set}" = set && test $with_ie55 != no; then + AC_MSG_CHECKING([for dimm.h]) + saved_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -idirafter $with_ie55/Include" + AC_TRY_COMPILE([#include +#include +#ifdef __GNUC__ +/* The w32api imm.h clashes a bit with the IE5.5 dimm.h */ +#define IMEMENUITEMINFOA hidden_IMEMENUITEMINFOA +#define IMEMENUITEMINFOW hidden_IMEMENUITEMINFOW +#include +#undef IMEMENUITEMINFOA +#undef IMEMENUITEMINFOW +#endif +#include +], + [], + [AC_MSG_RESULT(yes) + AC_MSG_CHECKING([for IE55 uuid.lib]) + if test -f $with_ie55/Lib/uuid.lib ; then + AC_MSG_RESULT(yes) + have_ie55=yes + AC_DEFINE(HAVE_DIMM_H) + IE55_UUID_LIB="$with_ie55/Lib/uuid.lib" + AC_SUBST(IE55_UUID_LIB) + else + AC_MSG_RESULT(no) + CFLAGS="$saved_CFLAGS" + have_ie55=no + fi + ], + [AC_MSG_RESULT(no) + CFLAGS="$saved_CFLAGS" + have_ie55=no]) +fi +AM_CONDITIONAL(HAVE_IE55, test x$have_ie55 = xyes) if test "${with_wintab+set}" = set && test $with_wintab != no; then AC_MSG_CHECKING([for wintab.h]) @@ -404,18 +441,22 @@ if test "${with_wintab+set}" = set && test $with_wintab != no; then #include ], [], [AC_MSG_RESULT(yes) + AC_MSG_CHECKING([for wntab32x.lib]) if test -f $with_wintab/lib/i386/wntab32x.lib ; then + AC_MSG_RESULT(yes) have_wintab=yes AC_DEFINE(HAVE_WINTAB) WINTAB_LIB="$with_wintab/lib/i386/wntab32x.lib" AC_SUBST(WINTAB_LIB) else + AC_MSG_RESULT(no) + CFLAGS="$saved_cflags" have_wintab=no fi ], [AC_MSG_RESULT(no) + CFLAGS="$saved_cflags" have_wintab=no]) - CFLAGS="$saved_cflags" fi AM_CONDITIONAL(HAVE_WINTAB, test x$have_wintab = xyes) diff --git a/gdk/Makefile.am b/gdk/Makefile.am index 56d8b48e9..cea103a9c 100644 --- a/gdk/Makefile.am +++ b/gdk/Makefile.am @@ -30,6 +30,10 @@ no_undefined = -no-undefined if HAVE_WINTAB wintab_lib = -Lwin32 -lwntab32x endif + +if HAVE_IE55 +ie55uuid_lib = -Lwin32 -lie55uuid +endif endif if OS_WIN32 @@ -170,7 +174,7 @@ if USE_WIN32 libgdk_win32_includedir = $(includedir)/gtk-2.0/gdk libgdk_win32_1_3_la_LIBADD = \ - $(gtarget)/libgdk-$(gtarget).la $(wintab_lib) + $(gtarget)/libgdk-$(gtarget).la $(wintab_lib) $(ie55uuid_lib) libgdk_win32_include_HEADERS = $(gdk_headers) libgdk_win32_1_3_la_SOURCES = $(gdk_c_sources) gdkenumtypes.c diff --git a/gdk/win32/Makefile.am b/gdk/win32/Makefile.am index 7a6a5d311..6990dd230 100644 --- a/gdk/win32/Makefile.am +++ b/gdk/win32/Makefile.am @@ -19,19 +19,30 @@ LDADDS = @STRIP_BEGIN@ \ @STRIP_END@ if HAVE_WINTAB -noinst_DATA = .libs/libwntab32x.a +libwntab32x_a = .libs/libwntab32x.a .libs/libwntab32x.a: @WINTAB_LIB@ cp $< $@ endif +if HAVE_IE55 +libie55uuid_a = .libs/libie55uuid.a + +.libs/libie55uuid.a: @IE55_UUID_LIB@ + cp $< $@ +endif + +noinst_DATA = $(libwntab32x_a) $(libie55uuid_a) + noinst_LTLIBRARIES = libgdk-win32.la SUBDIRS=rc EXTRA_DIST = \ - makefile.mingw \ - makefile.msc + makefile.mingw \ + makefile.msc \ + libie55uuid.la \ + libwntab32x.la libgdk_win32_la_SOURCES = \ bdfcursor.c \ @@ -63,8 +74,7 @@ libgdk_win32_la_SOURCES = \ gdkwin32.h \ gdkwin32id.c \ gdkwindow-win32.c \ - gdkwindow-win32.h \ - surrogate-dimm.h + gdkwindow-win32.h libgdkinclude_HEADERS = \ gdkwin32.h diff --git a/gdk/win32/gdkevents-win32.c b/gdk/win32/gdkevents-win32.c index fcffdf1bd..1f52166f4 100644 --- a/gdk/win32/gdkevents-win32.c +++ b/gdk/win32/gdkevents-win32.c @@ -45,16 +45,25 @@ #include "gdkkeysyms.h" #include + +#if defined (__GNUC__) && defined (HAVE_DIMM_H) +/* The w32api imm.h clashes a bit with the IE5.5 dimm.h */ +# define IMEMENUITEMINFOA hidden_IMEMENUITEMINFOA +# define IMEMENUITEMINFOW hidden_IMEMENUITEMINFOW +#endif + #include +#if defined (__GNUC__) && defined (HAVE_DIMM_H) +# undef IMEMENUITEMINFOA +# undef IMEMENUITEMINFOW +#endif + #ifdef HAVE_DIMM_H #include -#else -#include "surrogate-dimm.h" #endif -typedef struct _GdkIOClosure GdkIOClosure; typedef struct _GdkEventPrivate GdkEventPrivate; typedef enum @@ -65,14 +74,6 @@ typedef enum GDK_EVENT_PENDING = 1 << 0 } GdkEventFlags; -struct _GdkIOClosure -{ - GdkInputFunction function; - GdkInputCondition condition; - GdkDestroyNotify notify; - gpointer data; -}; - struct _GdkEventPrivate { GdkEvent event; @@ -135,8 +136,10 @@ static UINT msh_mousewheel_msg; static gboolean ignore_wm_char = FALSE; static gboolean is_altgr_key = FALSE; +#ifdef HAVE_DIMM_H static IActiveIMMApp *active_imm_app = NULL; static IActiveIMMMessagePumpOwner *active_imm_msgpump_owner = NULL; +#endif typedef BOOL (WINAPI *PFN_TrackMouseEvent) (LPTRACKMOUSEEVENT); static PFN_TrackMouseEvent track_mouse_event = NULL; @@ -255,11 +258,15 @@ real_window_procedure (HWND hwnd, return ret_val; else { +#ifndef HAVE_DIMM_H + return DefWindowProc (hwnd, message, wparam, lparam); +#else if (active_imm_app == NULL || (*active_imm_app->lpVtbl->OnDefWindowProc) (active_imm_app, hwnd, message, wparam, lparam, &lres) == S_FALSE) return DefWindowProc (hwnd, message, wparam, lparam); else return lres; +#endif } } @@ -313,6 +320,7 @@ _gdk_events_init (void) g_source_set_can_recurse (source, TRUE); g_source_attach (source, NULL); +#ifdef HAVE_DIMM_H hres = CoCreateInstance (&CLSID_CActiveIMM, NULL, CLSCTX_ALL, @@ -330,6 +338,7 @@ _gdk_events_init (void) active_imm_msgpump_owner)); (active_imm_msgpump_owner->lpVtbl->Start) (active_imm_msgpump_owner); } +#endif #ifdef USE_TRACKMOUSEEVENT user32 = GetModuleHandle ("user32.dll"); @@ -3155,10 +3164,13 @@ _gdk_events_queue (void) { GDK_NOTE (EVENTS, g_print ("PeekMessage: %#lx %s\n", (gulong) msg.hwnd, gdk_win32_message_name (msg.message))); - +#ifndef HAVE_DIMM_H + TranslateMessage (&msg); +#else if (active_imm_msgpump_owner == NULL || (active_imm_msgpump_owner->lpVtbl->OnTranslateMessage) (active_imm_msgpump_owner, &msg) != S_OK) TranslateMessage (&msg); +#endif #if 1 /* It was like this all the time */ DispatchMessage (&msg); diff --git a/gdk/win32/libie55uuid.la b/gdk/win32/libie55uuid.la new file mode 100644 index 000000000..9727d43fd --- /dev/null +++ b/gdk/win32/libie55uuid.la @@ -0,0 +1,31 @@ +# libie55uuid.la - a libtool library file +# Generated by hand, compatible with libtool +# Just a wrapper for libie55uuid.a, which is just a copy of the IE55 toolkit's +# uuid.lib +# +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libie55uuid.a' + +# Libraries that this one depends upon. +dependency_libs='' + +# Version information +current=0 +age=0 +revision=0 + +# Is this an already installed library? +installed=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gdk/win32/libwntab32x.la b/gdk/win32/libwntab32x.la new file mode 100644 index 000000000..b98c1fed5 --- /dev/null +++ b/gdk/win32/libwntab32x.la @@ -0,0 +1,30 @@ +# libwntab32x.la - a libtool library file +# Generated by hand, compatible with libtool +# Just a wrapper for libwntab32x.a, which is just a copy of wntab32x.lib +# +# The name that we can dlopen(3). +dlname='' + +# Names of this library. +library_names='' + +# The name of the static archive. +old_library='libwntab32x.a' + +# Libraries that this one depends upon. +dependency_libs='' + +# Version information +current=0 +age=0 +revision=0 + +# Is this an already installed library? +installed=no + +# Files to dlopen/dlpreopen +dlopen='' +dlpreopen='' + +# Directory that this library needs to be installed in: +libdir='' diff --git a/gdk/win32/surrogate-dimm.h b/gdk/win32/surrogate-dimm.h deleted file mode 100644 index 5d773fcef..000000000 --- a/gdk/win32/surrogate-dimm.h +++ /dev/null @@ -1,144 +0,0 @@ -#ifndef __SURROGATE_DIMM_H__ -#define __SURROGATE_DIMM_H__ - -/* The Win32api headers doesn't include , thus we need - * this file, which covers just the stuff we need from . - */ - -typedef struct IActiveIMMApp IActiveIMMApp; -typedef struct IActiveIMMMessagePumpOwner IActiveIMMMessagePumpOwner; - -/* Dummy vtable structs that contain real names and arg lists for - * only those methods we need. - */ -typedef struct { - HRESULT (__stdcall *QueryInterface) (IActiveIMMApp *This, - REFIID riid, - void *ppvObject); - /* Dummy method prototypes for those we don't use */ - ULONG (__stdcall *dummy_AddRef)(); - ULONG (__stdcall *dummy_Release)(); - HRESULT (__stdcall *dummy_AssociateContext)(); - HRESULT (__stdcall *dummy_ConfigureIMEA)(); - HRESULT (__stdcall *dummy_ConfigureIMEW)(); - HRESULT (__stdcall *dummy_CreateContext)(); - HRESULT (__stdcall *dummy_DestroyContext)(); - HRESULT (__stdcall *dummy_EnumRegisterWordA)(); - HRESULT (__stdcall *dummy_EnumRegisterWordW)(); - HRESULT (__stdcall *dummy_EscapeA)(); - HRESULT (__stdcall *dummy_EscapeW)(); - HRESULT (__stdcall *dummy_GetCandidateListA)(); - HRESULT (__stdcall *dummy_GetCandidateListW)(); - HRESULT (__stdcall *dummy_GetCandidateListCountA)(); - HRESULT (__stdcall *dummy_GetCandidateListCountW)(); - HRESULT (__stdcall *dummy_GetCandidateWindow)(); - HRESULT (__stdcall *dummy_GetCompositionFontA)(); - HRESULT (__stdcall *dummy_GetCompositionFontW)(); - HRESULT (__stdcall *dummy_GetCompositionStringA)(); - HRESULT (__stdcall *dummy_GetCompositionStringW)(); - HRESULT (__stdcall *dummy_GetCompositionWindow)(); - HRESULT (__stdcall *dummy_GetContext)(); - HRESULT (__stdcall *dummy_GetConversionListA)(); - HRESULT (__stdcall *dummy_GetConversionListW)(); - HRESULT (__stdcall *dummy_GetConversionStatus)(); - - HRESULT (__stdcall *GetDefaultIMEWnd)(IActiveIMMApp *This, - HWND hWnd, - HWND *phDefWnd); - - HRESULT (__stdcall *dummy_GetDescriptionA)(); - HRESULT (__stdcall *dummy_GetDescriptionW)(); - HRESULT (__stdcall *dummy_GetGuideLineA)(); - HRESULT (__stdcall *dummy_GetGuideLineW)(); - HRESULT (__stdcall *dummy_GetIMEFileNameA)(); - HRESULT (__stdcall *dummy_GetIMEFileNameW)(); - HRESULT (__stdcall *dummy_GetOpenStatus)(); - HRESULT (__stdcall *dummy_GetProperty)(); - HRESULT (__stdcall *dummy_GetRegisterWordStyleA)(); - HRESULT (__stdcall *dummy_GetRegisterWordStyleW)(); - HRESULT (__stdcall *dummy_GetStatusWindowPos)(); - HRESULT (__stdcall *dummy_GetVirtualKey)(); - HRESULT (__stdcall *dummy_InstallIMEA)(); - HRESULT (__stdcall *dummy_InstallIMEW)(); - - HRESULT (__stdcall *IsIME)(IActiveIMMApp *This, - HKL hKL); - HRESULT (__stdcall *IsUIMessageA )(IActiveIMMApp *This, - HWND hWndIME, - UINT msg, - WPARAM wParam, - LPARAM lParam); - HRESULT (__stdcall *dummy_IsUIMessageW)(); - HRESULT (__stdcall *dummy_NotifyIME)(); - HRESULT (__stdcall *dummy_RegisterWordA)(); - HRESULT (__stdcall *dummy_RegisterWordW)(); - HRESULT (__stdcall *dummy_ReleaseContext)(); - HRESULT (__stdcall *dummy_SetCandidateWindow)(); - HRESULT (__stdcall *dummy_SetCompositionFontA)(); - HRESULT (__stdcall *dummy_SetCompositionFontW)(); - HRESULT (__stdcall *dummy_SetCompositionStringA)(); - HRESULT (__stdcall *dummy_SetCompositionStringW)(); - HRESULT (__stdcall *dummy_SetCompositionWindow)(); - HRESULT (__stdcall *dummy_SetConversionStatus)(); - HRESULT (__stdcall *dummy_SetOpenStatus)(); - HRESULT (__stdcall *dummy_SetStatusWindowPos)(); - HRESULT (__stdcall *dummy_SimulateHotKey)(); - HRESULT (__stdcall *dummy_UnregisterWordA)(); - HRESULT (__stdcall *dummy_UnregisterWordW)(); - - HRESULT (__stdcall *Activate)(IActiveIMMApp *This, - BOOL restore); - HRESULT (__stdcall *Deactivate)(IActiveIMMApp *This); - HRESULT (__stdcall *OnDefWindowProc)(IActiveIMMApp *This, - HWND hWnd, - UINT Msg, - WPARAM wParam, - LPARAM lParam, - LRESULT *plResult); - - HRESULT (__stdcall *dummy_FilterClientWindows)(); - - HRESULT (__stdcall *GetCodePageA)(IActiveIMMApp *This, - HKL hKL, - UINT *uCodePage); - HRESULT (__stdcall *GetLangId)(IActiveIMMApp *This, - HKL hKL, - LANGID *plid); - - HRESULT (__stdcall *dummy_AssociateContextEx)(); - HRESULT (__stdcall *dummy_DisableIME)(); - HRESULT (__stdcall *dummy_GetImeMenuItemsA)(); - HRESULT (__stdcall *dummy_GetImeMenuItemsW)(); - HRESULT (__stdcall *dummy_EnumInputContext)(); -} IActiveIMMAppVtbl; - -struct IActiveIMMApp { - IActiveIMMAppVtbl *lpVtbl; -}; - -typedef struct { - HRESULT (__stdcall *dummy_QueryInterface)(); - ULONG (__stdcall *dummy_AddRef)(); - ULONG (__stdcall *dummy_Release)(); - - HRESULT (__stdcall *Start)(IActiveIMMMessagePumpOwner *This); - HRESULT (__stdcall *End)(IActiveIMMMessagePumpOwner *This); - HRESULT (__stdcall *OnTranslateMessage)(IActiveIMMMessagePumpOwner *This, - MSG *pMSG); - - HRESULT (__stdcall *dummy_Pause)(); - HRESULT (__stdcall *dummy_Resume)(); -} IActiveIMMMessagePumpOwnerVtbl; - -struct IActiveIMMMessagePumpOwner { - IActiveIMMMessagePumpOwnerVtbl *lpVtbl; -}; - -static UUID CLSID_CActiveIMM = { - 0x4955DD33, 0xB159, 0x11d0, { 0x8F,0xCF,0x00,0xAA,0x00,0x6B,0xCC,0x59 } }; -static IID IID_IActiveIMMApp = { - 0x08C0E040, 0x62D1, 0x11D1, { 0x93,0x26,0x00,0x60,0xB0,0x67,0xB8,0x6E } }; -static IID IID_IActiveIMMMessagePumpOwner = { - 0xB5CF2CFA, 0x8AEB, 0x11D1, { 0x93,0x64,0x00,0x60,0xB0,0x67,0xB8,0x6E } }; - -#endif /* __SURROGATE_DIMM_H__ */