New font private structures, related to fontsets.
1999-11-07 Tor Lillqvist <tml@iki.fi> * gdk/win32/gdkprivate.h: New font private structures, related to fontsets. * gdk/win32/gdkfont.c: New functions gdk_font_list_new() and gdk_font_list_free(). On X11, will just be wrappers to XListFonts() and XFreeFontNames(). On Win32, the code previously in gtkfontsel.c is now here. New function gdk_font_xlfd_create(). On X11 will get the FONT property of the font (for GDK_FONT_FONTs), or call XBaseFontNameListOfFontSet (for GDK_FONT_FONTSETs), on Win32 builds a XLFD style name from the font information in the LOGFONT struct(s). New function gdk_font_xlfd_free(), which correspondingly frees the string returned by gdk_font_xlfd_create(). Implement fontsets on Win32. Add a function that iterates over a wide char string and calls a callback function for each substring of wide chars from the same Unicode subrange (and thus probably available in the same real font). Improve the XLFD emulation a bit. * gdk/win32/gdkim.c (gdk_nmbstowchar_ts): Small bugfix. * gdk/win32/gdkevents.c: Workaround for suspected bug on Win2k Beta3, WM_IME_CHAR messages don't seem to contain the composed multi-byte char as with the Active IMM on Win9x. Oh well, handle WM_IME_COMPOSITION with GCS_RESULTSTR instead, use ImmGetCompositionStringW() to get the composed Unicode chars. * gdk/win32/gdkgc.c * gdk/win32/gdkdraw.c: Changes needed because of the font private struct changes. * gdk/win32/gdk.def: Add the new functions.
This commit is contained in:
		
				
					committed by
					
						
						Tor Lillqvist
					
				
			
			
				
	
			
			
			
						parent
						
							559a8c8691
						
					
				
				
					commit
					0ad4aa57d6
				
			
							
								
								
									
										40
									
								
								ChangeLog
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								ChangeLog
									
									
									
									
									
								
							@ -1,3 +1,43 @@
 | 
			
		||||
1999-11-07  Tor Lillqvist  <tml@iki.fi>
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkprivate.h: New font private structures, related to
 | 
			
		||||
	fontsets.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkfont.c: New functions gdk_font_list_new() and
 | 
			
		||||
	gdk_font_list_free(). On X11, will just be wrappers to
 | 
			
		||||
	XListFonts() and XFreeFontNames(). On Win32, the code previously
 | 
			
		||||
	in gtkfontsel.c is now here.
 | 
			
		||||
 | 
			
		||||
	New function gdk_font_xlfd_create(). On X11 will get the FONT
 | 
			
		||||
	property of the font (for GDK_FONT_FONTs), or call
 | 
			
		||||
	XBaseFontNameListOfFontSet (for GDK_FONT_FONTSETs), on Win32
 | 
			
		||||
	builds a XLFD style name from the font information in the LOGFONT
 | 
			
		||||
	struct(s).
 | 
			
		||||
 | 
			
		||||
	New function gdk_font_xlfd_free(), which correspondingly frees the
 | 
			
		||||
	string returned by gdk_font_xlfd_create().
 | 
			
		||||
 | 
			
		||||
	Implement fontsets on Win32. Add a function that iterates over a
 | 
			
		||||
	wide char string and calls a callback function for each substring
 | 
			
		||||
	of wide chars from the same Unicode subrange (and thus probably
 | 
			
		||||
	available in the same real font).
 | 
			
		||||
 | 
			
		||||
	Improve the XLFD emulation a bit.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkim.c (gdk_nmbstowchar_ts): Small bugfix.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkevents.c: Workaround for suspected bug on Win2k
 | 
			
		||||
	Beta3, WM_IME_CHAR messages don't seem to contain the composed
 | 
			
		||||
	multi-byte char as with the Active IMM on Win9x. Oh well, handle
 | 
			
		||||
	WM_IME_COMPOSITION with GCS_RESULTSTR instead, use
 | 
			
		||||
	ImmGetCompositionStringW() to get the composed Unicode chars.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkgc.c
 | 
			
		||||
	* gdk/win32/gdkdraw.c: Changes needed because of the font private
 | 
			
		||||
	struct changes.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdk.def: Add the new functions.
 | 
			
		||||
 | 
			
		||||
1999-11-04  Tor Lillqvist  <tml@iki.fi>
 | 
			
		||||
 | 
			
		||||
	* config.h.win32: Don't define HAVE_DIMM_H if MSC, as you have to
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,43 @@
 | 
			
		||||
1999-11-07  Tor Lillqvist  <tml@iki.fi>
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkprivate.h: New font private structures, related to
 | 
			
		||||
	fontsets.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkfont.c: New functions gdk_font_list_new() and
 | 
			
		||||
	gdk_font_list_free(). On X11, will just be wrappers to
 | 
			
		||||
	XListFonts() and XFreeFontNames(). On Win32, the code previously
 | 
			
		||||
	in gtkfontsel.c is now here.
 | 
			
		||||
 | 
			
		||||
	New function gdk_font_xlfd_create(). On X11 will get the FONT
 | 
			
		||||
	property of the font (for GDK_FONT_FONTs), or call
 | 
			
		||||
	XBaseFontNameListOfFontSet (for GDK_FONT_FONTSETs), on Win32
 | 
			
		||||
	builds a XLFD style name from the font information in the LOGFONT
 | 
			
		||||
	struct(s).
 | 
			
		||||
 | 
			
		||||
	New function gdk_font_xlfd_free(), which correspondingly frees the
 | 
			
		||||
	string returned by gdk_font_xlfd_create().
 | 
			
		||||
 | 
			
		||||
	Implement fontsets on Win32. Add a function that iterates over a
 | 
			
		||||
	wide char string and calls a callback function for each substring
 | 
			
		||||
	of wide chars from the same Unicode subrange (and thus probably
 | 
			
		||||
	available in the same real font).
 | 
			
		||||
 | 
			
		||||
	Improve the XLFD emulation a bit.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkim.c (gdk_nmbstowchar_ts): Small bugfix.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkevents.c: Workaround for suspected bug on Win2k
 | 
			
		||||
	Beta3, WM_IME_CHAR messages don't seem to contain the composed
 | 
			
		||||
	multi-byte char as with the Active IMM on Win9x. Oh well, handle
 | 
			
		||||
	WM_IME_COMPOSITION with GCS_RESULTSTR instead, use
 | 
			
		||||
	ImmGetCompositionStringW() to get the composed Unicode chars.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkgc.c
 | 
			
		||||
	* gdk/win32/gdkdraw.c: Changes needed because of the font private
 | 
			
		||||
	struct changes.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdk.def: Add the new functions.
 | 
			
		||||
 | 
			
		||||
1999-11-04  Tor Lillqvist  <tml@iki.fi>
 | 
			
		||||
 | 
			
		||||
	* config.h.win32: Don't define HAVE_DIMM_H if MSC, as you have to
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,43 @@
 | 
			
		||||
1999-11-07  Tor Lillqvist  <tml@iki.fi>
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkprivate.h: New font private structures, related to
 | 
			
		||||
	fontsets.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkfont.c: New functions gdk_font_list_new() and
 | 
			
		||||
	gdk_font_list_free(). On X11, will just be wrappers to
 | 
			
		||||
	XListFonts() and XFreeFontNames(). On Win32, the code previously
 | 
			
		||||
	in gtkfontsel.c is now here.
 | 
			
		||||
 | 
			
		||||
	New function gdk_font_xlfd_create(). On X11 will get the FONT
 | 
			
		||||
	property of the font (for GDK_FONT_FONTs), or call
 | 
			
		||||
	XBaseFontNameListOfFontSet (for GDK_FONT_FONTSETs), on Win32
 | 
			
		||||
	builds a XLFD style name from the font information in the LOGFONT
 | 
			
		||||
	struct(s).
 | 
			
		||||
 | 
			
		||||
	New function gdk_font_xlfd_free(), which correspondingly frees the
 | 
			
		||||
	string returned by gdk_font_xlfd_create().
 | 
			
		||||
 | 
			
		||||
	Implement fontsets on Win32. Add a function that iterates over a
 | 
			
		||||
	wide char string and calls a callback function for each substring
 | 
			
		||||
	of wide chars from the same Unicode subrange (and thus probably
 | 
			
		||||
	available in the same real font).
 | 
			
		||||
 | 
			
		||||
	Improve the XLFD emulation a bit.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkim.c (gdk_nmbstowchar_ts): Small bugfix.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkevents.c: Workaround for suspected bug on Win2k
 | 
			
		||||
	Beta3, WM_IME_CHAR messages don't seem to contain the composed
 | 
			
		||||
	multi-byte char as with the Active IMM on Win9x. Oh well, handle
 | 
			
		||||
	WM_IME_COMPOSITION with GCS_RESULTSTR instead, use
 | 
			
		||||
	ImmGetCompositionStringW() to get the composed Unicode chars.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkgc.c
 | 
			
		||||
	* gdk/win32/gdkdraw.c: Changes needed because of the font private
 | 
			
		||||
	struct changes.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdk.def: Add the new functions.
 | 
			
		||||
 | 
			
		||||
1999-11-04  Tor Lillqvist  <tml@iki.fi>
 | 
			
		||||
 | 
			
		||||
	* config.h.win32: Don't define HAVE_DIMM_H if MSC, as you have to
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,43 @@
 | 
			
		||||
1999-11-07  Tor Lillqvist  <tml@iki.fi>
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkprivate.h: New font private structures, related to
 | 
			
		||||
	fontsets.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkfont.c: New functions gdk_font_list_new() and
 | 
			
		||||
	gdk_font_list_free(). On X11, will just be wrappers to
 | 
			
		||||
	XListFonts() and XFreeFontNames(). On Win32, the code previously
 | 
			
		||||
	in gtkfontsel.c is now here.
 | 
			
		||||
 | 
			
		||||
	New function gdk_font_xlfd_create(). On X11 will get the FONT
 | 
			
		||||
	property of the font (for GDK_FONT_FONTs), or call
 | 
			
		||||
	XBaseFontNameListOfFontSet (for GDK_FONT_FONTSETs), on Win32
 | 
			
		||||
	builds a XLFD style name from the font information in the LOGFONT
 | 
			
		||||
	struct(s).
 | 
			
		||||
 | 
			
		||||
	New function gdk_font_xlfd_free(), which correspondingly frees the
 | 
			
		||||
	string returned by gdk_font_xlfd_create().
 | 
			
		||||
 | 
			
		||||
	Implement fontsets on Win32. Add a function that iterates over a
 | 
			
		||||
	wide char string and calls a callback function for each substring
 | 
			
		||||
	of wide chars from the same Unicode subrange (and thus probably
 | 
			
		||||
	available in the same real font).
 | 
			
		||||
 | 
			
		||||
	Improve the XLFD emulation a bit.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkim.c (gdk_nmbstowchar_ts): Small bugfix.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkevents.c: Workaround for suspected bug on Win2k
 | 
			
		||||
	Beta3, WM_IME_CHAR messages don't seem to contain the composed
 | 
			
		||||
	multi-byte char as with the Active IMM on Win9x. Oh well, handle
 | 
			
		||||
	WM_IME_COMPOSITION with GCS_RESULTSTR instead, use
 | 
			
		||||
	ImmGetCompositionStringW() to get the composed Unicode chars.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkgc.c
 | 
			
		||||
	* gdk/win32/gdkdraw.c: Changes needed because of the font private
 | 
			
		||||
	struct changes.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdk.def: Add the new functions.
 | 
			
		||||
 | 
			
		||||
1999-11-04  Tor Lillqvist  <tml@iki.fi>
 | 
			
		||||
 | 
			
		||||
	* config.h.win32: Don't define HAVE_DIMM_H if MSC, as you have to
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,43 @@
 | 
			
		||||
1999-11-07  Tor Lillqvist  <tml@iki.fi>
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkprivate.h: New font private structures, related to
 | 
			
		||||
	fontsets.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkfont.c: New functions gdk_font_list_new() and
 | 
			
		||||
	gdk_font_list_free(). On X11, will just be wrappers to
 | 
			
		||||
	XListFonts() and XFreeFontNames(). On Win32, the code previously
 | 
			
		||||
	in gtkfontsel.c is now here.
 | 
			
		||||
 | 
			
		||||
	New function gdk_font_xlfd_create(). On X11 will get the FONT
 | 
			
		||||
	property of the font (for GDK_FONT_FONTs), or call
 | 
			
		||||
	XBaseFontNameListOfFontSet (for GDK_FONT_FONTSETs), on Win32
 | 
			
		||||
	builds a XLFD style name from the font information in the LOGFONT
 | 
			
		||||
	struct(s).
 | 
			
		||||
 | 
			
		||||
	New function gdk_font_xlfd_free(), which correspondingly frees the
 | 
			
		||||
	string returned by gdk_font_xlfd_create().
 | 
			
		||||
 | 
			
		||||
	Implement fontsets on Win32. Add a function that iterates over a
 | 
			
		||||
	wide char string and calls a callback function for each substring
 | 
			
		||||
	of wide chars from the same Unicode subrange (and thus probably
 | 
			
		||||
	available in the same real font).
 | 
			
		||||
 | 
			
		||||
	Improve the XLFD emulation a bit.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkim.c (gdk_nmbstowchar_ts): Small bugfix.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkevents.c: Workaround for suspected bug on Win2k
 | 
			
		||||
	Beta3, WM_IME_CHAR messages don't seem to contain the composed
 | 
			
		||||
	multi-byte char as with the Active IMM on Win9x. Oh well, handle
 | 
			
		||||
	WM_IME_COMPOSITION with GCS_RESULTSTR instead, use
 | 
			
		||||
	ImmGetCompositionStringW() to get the composed Unicode chars.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkgc.c
 | 
			
		||||
	* gdk/win32/gdkdraw.c: Changes needed because of the font private
 | 
			
		||||
	struct changes.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdk.def: Add the new functions.
 | 
			
		||||
 | 
			
		||||
1999-11-04  Tor Lillqvist  <tml@iki.fi>
 | 
			
		||||
 | 
			
		||||
	* config.h.win32: Don't define HAVE_DIMM_H if MSC, as you have to
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,43 @@
 | 
			
		||||
1999-11-07  Tor Lillqvist  <tml@iki.fi>
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkprivate.h: New font private structures, related to
 | 
			
		||||
	fontsets.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkfont.c: New functions gdk_font_list_new() and
 | 
			
		||||
	gdk_font_list_free(). On X11, will just be wrappers to
 | 
			
		||||
	XListFonts() and XFreeFontNames(). On Win32, the code previously
 | 
			
		||||
	in gtkfontsel.c is now here.
 | 
			
		||||
 | 
			
		||||
	New function gdk_font_xlfd_create(). On X11 will get the FONT
 | 
			
		||||
	property of the font (for GDK_FONT_FONTs), or call
 | 
			
		||||
	XBaseFontNameListOfFontSet (for GDK_FONT_FONTSETs), on Win32
 | 
			
		||||
	builds a XLFD style name from the font information in the LOGFONT
 | 
			
		||||
	struct(s).
 | 
			
		||||
 | 
			
		||||
	New function gdk_font_xlfd_free(), which correspondingly frees the
 | 
			
		||||
	string returned by gdk_font_xlfd_create().
 | 
			
		||||
 | 
			
		||||
	Implement fontsets on Win32. Add a function that iterates over a
 | 
			
		||||
	wide char string and calls a callback function for each substring
 | 
			
		||||
	of wide chars from the same Unicode subrange (and thus probably
 | 
			
		||||
	available in the same real font).
 | 
			
		||||
 | 
			
		||||
	Improve the XLFD emulation a bit.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkim.c (gdk_nmbstowchar_ts): Small bugfix.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkevents.c: Workaround for suspected bug on Win2k
 | 
			
		||||
	Beta3, WM_IME_CHAR messages don't seem to contain the composed
 | 
			
		||||
	multi-byte char as with the Active IMM on Win9x. Oh well, handle
 | 
			
		||||
	WM_IME_COMPOSITION with GCS_RESULTSTR instead, use
 | 
			
		||||
	ImmGetCompositionStringW() to get the composed Unicode chars.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkgc.c
 | 
			
		||||
	* gdk/win32/gdkdraw.c: Changes needed because of the font private
 | 
			
		||||
	struct changes.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdk.def: Add the new functions.
 | 
			
		||||
 | 
			
		||||
1999-11-04  Tor Lillqvist  <tml@iki.fi>
 | 
			
		||||
 | 
			
		||||
	* config.h.win32: Don't define HAVE_DIMM_H if MSC, as you have to
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,43 @@
 | 
			
		||||
1999-11-07  Tor Lillqvist  <tml@iki.fi>
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkprivate.h: New font private structures, related to
 | 
			
		||||
	fontsets.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkfont.c: New functions gdk_font_list_new() and
 | 
			
		||||
	gdk_font_list_free(). On X11, will just be wrappers to
 | 
			
		||||
	XListFonts() and XFreeFontNames(). On Win32, the code previously
 | 
			
		||||
	in gtkfontsel.c is now here.
 | 
			
		||||
 | 
			
		||||
	New function gdk_font_xlfd_create(). On X11 will get the FONT
 | 
			
		||||
	property of the font (for GDK_FONT_FONTs), or call
 | 
			
		||||
	XBaseFontNameListOfFontSet (for GDK_FONT_FONTSETs), on Win32
 | 
			
		||||
	builds a XLFD style name from the font information in the LOGFONT
 | 
			
		||||
	struct(s).
 | 
			
		||||
 | 
			
		||||
	New function gdk_font_xlfd_free(), which correspondingly frees the
 | 
			
		||||
	string returned by gdk_font_xlfd_create().
 | 
			
		||||
 | 
			
		||||
	Implement fontsets on Win32. Add a function that iterates over a
 | 
			
		||||
	wide char string and calls a callback function for each substring
 | 
			
		||||
	of wide chars from the same Unicode subrange (and thus probably
 | 
			
		||||
	available in the same real font).
 | 
			
		||||
 | 
			
		||||
	Improve the XLFD emulation a bit.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkim.c (gdk_nmbstowchar_ts): Small bugfix.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkevents.c: Workaround for suspected bug on Win2k
 | 
			
		||||
	Beta3, WM_IME_CHAR messages don't seem to contain the composed
 | 
			
		||||
	multi-byte char as with the Active IMM on Win9x. Oh well, handle
 | 
			
		||||
	WM_IME_COMPOSITION with GCS_RESULTSTR instead, use
 | 
			
		||||
	ImmGetCompositionStringW() to get the composed Unicode chars.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdkgc.c
 | 
			
		||||
	* gdk/win32/gdkdraw.c: Changes needed because of the font private
 | 
			
		||||
	struct changes.
 | 
			
		||||
 | 
			
		||||
	* gdk/win32/gdk.def: Add the new functions.
 | 
			
		||||
 | 
			
		||||
1999-11-04  Tor Lillqvist  <tml@iki.fi>
 | 
			
		||||
 | 
			
		||||
	* config.h.win32: Don't define HAVE_DIMM_H if MSC, as you have to
 | 
			
		||||
 | 
			
		||||
@ -105,9 +105,13 @@ EXPORTS
 | 
			
		||||
	gdk_flush
 | 
			
		||||
	gdk_font_equal
 | 
			
		||||
	gdk_font_id
 | 
			
		||||
	gdk_font_list_free
 | 
			
		||||
	gdk_font_list_new
 | 
			
		||||
	gdk_font_load
 | 
			
		||||
	gdk_font_ref
 | 
			
		||||
	gdk_font_unref
 | 
			
		||||
	gdk_font_xlfd_create
 | 
			
		||||
	gdk_font_xlfd_free
 | 
			
		||||
	gdk_fontset_load
 | 
			
		||||
	gdk_free_compound_text
 | 
			
		||||
	gdk_free_text_list
 | 
			
		||||
 | 
			
		||||
@ -235,6 +235,7 @@ gdk_init_check (int    *argc,
 | 
			
		||||
  gdk_ProgInstance = GetModuleHandle (NULL);
 | 
			
		||||
  gdk_DC = CreateDC ("DISPLAY", NULL, NULL, NULL);
 | 
			
		||||
  gdk_root_window = GetDesktopWindow ();
 | 
			
		||||
  windows_version = GetVersion ();
 | 
			
		||||
 | 
			
		||||
  CoInitialize (NULL);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -105,9 +105,13 @@ EXPORTS
 | 
			
		||||
	gdk_flush
 | 
			
		||||
	gdk_font_equal
 | 
			
		||||
	gdk_font_id
 | 
			
		||||
	gdk_font_list_free
 | 
			
		||||
	gdk_font_list_new
 | 
			
		||||
	gdk_font_load
 | 
			
		||||
	gdk_font_ref
 | 
			
		||||
	gdk_font_unref
 | 
			
		||||
	gdk_font_xlfd_create
 | 
			
		||||
	gdk_font_xlfd_free
 | 
			
		||||
	gdk_fontset_load
 | 
			
		||||
	gdk_free_compound_text
 | 
			
		||||
	gdk_free_text_list
 | 
			
		||||
 | 
			
		||||
@ -6,3 +6,4 @@
 | 
			
		||||
#define GDK_HAVE_WCTYPE_H 1
 | 
			
		||||
#endif
 | 
			
		||||
#define GDK_USE_UTF8_MBS 1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -209,8 +209,7 @@ gdk_draw_line (GdkDrawable *drawable,
 | 
			
		||||
   * we draw the end pixel separately... With wider pens we don't care.
 | 
			
		||||
   * //HB: But the NT developers don't read their API documentation ...
 | 
			
		||||
   */
 | 
			
		||||
  if (gc_private->pen_width == 1
 | 
			
		||||
      && GetVersion () > 0x80000000)
 | 
			
		||||
  if (gc_private->pen_width == 1 && windows_version > 0x80000000)
 | 
			
		||||
    if (!LineTo (hdc, x2 + 1, y2))
 | 
			
		||||
      g_warning ("gdk_draw_line: LineTo #2 failed");
 | 
			
		||||
  gdk_gc_postdraw (drawable_private, gc_private);
 | 
			
		||||
@ -423,6 +422,12 @@ gdk_draw_polygon (GdkDrawable *drawable,
 | 
			
		||||
  gdk_gc_postdraw (drawable_private, gc_private);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
  gint x, y;
 | 
			
		||||
  HDC hdc;
 | 
			
		||||
} gdk_draw_text_arg;
 | 
			
		||||
 | 
			
		||||
/* gdk_draw_string
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
@ -436,9 +441,35 @@ gdk_draw_string (GdkDrawable *drawable,
 | 
			
		||||
  gdk_draw_text (drawable, font, gc, x, y, string, strlen (string));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
gdk_draw_text_handler (GdkWin32SingleFont *singlefont,
 | 
			
		||||
		       const wchar_t      *wcstr,
 | 
			
		||||
		       int                 wclen,
 | 
			
		||||
		       void               *arg)
 | 
			
		||||
{
 | 
			
		||||
  HDC hdc;
 | 
			
		||||
  HGDIOBJ oldfont;
 | 
			
		||||
  SIZE size;
 | 
			
		||||
  GdkDrawablePrivate *drawable_private;
 | 
			
		||||
  GdkGCPrivate *gc_private;
 | 
			
		||||
  gdk_draw_text_arg *argp = (gdk_draw_text_arg *) arg;
 | 
			
		||||
 | 
			
		||||
  if ((oldfont = SelectObject (argp->hdc, singlefont->xfont)) == NULL)
 | 
			
		||||
    {
 | 
			
		||||
      g_warning ("gdk_draw_text_handler: SelectObject failed");
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
  
 | 
			
		||||
  if (!TextOutW (argp->hdc, argp->x, argp->y, wcstr, wclen))
 | 
			
		||||
    g_warning ("gdk_draw_text_handler: TextOutW failed");
 | 
			
		||||
  GetTextExtentPoint32W (argp->hdc, wcstr, wclen, &size);
 | 
			
		||||
  argp->x += size.cx;
 | 
			
		||||
 | 
			
		||||
  SelectObject (hdc, oldfont);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* gdk_draw_text
 | 
			
		||||
 *
 | 
			
		||||
 * Interface changed: add "GdkFont *font" to specify font or fontset explicitely
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
gdk_draw_text (GdkDrawable *drawable,
 | 
			
		||||
@ -449,14 +480,12 @@ gdk_draw_text (GdkDrawable *drawable,
 | 
			
		||||
	       const gchar *text,
 | 
			
		||||
	       gint         text_length)
 | 
			
		||||
{
 | 
			
		||||
  GdkDrawablePrivate *drawable_private;
 | 
			
		||||
  GdkFontPrivate *font_private;
 | 
			
		||||
  GdkGCPrivate *gc_private;
 | 
			
		||||
  HDC hdc;
 | 
			
		||||
  HFONT xfont;
 | 
			
		||||
  HGDIOBJ oldfont;
 | 
			
		||||
  GdkDrawablePrivate *drawable_private;
 | 
			
		||||
  GdkGCPrivate *gc_private;
 | 
			
		||||
  wchar_t *wcstr;
 | 
			
		||||
  gint wlen;
 | 
			
		||||
  gdk_draw_text_arg arg;
 | 
			
		||||
 | 
			
		||||
  g_return_if_fail (drawable != NULL);
 | 
			
		||||
  g_return_if_fail (font != NULL);
 | 
			
		||||
@ -473,30 +502,26 @@ gdk_draw_text (GdkDrawable *drawable,
 | 
			
		||||
 | 
			
		||||
  drawable_private = (GdkDrawablePrivate*) drawable;
 | 
			
		||||
  gc_private = (GdkGCPrivate*) gc;
 | 
			
		||||
  font_private = (GdkFontPrivate*) font;
 | 
			
		||||
 | 
			
		||||
  hdc = gdk_gc_predraw (drawable_private, gc_private);
 | 
			
		||||
  xfont = (HFONT) font_private->xfont;
 | 
			
		||||
  arg.x = x;
 | 
			
		||||
  arg.y = y;
 | 
			
		||||
  arg.hdc = gdk_gc_predraw (drawable_private, gc_private);
 | 
			
		||||
 | 
			
		||||
  GDK_NOTE (MISC, g_print ("gdk_draw_text: %#x (%d) %#x "
 | 
			
		||||
			   "+%d+%d font: %#x \"%.*s\" length: %d\n",
 | 
			
		||||
  GDK_NOTE (MISC, g_print ("gdk_draw_text: %#x (%d,%d) \"%.*s\" (len %d)\n",
 | 
			
		||||
			   drawable_private->xwindow,
 | 
			
		||||
			   gc_private, gc_private->xgc,
 | 
			
		||||
			   x, y, xfont,
 | 
			
		||||
			   x, y,
 | 
			
		||||
			   (text_length > 10 ? 10 : text_length),
 | 
			
		||||
			   text, text_length));
 | 
			
		||||
  
 | 
			
		||||
  if ((oldfont = SelectObject (hdc, xfont)) == NULL)
 | 
			
		||||
    g_warning ("gdk_draw_text: SelectObject failed");
 | 
			
		||||
 | 
			
		||||
  wcstr = g_new (wchar_t, text_length);
 | 
			
		||||
  if ((wlen = gdk_nmbstowchar_ts (wcstr, text, text_length, text_length)) == -1)
 | 
			
		||||
    g_warning ("gdk_draw_text: gdk_nmbstowchar_ts failed");
 | 
			
		||||
  else if (!TextOutW (hdc, x, y, wcstr, wlen))
 | 
			
		||||
    g_warning ("gdk_draw_text: TextOutW failed");
 | 
			
		||||
  else
 | 
			
		||||
    gdk_wchar_text_handle (font, wcstr, wlen,
 | 
			
		||||
			   gdk_draw_text_handler, &arg);
 | 
			
		||||
 | 
			
		||||
  g_free (wcstr);
 | 
			
		||||
  if (oldfont != NULL)
 | 
			
		||||
    SelectObject (hdc, oldfont);
 | 
			
		||||
 | 
			
		||||
  gdk_gc_postdraw (drawable_private, gc_private);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -510,13 +535,11 @@ gdk_draw_text_wc (GdkDrawable	 *drawable,
 | 
			
		||||
		  gint		  text_length)
 | 
			
		||||
{
 | 
			
		||||
  HDC hdc;
 | 
			
		||||
  HGDIOBJ oldfont;
 | 
			
		||||
  GdkDrawablePrivate *drawable_private;
 | 
			
		||||
  GdkFontPrivate *font_private;
 | 
			
		||||
  GdkGCPrivate *gc_private;
 | 
			
		||||
  gint i, wlen;
 | 
			
		||||
  wchar_t *wcstr;
 | 
			
		||||
  guchar *str;
 | 
			
		||||
  gdk_draw_text_arg arg;
 | 
			
		||||
 | 
			
		||||
  g_return_if_fail (drawable != NULL);
 | 
			
		||||
  g_return_if_fail (font != NULL);
 | 
			
		||||
@ -533,19 +556,15 @@ gdk_draw_text_wc (GdkDrawable	 *drawable,
 | 
			
		||||
 | 
			
		||||
  drawable_private = (GdkDrawablePrivate*) drawable;
 | 
			
		||||
  gc_private = (GdkGCPrivate*) gc;
 | 
			
		||||
  font_private = (GdkFontPrivate*) font;
 | 
			
		||||
 | 
			
		||||
  hdc = gdk_gc_predraw (drawable_private, gc_private);
 | 
			
		||||
  arg.x = x;
 | 
			
		||||
  arg.y = y;
 | 
			
		||||
  arg.hdc = gdk_gc_predraw (drawable_private, gc_private);
 | 
			
		||||
 | 
			
		||||
  GDK_NOTE (MISC, g_print ("gdk_draw_text_wc: %#x (%d) %#x "
 | 
			
		||||
			   "+%d+%d font: %#x length: %d\n",
 | 
			
		||||
  GDK_NOTE (MISC, g_print ("gdk_draw_text_wc: %#x (%d,%d) len: %d\n",
 | 
			
		||||
			   drawable_private->xwindow,
 | 
			
		||||
			   gc_private, gc_private->xgc,
 | 
			
		||||
			   x, y, font_private->xfont,
 | 
			
		||||
			   text_length));
 | 
			
		||||
			   x, y, text_length));
 | 
			
		||||
      
 | 
			
		||||
  if ((oldfont = SelectObject (hdc, font_private->xfont)) == NULL)
 | 
			
		||||
    g_warning ("gdk_draw_text_wc: SelectObject failed");
 | 
			
		||||
  if (sizeof (wchar_t) != sizeof (GdkWChar))
 | 
			
		||||
    {
 | 
			
		||||
      wcstr = g_new (wchar_t, text_length);
 | 
			
		||||
@ -555,13 +574,12 @@ gdk_draw_text_wc (GdkDrawable	 *drawable,
 | 
			
		||||
  else
 | 
			
		||||
    wcstr = (wchar_t *) text;
 | 
			
		||||
 | 
			
		||||
  if (!TextOutW (hdc, x, y, wcstr, text_length))
 | 
			
		||||
    g_warning ("gdk_draw_text_wc: TextOutW failed");
 | 
			
		||||
  gdk_wchar_text_handle (font, wcstr, text_length,
 | 
			
		||||
			 gdk_draw_text_handler, &arg);
 | 
			
		||||
 | 
			
		||||
  if (sizeof (wchar_t) != sizeof (GdkWChar))
 | 
			
		||||
    g_free (wcstr);
 | 
			
		||||
  if (oldfont != NULL)
 | 
			
		||||
    SelectObject (hdc, oldfont);
 | 
			
		||||
 | 
			
		||||
  gdk_gc_postdraw (drawable_private, gc_private);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -209,8 +209,7 @@ gdk_draw_line (GdkDrawable *drawable,
 | 
			
		||||
   * we draw the end pixel separately... With wider pens we don't care.
 | 
			
		||||
   * //HB: But the NT developers don't read their API documentation ...
 | 
			
		||||
   */
 | 
			
		||||
  if (gc_private->pen_width == 1
 | 
			
		||||
      && GetVersion () > 0x80000000)
 | 
			
		||||
  if (gc_private->pen_width == 1 && windows_version > 0x80000000)
 | 
			
		||||
    if (!LineTo (hdc, x2 + 1, y2))
 | 
			
		||||
      g_warning ("gdk_draw_line: LineTo #2 failed");
 | 
			
		||||
  gdk_gc_postdraw (drawable_private, gc_private);
 | 
			
		||||
@ -423,6 +422,12 @@ gdk_draw_polygon (GdkDrawable *drawable,
 | 
			
		||||
  gdk_gc_postdraw (drawable_private, gc_private);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
  gint x, y;
 | 
			
		||||
  HDC hdc;
 | 
			
		||||
} gdk_draw_text_arg;
 | 
			
		||||
 | 
			
		||||
/* gdk_draw_string
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
@ -436,9 +441,35 @@ gdk_draw_string (GdkDrawable *drawable,
 | 
			
		||||
  gdk_draw_text (drawable, font, gc, x, y, string, strlen (string));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
gdk_draw_text_handler (GdkWin32SingleFont *singlefont,
 | 
			
		||||
		       const wchar_t      *wcstr,
 | 
			
		||||
		       int                 wclen,
 | 
			
		||||
		       void               *arg)
 | 
			
		||||
{
 | 
			
		||||
  HDC hdc;
 | 
			
		||||
  HGDIOBJ oldfont;
 | 
			
		||||
  SIZE size;
 | 
			
		||||
  GdkDrawablePrivate *drawable_private;
 | 
			
		||||
  GdkGCPrivate *gc_private;
 | 
			
		||||
  gdk_draw_text_arg *argp = (gdk_draw_text_arg *) arg;
 | 
			
		||||
 | 
			
		||||
  if ((oldfont = SelectObject (argp->hdc, singlefont->xfont)) == NULL)
 | 
			
		||||
    {
 | 
			
		||||
      g_warning ("gdk_draw_text_handler: SelectObject failed");
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
  
 | 
			
		||||
  if (!TextOutW (argp->hdc, argp->x, argp->y, wcstr, wclen))
 | 
			
		||||
    g_warning ("gdk_draw_text_handler: TextOutW failed");
 | 
			
		||||
  GetTextExtentPoint32W (argp->hdc, wcstr, wclen, &size);
 | 
			
		||||
  argp->x += size.cx;
 | 
			
		||||
 | 
			
		||||
  SelectObject (hdc, oldfont);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/* gdk_draw_text
 | 
			
		||||
 *
 | 
			
		||||
 * Interface changed: add "GdkFont *font" to specify font or fontset explicitely
 | 
			
		||||
 */
 | 
			
		||||
void
 | 
			
		||||
gdk_draw_text (GdkDrawable *drawable,
 | 
			
		||||
@ -449,14 +480,12 @@ gdk_draw_text (GdkDrawable *drawable,
 | 
			
		||||
	       const gchar *text,
 | 
			
		||||
	       gint         text_length)
 | 
			
		||||
{
 | 
			
		||||
  GdkDrawablePrivate *drawable_private;
 | 
			
		||||
  GdkFontPrivate *font_private;
 | 
			
		||||
  GdkGCPrivate *gc_private;
 | 
			
		||||
  HDC hdc;
 | 
			
		||||
  HFONT xfont;
 | 
			
		||||
  HGDIOBJ oldfont;
 | 
			
		||||
  GdkDrawablePrivate *drawable_private;
 | 
			
		||||
  GdkGCPrivate *gc_private;
 | 
			
		||||
  wchar_t *wcstr;
 | 
			
		||||
  gint wlen;
 | 
			
		||||
  gdk_draw_text_arg arg;
 | 
			
		||||
 | 
			
		||||
  g_return_if_fail (drawable != NULL);
 | 
			
		||||
  g_return_if_fail (font != NULL);
 | 
			
		||||
@ -473,30 +502,26 @@ gdk_draw_text (GdkDrawable *drawable,
 | 
			
		||||
 | 
			
		||||
  drawable_private = (GdkDrawablePrivate*) drawable;
 | 
			
		||||
  gc_private = (GdkGCPrivate*) gc;
 | 
			
		||||
  font_private = (GdkFontPrivate*) font;
 | 
			
		||||
 | 
			
		||||
  hdc = gdk_gc_predraw (drawable_private, gc_private);
 | 
			
		||||
  xfont = (HFONT) font_private->xfont;
 | 
			
		||||
  arg.x = x;
 | 
			
		||||
  arg.y = y;
 | 
			
		||||
  arg.hdc = gdk_gc_predraw (drawable_private, gc_private);
 | 
			
		||||
 | 
			
		||||
  GDK_NOTE (MISC, g_print ("gdk_draw_text: %#x (%d) %#x "
 | 
			
		||||
			   "+%d+%d font: %#x \"%.*s\" length: %d\n",
 | 
			
		||||
  GDK_NOTE (MISC, g_print ("gdk_draw_text: %#x (%d,%d) \"%.*s\" (len %d)\n",
 | 
			
		||||
			   drawable_private->xwindow,
 | 
			
		||||
			   gc_private, gc_private->xgc,
 | 
			
		||||
			   x, y, xfont,
 | 
			
		||||
			   x, y,
 | 
			
		||||
			   (text_length > 10 ? 10 : text_length),
 | 
			
		||||
			   text, text_length));
 | 
			
		||||
  
 | 
			
		||||
  if ((oldfont = SelectObject (hdc, xfont)) == NULL)
 | 
			
		||||
    g_warning ("gdk_draw_text: SelectObject failed");
 | 
			
		||||
 | 
			
		||||
  wcstr = g_new (wchar_t, text_length);
 | 
			
		||||
  if ((wlen = gdk_nmbstowchar_ts (wcstr, text, text_length, text_length)) == -1)
 | 
			
		||||
    g_warning ("gdk_draw_text: gdk_nmbstowchar_ts failed");
 | 
			
		||||
  else if (!TextOutW (hdc, x, y, wcstr, wlen))
 | 
			
		||||
    g_warning ("gdk_draw_text: TextOutW failed");
 | 
			
		||||
  else
 | 
			
		||||
    gdk_wchar_text_handle (font, wcstr, wlen,
 | 
			
		||||
			   gdk_draw_text_handler, &arg);
 | 
			
		||||
 | 
			
		||||
  g_free (wcstr);
 | 
			
		||||
  if (oldfont != NULL)
 | 
			
		||||
    SelectObject (hdc, oldfont);
 | 
			
		||||
 | 
			
		||||
  gdk_gc_postdraw (drawable_private, gc_private);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -510,13 +535,11 @@ gdk_draw_text_wc (GdkDrawable	 *drawable,
 | 
			
		||||
		  gint		  text_length)
 | 
			
		||||
{
 | 
			
		||||
  HDC hdc;
 | 
			
		||||
  HGDIOBJ oldfont;
 | 
			
		||||
  GdkDrawablePrivate *drawable_private;
 | 
			
		||||
  GdkFontPrivate *font_private;
 | 
			
		||||
  GdkGCPrivate *gc_private;
 | 
			
		||||
  gint i, wlen;
 | 
			
		||||
  wchar_t *wcstr;
 | 
			
		||||
  guchar *str;
 | 
			
		||||
  gdk_draw_text_arg arg;
 | 
			
		||||
 | 
			
		||||
  g_return_if_fail (drawable != NULL);
 | 
			
		||||
  g_return_if_fail (font != NULL);
 | 
			
		||||
@ -533,19 +556,15 @@ gdk_draw_text_wc (GdkDrawable	 *drawable,
 | 
			
		||||
 | 
			
		||||
  drawable_private = (GdkDrawablePrivate*) drawable;
 | 
			
		||||
  gc_private = (GdkGCPrivate*) gc;
 | 
			
		||||
  font_private = (GdkFontPrivate*) font;
 | 
			
		||||
 | 
			
		||||
  hdc = gdk_gc_predraw (drawable_private, gc_private);
 | 
			
		||||
  arg.x = x;
 | 
			
		||||
  arg.y = y;
 | 
			
		||||
  arg.hdc = gdk_gc_predraw (drawable_private, gc_private);
 | 
			
		||||
 | 
			
		||||
  GDK_NOTE (MISC, g_print ("gdk_draw_text_wc: %#x (%d) %#x "
 | 
			
		||||
			   "+%d+%d font: %#x length: %d\n",
 | 
			
		||||
  GDK_NOTE (MISC, g_print ("gdk_draw_text_wc: %#x (%d,%d) len: %d\n",
 | 
			
		||||
			   drawable_private->xwindow,
 | 
			
		||||
			   gc_private, gc_private->xgc,
 | 
			
		||||
			   x, y, font_private->xfont,
 | 
			
		||||
			   text_length));
 | 
			
		||||
			   x, y, text_length));
 | 
			
		||||
      
 | 
			
		||||
  if ((oldfont = SelectObject (hdc, font_private->xfont)) == NULL)
 | 
			
		||||
    g_warning ("gdk_draw_text_wc: SelectObject failed");
 | 
			
		||||
  if (sizeof (wchar_t) != sizeof (GdkWChar))
 | 
			
		||||
    {
 | 
			
		||||
      wcstr = g_new (wchar_t, text_length);
 | 
			
		||||
@ -555,13 +574,12 @@ gdk_draw_text_wc (GdkDrawable	 *drawable,
 | 
			
		||||
  else
 | 
			
		||||
    wcstr = (wchar_t *) text;
 | 
			
		||||
 | 
			
		||||
  if (!TextOutW (hdc, x, y, wcstr, text_length))
 | 
			
		||||
    g_warning ("gdk_draw_text_wc: TextOutW failed");
 | 
			
		||||
  gdk_wchar_text_handle (font, wcstr, text_length,
 | 
			
		||||
			 gdk_draw_text_handler, &arg);
 | 
			
		||||
 | 
			
		||||
  if (sizeof (wchar_t) != sizeof (GdkWChar))
 | 
			
		||||
    g_free (wcstr);
 | 
			
		||||
  if (oldfont != NULL)
 | 
			
		||||
    SelectObject (hdc, oldfont);
 | 
			
		||||
 | 
			
		||||
  gdk_gc_postdraw (drawable_private, gc_private);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -187,6 +187,11 @@ static gboolean is_AltGr_key = FALSE;
 | 
			
		||||
static IActiveIMMApp *paimmapp = NULL;
 | 
			
		||||
static IActiveIMMMessagePumpOwner *paimmmpo = NULL;
 | 
			
		||||
 | 
			
		||||
typedef BOOL (WINAPI *PFN_TrackMouseEvent) (LPTRACKMOUSEEVENT);
 | 
			
		||||
static PFN_TrackMouseEvent p_TrackMouseEvent = NULL;
 | 
			
		||||
 | 
			
		||||
static gboolean use_IME_COMPOSITION = FALSE;
 | 
			
		||||
 | 
			
		||||
LRESULT CALLBACK 
 | 
			
		||||
gdk_WindowProc (HWND hWnd,
 | 
			
		||||
		UINT message,
 | 
			
		||||
@ -381,7 +386,7 @@ void
 | 
			
		||||
gdk_events_init (void)
 | 
			
		||||
{
 | 
			
		||||
  HRESULT hres;
 | 
			
		||||
  HMODULE user32;
 | 
			
		||||
  HMODULE user32, imm32;
 | 
			
		||||
  HINSTANCE commctrl32;
 | 
			
		||||
 | 
			
		||||
  if (g_pipe_readable_msg == 0)
 | 
			
		||||
@ -430,11 +435,21 @@ gdk_events_init (void)
 | 
			
		||||
  if ((p_TrackMouseEvent = GetProcAddress (user32, "TrackMouseEvent")) == NULL)
 | 
			
		||||
    {
 | 
			
		||||
      if ((commctrl32 = LoadLibrary ("commctrl32.dll")) != NULL)
 | 
			
		||||
	p_TrackMouseEvent = GetProcAddress (commctrl32, "_TrackMouseEvent");
 | 
			
		||||
	p_TrackMouseEvent = (PFN_TrackMouseEvent)
 | 
			
		||||
	  GetProcAddress (commctrl32, "_TrackMouseEvent");
 | 
			
		||||
    }
 | 
			
		||||
  if (p_TrackMouseEvent != NULL)
 | 
			
		||||
    GDK_NOTE (EVENTS, g_print ("Using TrackMouseEvent to detect leave events\n"));
 | 
			
		||||
#endif
 | 
			
		||||
  if (windows_version < 0x80000000 && (windows_version & 0xFF) == 5)
 | 
			
		||||
    {
 | 
			
		||||
      /* On Win2k (Beta 3, at least) WM_IME_CHAR doesn't seem to work
 | 
			
		||||
       * correctly for non-Unicode applications. Handle
 | 
			
		||||
       * WM_IME_COMPOSITION with GCS_RESULTSTR instead, fetch the
 | 
			
		||||
       * Unicode char from the IME with ImmGetCompositionStringW().
 | 
			
		||||
       */
 | 
			
		||||
      use_IME_COMPOSITION = TRUE;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@ -1174,6 +1189,8 @@ gdk_add_client_message_filter (GdkAtom       message_type,
 | 
			
		||||
 * mapping functions, from the xterm sources.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#if 0 /* Keyval-to-Unicode isn't actually needed  */
 | 
			
		||||
 | 
			
		||||
struct k2u {
 | 
			
		||||
  unsigned short keysym;
 | 
			
		||||
  unsigned short ucs;
 | 
			
		||||
@ -1997,6 +2014,8 @@ keyval_to_unicode (guint keysym)
 | 
			
		||||
  return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif /* 0 */
 | 
			
		||||
 | 
			
		||||
struct u2k {
 | 
			
		||||
  unsigned short keysym;
 | 
			
		||||
  unsigned short ucs;
 | 
			
		||||
@ -2841,6 +2860,7 @@ build_keypress_event (GdkWindowPrivate *window_private,
 | 
			
		||||
		      GdkEvent         *event,
 | 
			
		||||
		      MSG              *xevent)
 | 
			
		||||
{
 | 
			
		||||
  HIMC hIMC;
 | 
			
		||||
  gint i, bytesleft, bytecount, ucount, ucleft, len;
 | 
			
		||||
  guchar buf[100], *bp;
 | 
			
		||||
  wchar_t wbuf[100], *wcp;
 | 
			
		||||
@ -2848,20 +2868,29 @@ build_keypress_event (GdkWindowPrivate *window_private,
 | 
			
		||||
  event->key.type = GDK_KEY_PRESS;
 | 
			
		||||
  event->key.time = xevent->time;
 | 
			
		||||
  
 | 
			
		||||
  if (xevent->message == WM_IME_COMPOSITION)
 | 
			
		||||
    {
 | 
			
		||||
      hIMC = ImmGetContext (xevent->hwnd);
 | 
			
		||||
 | 
			
		||||
      bytecount = ImmGetCompositionStringW (hIMC, GCS_RESULTSTR,
 | 
			
		||||
					    wbuf, sizeof (wbuf));
 | 
			
		||||
      ucount = bytecount / 2;
 | 
			
		||||
    }
 | 
			
		||||
  else
 | 
			
		||||
    {
 | 
			
		||||
      if (xevent->message == WM_CHAR)
 | 
			
		||||
	{
 | 
			
		||||
	  bytecount = MIN ((xevent->lParam & 0xFFFF), sizeof (buf));
 | 
			
		||||
	  for (i = 0; i < bytecount; i++)
 | 
			
		||||
	    buf[i] = xevent->wParam;
 | 
			
		||||
	}
 | 
			
		||||
  else
 | 
			
		||||
      else /* WM_IME_CHAR */
 | 
			
		||||
	{
 | 
			
		||||
      /* WM_IME_CHAR */
 | 
			
		||||
	  event->key.keyval = GDK_VoidSymbol;
 | 
			
		||||
	  if (xevent->wParam & 0xFF00)
 | 
			
		||||
	    {
 | 
			
		||||
	  /* Contrary to the documentation,
 | 
			
		||||
	   * the lead byte is the msb byte.
 | 
			
		||||
	      /* Contrary to some versions of the documentation,
 | 
			
		||||
	       * the lead byte is the most significant byte.
 | 
			
		||||
	       */
 | 
			
		||||
	      buf[0] = ((xevent->wParam >> 8) & 0xFF);
 | 
			
		||||
	      buf[1] = (xevent->wParam & 0xFF);
 | 
			
		||||
@ -2879,8 +2908,10 @@ build_keypress_event (GdkWindowPrivate *window_private,
 | 
			
		||||
       * We don't handle the surrogate stuff. Should we?
 | 
			
		||||
       */
 | 
			
		||||
      ucount = MultiByteToWideChar (window_private->charset_info.ciACP,
 | 
			
		||||
				0, buf, bytecount, wbuf, 100);
 | 
			
		||||
				    0, buf, bytecount,
 | 
			
		||||
				    wbuf, sizeof (wbuf) / sizeof (wbuf[0]));
 | 
			
		||||
      
 | 
			
		||||
    }
 | 
			
		||||
  if (ucount == 0)
 | 
			
		||||
    event->key.keyval = GDK_VoidSymbol;
 | 
			
		||||
  else if (xevent->message == WM_CHAR)
 | 
			
		||||
@ -2958,6 +2989,35 @@ build_keypress_event (GdkWindowPrivate *window_private,
 | 
			
		||||
  *bp = 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
build_keyrelease_event (GdkWindowPrivate *window_private,
 | 
			
		||||
			GdkEvent         *event,
 | 
			
		||||
			MSG              *xevent)
 | 
			
		||||
{
 | 
			
		||||
  guchar buf;
 | 
			
		||||
  wchar_t wbuf;
 | 
			
		||||
 | 
			
		||||
  event->key.type = GDK_KEY_RELEASE;
 | 
			
		||||
  event->key.time = xevent->time;
 | 
			
		||||
 | 
			
		||||
  if (xevent->message == WM_CHAR)
 | 
			
		||||
    if (xevent->wParam < ' ')
 | 
			
		||||
      event->key.keyval = xevent->wParam + '@';
 | 
			
		||||
    else
 | 
			
		||||
      {
 | 
			
		||||
	buf = xevent->wParam;
 | 
			
		||||
	MultiByteToWideChar (window_private->charset_info.ciACP,
 | 
			
		||||
			     0, &buf, 1, &wbuf, 1);
 | 
			
		||||
 | 
			
		||||
	event->key.keyval = unicode_to_keyval (wbuf);
 | 
			
		||||
      }
 | 
			
		||||
  else
 | 
			
		||||
    event->key.keyval = GDK_VoidSymbol;
 | 
			
		||||
  build_key_event_state (event);
 | 
			
		||||
  event->key.string = NULL;
 | 
			
		||||
  event->key.length = 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
print_event_state (gint state)
 | 
			
		||||
{
 | 
			
		||||
@ -3368,7 +3428,7 @@ gdk_event_translate (GdkEvent *event,
 | 
			
		||||
  HDC bgdc;
 | 
			
		||||
  HGDIOBJ oldbitmap;
 | 
			
		||||
  int button;
 | 
			
		||||
  int i, j;
 | 
			
		||||
  int i, j, n, k;
 | 
			
		||||
  gchar buf[256];
 | 
			
		||||
  gchar *msgname;
 | 
			
		||||
  gboolean return_val;
 | 
			
		||||
@ -3835,6 +3895,15 @@ gdk_event_translate (GdkEvent *event,
 | 
			
		||||
      return_val = !GDK_DRAWABLE_DESTROYED (window);
 | 
			
		||||
      break;
 | 
			
		||||
 | 
			
		||||
    case WM_IME_COMPOSITION:
 | 
			
		||||
      if (!use_IME_COMPOSITION)
 | 
			
		||||
	break;
 | 
			
		||||
      GDK_NOTE (EVENTS, g_print ("WM_IME_COMPOSITION: %#x  %#x\n",
 | 
			
		||||
				 xevent->hwnd, xevent->lParam));
 | 
			
		||||
      if (xevent->lParam & GCS_RESULTSTR)
 | 
			
		||||
	goto wm_char;
 | 
			
		||||
      break;
 | 
			
		||||
 | 
			
		||||
    case WM_IME_CHAR:
 | 
			
		||||
      GDK_NOTE (EVENTS,
 | 
			
		||||
		g_print ("WM_IME_CHAR: %#x  bytes: %#.04x\n",
 | 
			
		||||
@ -3918,22 +3987,18 @@ gdk_event_translate (GdkEvent *event,
 | 
			
		||||
	      gdk_event_queue_append (event2);
 | 
			
		||||
	      GDK_NOTE (EVENTS, print_event (event2));
 | 
			
		||||
	    }
 | 
			
		||||
	  /* Return the release event.  */
 | 
			
		||||
	  event->key.type = GDK_KEY_RELEASE;
 | 
			
		||||
	  event->key.keyval = xevent->wParam;
 | 
			
		||||
	  event->key.time = xevent->time;
 | 
			
		||||
	  build_key_event_state (event);
 | 
			
		||||
	  event->key.string = NULL;
 | 
			
		||||
	  event->key.length = 0;
 | 
			
		||||
	  /* Return the key release event.  */
 | 
			
		||||
	  build_keyrelease_event (WINDOW_PRIVATE(window), event, xevent);
 | 
			
		||||
	}
 | 
			
		||||
      else if (return_val
 | 
			
		||||
	       && (WINDOW_PRIVATE(window)->event_mask & GDK_KEY_PRESS_MASK))
 | 
			
		||||
	{
 | 
			
		||||
	  /* Return just the GDK_KEY_PRESS event. */
 | 
			
		||||
	  /* Return just the key press event. */
 | 
			
		||||
	  build_keypress_event (WINDOW_PRIVATE(window), event, xevent);
 | 
			
		||||
	}
 | 
			
		||||
      else
 | 
			
		||||
	return_val = FALSE;
 | 
			
		||||
 | 
			
		||||
#if 0 /* Don't reset is_AltGr_key here. Othewise we can't type several
 | 
			
		||||
       * AltGr-accessed chars while keeping the AltGr pressed down
 | 
			
		||||
       * all the time.
 | 
			
		||||
 | 
			
		||||
@ -187,6 +187,11 @@ static gboolean is_AltGr_key = FALSE;
 | 
			
		||||
static IActiveIMMApp *paimmapp = NULL;
 | 
			
		||||
static IActiveIMMMessagePumpOwner *paimmmpo = NULL;
 | 
			
		||||
 | 
			
		||||
typedef BOOL (WINAPI *PFN_TrackMouseEvent) (LPTRACKMOUSEEVENT);
 | 
			
		||||
static PFN_TrackMouseEvent p_TrackMouseEvent = NULL;
 | 
			
		||||
 | 
			
		||||
static gboolean use_IME_COMPOSITION = FALSE;
 | 
			
		||||
 | 
			
		||||
LRESULT CALLBACK 
 | 
			
		||||
gdk_WindowProc (HWND hWnd,
 | 
			
		||||
		UINT message,
 | 
			
		||||
@ -381,7 +386,7 @@ void
 | 
			
		||||
gdk_events_init (void)
 | 
			
		||||
{
 | 
			
		||||
  HRESULT hres;
 | 
			
		||||
  HMODULE user32;
 | 
			
		||||
  HMODULE user32, imm32;
 | 
			
		||||
  HINSTANCE commctrl32;
 | 
			
		||||
 | 
			
		||||
  if (g_pipe_readable_msg == 0)
 | 
			
		||||
@ -430,11 +435,21 @@ gdk_events_init (void)
 | 
			
		||||
  if ((p_TrackMouseEvent = GetProcAddress (user32, "TrackMouseEvent")) == NULL)
 | 
			
		||||
    {
 | 
			
		||||
      if ((commctrl32 = LoadLibrary ("commctrl32.dll")) != NULL)
 | 
			
		||||
	p_TrackMouseEvent = GetProcAddress (commctrl32, "_TrackMouseEvent");
 | 
			
		||||
	p_TrackMouseEvent = (PFN_TrackMouseEvent)
 | 
			
		||||
	  GetProcAddress (commctrl32, "_TrackMouseEvent");
 | 
			
		||||
    }
 | 
			
		||||
  if (p_TrackMouseEvent != NULL)
 | 
			
		||||
    GDK_NOTE (EVENTS, g_print ("Using TrackMouseEvent to detect leave events\n"));
 | 
			
		||||
#endif
 | 
			
		||||
  if (windows_version < 0x80000000 && (windows_version & 0xFF) == 5)
 | 
			
		||||
    {
 | 
			
		||||
      /* On Win2k (Beta 3, at least) WM_IME_CHAR doesn't seem to work
 | 
			
		||||
       * correctly for non-Unicode applications. Handle
 | 
			
		||||
       * WM_IME_COMPOSITION with GCS_RESULTSTR instead, fetch the
 | 
			
		||||
       * Unicode char from the IME with ImmGetCompositionStringW().
 | 
			
		||||
       */
 | 
			
		||||
      use_IME_COMPOSITION = TRUE;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
@ -1174,6 +1189,8 @@ gdk_add_client_message_filter (GdkAtom       message_type,
 | 
			
		||||
 * mapping functions, from the xterm sources.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#if 0 /* Keyval-to-Unicode isn't actually needed  */
 | 
			
		||||
 | 
			
		||||
struct k2u {
 | 
			
		||||
  unsigned short keysym;
 | 
			
		||||
  unsigned short ucs;
 | 
			
		||||
@ -1997,6 +2014,8 @@ keyval_to_unicode (guint keysym)
 | 
			
		||||
  return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif /* 0 */
 | 
			
		||||
 | 
			
		||||
struct u2k {
 | 
			
		||||
  unsigned short keysym;
 | 
			
		||||
  unsigned short ucs;
 | 
			
		||||
@ -2841,6 +2860,7 @@ build_keypress_event (GdkWindowPrivate *window_private,
 | 
			
		||||
		      GdkEvent         *event,
 | 
			
		||||
		      MSG              *xevent)
 | 
			
		||||
{
 | 
			
		||||
  HIMC hIMC;
 | 
			
		||||
  gint i, bytesleft, bytecount, ucount, ucleft, len;
 | 
			
		||||
  guchar buf[100], *bp;
 | 
			
		||||
  wchar_t wbuf[100], *wcp;
 | 
			
		||||
@ -2848,20 +2868,29 @@ build_keypress_event (GdkWindowPrivate *window_private,
 | 
			
		||||
  event->key.type = GDK_KEY_PRESS;
 | 
			
		||||
  event->key.time = xevent->time;
 | 
			
		||||
  
 | 
			
		||||
  if (xevent->message == WM_IME_COMPOSITION)
 | 
			
		||||
    {
 | 
			
		||||
      hIMC = ImmGetContext (xevent->hwnd);
 | 
			
		||||
 | 
			
		||||
      bytecount = ImmGetCompositionStringW (hIMC, GCS_RESULTSTR,
 | 
			
		||||
					    wbuf, sizeof (wbuf));
 | 
			
		||||
      ucount = bytecount / 2;
 | 
			
		||||
    }
 | 
			
		||||
  else
 | 
			
		||||
    {
 | 
			
		||||
      if (xevent->message == WM_CHAR)
 | 
			
		||||
	{
 | 
			
		||||
	  bytecount = MIN ((xevent->lParam & 0xFFFF), sizeof (buf));
 | 
			
		||||
	  for (i = 0; i < bytecount; i++)
 | 
			
		||||
	    buf[i] = xevent->wParam;
 | 
			
		||||
	}
 | 
			
		||||
  else
 | 
			
		||||
      else /* WM_IME_CHAR */
 | 
			
		||||
	{
 | 
			
		||||
      /* WM_IME_CHAR */
 | 
			
		||||
	  event->key.keyval = GDK_VoidSymbol;
 | 
			
		||||
	  if (xevent->wParam & 0xFF00)
 | 
			
		||||
	    {
 | 
			
		||||
	  /* Contrary to the documentation,
 | 
			
		||||
	   * the lead byte is the msb byte.
 | 
			
		||||
	      /* Contrary to some versions of the documentation,
 | 
			
		||||
	       * the lead byte is the most significant byte.
 | 
			
		||||
	       */
 | 
			
		||||
	      buf[0] = ((xevent->wParam >> 8) & 0xFF);
 | 
			
		||||
	      buf[1] = (xevent->wParam & 0xFF);
 | 
			
		||||
@ -2879,8 +2908,10 @@ build_keypress_event (GdkWindowPrivate *window_private,
 | 
			
		||||
       * We don't handle the surrogate stuff. Should we?
 | 
			
		||||
       */
 | 
			
		||||
      ucount = MultiByteToWideChar (window_private->charset_info.ciACP,
 | 
			
		||||
				0, buf, bytecount, wbuf, 100);
 | 
			
		||||
				    0, buf, bytecount,
 | 
			
		||||
				    wbuf, sizeof (wbuf) / sizeof (wbuf[0]));
 | 
			
		||||
      
 | 
			
		||||
    }
 | 
			
		||||
  if (ucount == 0)
 | 
			
		||||
    event->key.keyval = GDK_VoidSymbol;
 | 
			
		||||
  else if (xevent->message == WM_CHAR)
 | 
			
		||||
@ -2958,6 +2989,35 @@ build_keypress_event (GdkWindowPrivate *window_private,
 | 
			
		||||
  *bp = 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
build_keyrelease_event (GdkWindowPrivate *window_private,
 | 
			
		||||
			GdkEvent         *event,
 | 
			
		||||
			MSG              *xevent)
 | 
			
		||||
{
 | 
			
		||||
  guchar buf;
 | 
			
		||||
  wchar_t wbuf;
 | 
			
		||||
 | 
			
		||||
  event->key.type = GDK_KEY_RELEASE;
 | 
			
		||||
  event->key.time = xevent->time;
 | 
			
		||||
 | 
			
		||||
  if (xevent->message == WM_CHAR)
 | 
			
		||||
    if (xevent->wParam < ' ')
 | 
			
		||||
      event->key.keyval = xevent->wParam + '@';
 | 
			
		||||
    else
 | 
			
		||||
      {
 | 
			
		||||
	buf = xevent->wParam;
 | 
			
		||||
	MultiByteToWideChar (window_private->charset_info.ciACP,
 | 
			
		||||
			     0, &buf, 1, &wbuf, 1);
 | 
			
		||||
 | 
			
		||||
	event->key.keyval = unicode_to_keyval (wbuf);
 | 
			
		||||
      }
 | 
			
		||||
  else
 | 
			
		||||
    event->key.keyval = GDK_VoidSymbol;
 | 
			
		||||
  build_key_event_state (event);
 | 
			
		||||
  event->key.string = NULL;
 | 
			
		||||
  event->key.length = 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
print_event_state (gint state)
 | 
			
		||||
{
 | 
			
		||||
@ -3368,7 +3428,7 @@ gdk_event_translate (GdkEvent *event,
 | 
			
		||||
  HDC bgdc;
 | 
			
		||||
  HGDIOBJ oldbitmap;
 | 
			
		||||
  int button;
 | 
			
		||||
  int i, j;
 | 
			
		||||
  int i, j, n, k;
 | 
			
		||||
  gchar buf[256];
 | 
			
		||||
  gchar *msgname;
 | 
			
		||||
  gboolean return_val;
 | 
			
		||||
@ -3835,6 +3895,15 @@ gdk_event_translate (GdkEvent *event,
 | 
			
		||||
      return_val = !GDK_DRAWABLE_DESTROYED (window);
 | 
			
		||||
      break;
 | 
			
		||||
 | 
			
		||||
    case WM_IME_COMPOSITION:
 | 
			
		||||
      if (!use_IME_COMPOSITION)
 | 
			
		||||
	break;
 | 
			
		||||
      GDK_NOTE (EVENTS, g_print ("WM_IME_COMPOSITION: %#x  %#x\n",
 | 
			
		||||
				 xevent->hwnd, xevent->lParam));
 | 
			
		||||
      if (xevent->lParam & GCS_RESULTSTR)
 | 
			
		||||
	goto wm_char;
 | 
			
		||||
      break;
 | 
			
		||||
 | 
			
		||||
    case WM_IME_CHAR:
 | 
			
		||||
      GDK_NOTE (EVENTS,
 | 
			
		||||
		g_print ("WM_IME_CHAR: %#x  bytes: %#.04x\n",
 | 
			
		||||
@ -3918,22 +3987,18 @@ gdk_event_translate (GdkEvent *event,
 | 
			
		||||
	      gdk_event_queue_append (event2);
 | 
			
		||||
	      GDK_NOTE (EVENTS, print_event (event2));
 | 
			
		||||
	    }
 | 
			
		||||
	  /* Return the release event.  */
 | 
			
		||||
	  event->key.type = GDK_KEY_RELEASE;
 | 
			
		||||
	  event->key.keyval = xevent->wParam;
 | 
			
		||||
	  event->key.time = xevent->time;
 | 
			
		||||
	  build_key_event_state (event);
 | 
			
		||||
	  event->key.string = NULL;
 | 
			
		||||
	  event->key.length = 0;
 | 
			
		||||
	  /* Return the key release event.  */
 | 
			
		||||
	  build_keyrelease_event (WINDOW_PRIVATE(window), event, xevent);
 | 
			
		||||
	}
 | 
			
		||||
      else if (return_val
 | 
			
		||||
	       && (WINDOW_PRIVATE(window)->event_mask & GDK_KEY_PRESS_MASK))
 | 
			
		||||
	{
 | 
			
		||||
	  /* Return just the GDK_KEY_PRESS event. */
 | 
			
		||||
	  /* Return just the key press event. */
 | 
			
		||||
	  build_keypress_event (WINDOW_PRIVATE(window), event, xevent);
 | 
			
		||||
	}
 | 
			
		||||
      else
 | 
			
		||||
	return_val = FALSE;
 | 
			
		||||
 | 
			
		||||
#if 0 /* Don't reset is_AltGr_key here. Othewise we can't type several
 | 
			
		||||
       * AltGr-accessed chars while keeping the AltGr pressed down
 | 
			
		||||
       * all the time.
 | 
			
		||||
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -90,9 +90,12 @@ gdk_gc_new_with_values (GdkWindow	*window,
 | 
			
		||||
  if ((values_mask & GDK_GC_FONT) && (values->font->type == GDK_FONT_FONT
 | 
			
		||||
				      || values->font->type == GDK_FONT_FONTSET))
 | 
			
		||||
    {
 | 
			
		||||
      private->font = (HFONT) ((GdkFontPrivate*) values->font)->xfont;
 | 
			
		||||
      private->font = values->font;
 | 
			
		||||
      gdk_font_ref (private->font);
 | 
			
		||||
      GDK_NOTE (MISC, g_print (" font=%#x", private->font));
 | 
			
		||||
    }
 | 
			
		||||
  else
 | 
			
		||||
    private->font = NULL;
 | 
			
		||||
 | 
			
		||||
  if (values_mask & GDK_GC_FUNCTION)
 | 
			
		||||
    {
 | 
			
		||||
@ -294,28 +297,17 @@ gdk_gc_unref (GdkGC *gc)
 | 
			
		||||
  else
 | 
			
		||||
    {
 | 
			
		||||
      if (private->values_mask & GDK_GC_FONT)
 | 
			
		||||
	{
 | 
			
		||||
#if 0
 | 
			
		||||
	  if (!DeleteObject (private->font))
 | 
			
		||||
	    g_warning ("gdk_gc_unref: DeleteObject #3 failed");
 | 
			
		||||
#endif
 | 
			
		||||
	}
 | 
			
		||||
	gdk_font_unref (private->font);
 | 
			
		||||
 | 
			
		||||
      if (private->values_mask & GDK_GC_TILE)
 | 
			
		||||
	{
 | 
			
		||||
	gdk_pixmap_unref (private->tile);
 | 
			
		||||
	}
 | 
			
		||||
      
 | 
			
		||||
      if (private->values_mask & GDK_GC_STIPPLE)
 | 
			
		||||
	{
 | 
			
		||||
	gdk_pixmap_unref (private->stipple);
 | 
			
		||||
	}
 | 
			
		||||
      
 | 
			
		||||
      if (private->values_mask & GDK_GC_CLIP_MASK)
 | 
			
		||||
	{
 | 
			
		||||
	DeleteObject (private->clip_region);
 | 
			
		||||
	}
 | 
			
		||||
      memset (gc, 0, sizeof (GdkGCPrivate));
 | 
			
		||||
 | 
			
		||||
      g_free (gc);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -333,7 +325,7 @@ gdk_gc_get_values (GdkGC       *gc,
 | 
			
		||||
 | 
			
		||||
  values->foreground = private->foreground;
 | 
			
		||||
  values->background = private->background;
 | 
			
		||||
  values->font = gdk_font_lookup (private->font);
 | 
			
		||||
  values->font = private->font;
 | 
			
		||||
 | 
			
		||||
  switch (private->rop2)
 | 
			
		||||
    {
 | 
			
		||||
@ -477,6 +469,7 @@ gdk_gc_set_font (GdkGC	 *gc,
 | 
			
		||||
{
 | 
			
		||||
  GdkGCPrivate *gc_private;
 | 
			
		||||
  GdkFontPrivate *font_private;
 | 
			
		||||
  gchar *xlfd;
 | 
			
		||||
 | 
			
		||||
  g_return_if_fail (gc != NULL);
 | 
			
		||||
  g_return_if_fail (font != NULL);
 | 
			
		||||
@ -485,12 +478,16 @@ gdk_gc_set_font (GdkGC	 *gc,
 | 
			
		||||
      || font->type == GDK_FONT_FONTSET)
 | 
			
		||||
    {
 | 
			
		||||
      gc_private = (GdkGCPrivate*) gc;
 | 
			
		||||
      font_private = (GdkFontPrivate*) font;
 | 
			
		||||
      
 | 
			
		||||
      GDK_NOTE (MISC, g_print ("gdk_gc_set_font: (%d) %#x\n",
 | 
			
		||||
			       gc_private, font_private->xfont));
 | 
			
		||||
      GDK_NOTE (MISC, (xlfd = gdk_font_xlfd_create (font),
 | 
			
		||||
		       g_print ("gdk_gc_set_font: (%d) %s\n",
 | 
			
		||||
				gc_private, xlfd),
 | 
			
		||||
		       gdk_font_xlfd_free (xlfd)));
 | 
			
		||||
 | 
			
		||||
      gc_private->font = font_private->xfont;
 | 
			
		||||
      if (gc_private->font != NULL)
 | 
			
		||||
	gdk_font_unref (gc_private->font);
 | 
			
		||||
      gc_private->font = font;
 | 
			
		||||
      gdk_font_ref (gc_private->font);
 | 
			
		||||
      gc_private->values_mask |= GDK_GC_FONT;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -1067,10 +1064,6 @@ gdk_gc_predraw (GdkDrawablePrivate *drawable_private,
 | 
			
		||||
  if (SetTextAlign (gc_private->xgc, TA_BASELINE) == GDI_ERROR)
 | 
			
		||||
    g_warning ("gdk_gc_predraw: SetTextAlign failed");
 | 
			
		||||
  
 | 
			
		||||
  if (gc_private->values_mask & GDK_GC_FONT)
 | 
			
		||||
    if (SelectObject (gc_private->xgc, gc_private->font) == NULL)
 | 
			
		||||
      g_warning ("gdk_gc_predraw: SelectObject #4 failed");
 | 
			
		||||
  
 | 
			
		||||
  if (gc_private->values_mask & GDK_GC_FUNCTION)
 | 
			
		||||
    if (SetROP2 (gc_private->xgc, gc_private->rop2) == 0)
 | 
			
		||||
      g_warning ("gdk_gc_predraw: SetROP2 failed");
 | 
			
		||||
 | 
			
		||||
@ -90,9 +90,12 @@ gdk_gc_new_with_values (GdkWindow	*window,
 | 
			
		||||
  if ((values_mask & GDK_GC_FONT) && (values->font->type == GDK_FONT_FONT
 | 
			
		||||
				      || values->font->type == GDK_FONT_FONTSET))
 | 
			
		||||
    {
 | 
			
		||||
      private->font = (HFONT) ((GdkFontPrivate*) values->font)->xfont;
 | 
			
		||||
      private->font = values->font;
 | 
			
		||||
      gdk_font_ref (private->font);
 | 
			
		||||
      GDK_NOTE (MISC, g_print (" font=%#x", private->font));
 | 
			
		||||
    }
 | 
			
		||||
  else
 | 
			
		||||
    private->font = NULL;
 | 
			
		||||
 | 
			
		||||
  if (values_mask & GDK_GC_FUNCTION)
 | 
			
		||||
    {
 | 
			
		||||
@ -294,28 +297,17 @@ gdk_gc_unref (GdkGC *gc)
 | 
			
		||||
  else
 | 
			
		||||
    {
 | 
			
		||||
      if (private->values_mask & GDK_GC_FONT)
 | 
			
		||||
	{
 | 
			
		||||
#if 0
 | 
			
		||||
	  if (!DeleteObject (private->font))
 | 
			
		||||
	    g_warning ("gdk_gc_unref: DeleteObject #3 failed");
 | 
			
		||||
#endif
 | 
			
		||||
	}
 | 
			
		||||
	gdk_font_unref (private->font);
 | 
			
		||||
 | 
			
		||||
      if (private->values_mask & GDK_GC_TILE)
 | 
			
		||||
	{
 | 
			
		||||
	gdk_pixmap_unref (private->tile);
 | 
			
		||||
	}
 | 
			
		||||
      
 | 
			
		||||
      if (private->values_mask & GDK_GC_STIPPLE)
 | 
			
		||||
	{
 | 
			
		||||
	gdk_pixmap_unref (private->stipple);
 | 
			
		||||
	}
 | 
			
		||||
      
 | 
			
		||||
      if (private->values_mask & GDK_GC_CLIP_MASK)
 | 
			
		||||
	{
 | 
			
		||||
	DeleteObject (private->clip_region);
 | 
			
		||||
	}
 | 
			
		||||
      memset (gc, 0, sizeof (GdkGCPrivate));
 | 
			
		||||
 | 
			
		||||
      g_free (gc);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -333,7 +325,7 @@ gdk_gc_get_values (GdkGC       *gc,
 | 
			
		||||
 | 
			
		||||
  values->foreground = private->foreground;
 | 
			
		||||
  values->background = private->background;
 | 
			
		||||
  values->font = gdk_font_lookup (private->font);
 | 
			
		||||
  values->font = private->font;
 | 
			
		||||
 | 
			
		||||
  switch (private->rop2)
 | 
			
		||||
    {
 | 
			
		||||
@ -477,6 +469,7 @@ gdk_gc_set_font (GdkGC	 *gc,
 | 
			
		||||
{
 | 
			
		||||
  GdkGCPrivate *gc_private;
 | 
			
		||||
  GdkFontPrivate *font_private;
 | 
			
		||||
  gchar *xlfd;
 | 
			
		||||
 | 
			
		||||
  g_return_if_fail (gc != NULL);
 | 
			
		||||
  g_return_if_fail (font != NULL);
 | 
			
		||||
@ -485,12 +478,16 @@ gdk_gc_set_font (GdkGC	 *gc,
 | 
			
		||||
      || font->type == GDK_FONT_FONTSET)
 | 
			
		||||
    {
 | 
			
		||||
      gc_private = (GdkGCPrivate*) gc;
 | 
			
		||||
      font_private = (GdkFontPrivate*) font;
 | 
			
		||||
      
 | 
			
		||||
      GDK_NOTE (MISC, g_print ("gdk_gc_set_font: (%d) %#x\n",
 | 
			
		||||
			       gc_private, font_private->xfont));
 | 
			
		||||
      GDK_NOTE (MISC, (xlfd = gdk_font_xlfd_create (font),
 | 
			
		||||
		       g_print ("gdk_gc_set_font: (%d) %s\n",
 | 
			
		||||
				gc_private, xlfd),
 | 
			
		||||
		       gdk_font_xlfd_free (xlfd)));
 | 
			
		||||
 | 
			
		||||
      gc_private->font = font_private->xfont;
 | 
			
		||||
      if (gc_private->font != NULL)
 | 
			
		||||
	gdk_font_unref (gc_private->font);
 | 
			
		||||
      gc_private->font = font;
 | 
			
		||||
      gdk_font_ref (gc_private->font);
 | 
			
		||||
      gc_private->values_mask |= GDK_GC_FONT;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -1067,10 +1064,6 @@ gdk_gc_predraw (GdkDrawablePrivate *drawable_private,
 | 
			
		||||
  if (SetTextAlign (gc_private->xgc, TA_BASELINE) == GDI_ERROR)
 | 
			
		||||
    g_warning ("gdk_gc_predraw: SetTextAlign failed");
 | 
			
		||||
  
 | 
			
		||||
  if (gc_private->values_mask & GDK_GC_FONT)
 | 
			
		||||
    if (SelectObject (gc_private->xgc, gc_private->font) == NULL)
 | 
			
		||||
      g_warning ("gdk_gc_predraw: SelectObject #4 failed");
 | 
			
		||||
  
 | 
			
		||||
  if (gc_private->values_mask & GDK_GC_FUNCTION)
 | 
			
		||||
    if (SetROP2 (gc_private->xgc, gc_private->rop2) == 0)
 | 
			
		||||
      g_warning ("gdk_gc_predraw: SetROP2 failed");
 | 
			
		||||
 | 
			
		||||
@ -46,6 +46,6 @@ gint              gdk_error_code;
 | 
			
		||||
gint              gdk_error_warnings = TRUE;
 | 
			
		||||
gint              gdk_null_window_warnings = TRUE;
 | 
			
		||||
 | 
			
		||||
GMutex *gdk_threads_mutex = NULL;          /* Global GDK lock */
 | 
			
		||||
GMutex           *gdk_threads_mutex = NULL;
 | 
			
		||||
 | 
			
		||||
PFN_TrackMouseEvent p_TrackMouseEvent = NULL;
 | 
			
		||||
DWORD		  windows_version = 0;
 | 
			
		||||
 | 
			
		||||
@ -46,6 +46,6 @@ gint              gdk_error_code;
 | 
			
		||||
gint              gdk_error_warnings = TRUE;
 | 
			
		||||
gint              gdk_null_window_warnings = TRUE;
 | 
			
		||||
 | 
			
		||||
GMutex *gdk_threads_mutex = NULL;          /* Global GDK lock */
 | 
			
		||||
GMutex           *gdk_threads_mutex = NULL;
 | 
			
		||||
 | 
			
		||||
PFN_TrackMouseEvent p_TrackMouseEvent = NULL;
 | 
			
		||||
DWORD		  windows_version = 0;
 | 
			
		||||
 | 
			
		||||
@ -337,13 +337,15 @@ gdk_nmbstowchar_ts (wchar_t     *dest,
 | 
			
		||||
		    gint         src_len,
 | 
			
		||||
		    gint         dest_max)
 | 
			
		||||
{
 | 
			
		||||
  wchar_t *wcp;
 | 
			
		||||
  guchar *cp, *end;
 | 
			
		||||
  gint n;
 | 
			
		||||
  
 | 
			
		||||
  wcp = dest;
 | 
			
		||||
  cp = (guchar *) src;
 | 
			
		||||
  end = cp + src_len;
 | 
			
		||||
  n = 0;
 | 
			
		||||
  while (cp != end && dest != dest + dest_max)
 | 
			
		||||
  while (cp != end && wcp != dest + dest_max)
 | 
			
		||||
    {
 | 
			
		||||
      gint i, mask = 0, len;
 | 
			
		||||
      guchar c = *cp;
 | 
			
		||||
@ -369,19 +371,19 @@ gdk_nmbstowchar_ts (wchar_t     *dest,
 | 
			
		||||
      if (cp + len > end)
 | 
			
		||||
	return -1;
 | 
			
		||||
 | 
			
		||||
      *dest = (cp[0] & mask);
 | 
			
		||||
      *wcp = (cp[0] & mask);
 | 
			
		||||
      for (i = 1; i < len; i++)
 | 
			
		||||
	{
 | 
			
		||||
	  if ((cp[i] & 0xc0) != 0x80)
 | 
			
		||||
	    return -1;
 | 
			
		||||
	  *dest <<= 6;
 | 
			
		||||
	  *dest |= (cp[i] & 0x3f);
 | 
			
		||||
	  *wcp <<= 6;
 | 
			
		||||
	  *wcp |= (cp[i] & 0x3f);
 | 
			
		||||
	}
 | 
			
		||||
      if (*dest == 0xFFFF)
 | 
			
		||||
      if (*wcp == 0xFFFF)
 | 
			
		||||
	return -1;
 | 
			
		||||
 | 
			
		||||
      cp += len;
 | 
			
		||||
      dest++;
 | 
			
		||||
      wcp++;
 | 
			
		||||
      n++;
 | 
			
		||||
    }
 | 
			
		||||
  if (cp != end)
 | 
			
		||||
 | 
			
		||||
@ -337,13 +337,15 @@ gdk_nmbstowchar_ts (wchar_t     *dest,
 | 
			
		||||
		    gint         src_len,
 | 
			
		||||
		    gint         dest_max)
 | 
			
		||||
{
 | 
			
		||||
  wchar_t *wcp;
 | 
			
		||||
  guchar *cp, *end;
 | 
			
		||||
  gint n;
 | 
			
		||||
  
 | 
			
		||||
  wcp = dest;
 | 
			
		||||
  cp = (guchar *) src;
 | 
			
		||||
  end = cp + src_len;
 | 
			
		||||
  n = 0;
 | 
			
		||||
  while (cp != end && dest != dest + dest_max)
 | 
			
		||||
  while (cp != end && wcp != dest + dest_max)
 | 
			
		||||
    {
 | 
			
		||||
      gint i, mask = 0, len;
 | 
			
		||||
      guchar c = *cp;
 | 
			
		||||
@ -369,19 +371,19 @@ gdk_nmbstowchar_ts (wchar_t     *dest,
 | 
			
		||||
      if (cp + len > end)
 | 
			
		||||
	return -1;
 | 
			
		||||
 | 
			
		||||
      *dest = (cp[0] & mask);
 | 
			
		||||
      *wcp = (cp[0] & mask);
 | 
			
		||||
      for (i = 1; i < len; i++)
 | 
			
		||||
	{
 | 
			
		||||
	  if ((cp[i] & 0xc0) != 0x80)
 | 
			
		||||
	    return -1;
 | 
			
		||||
	  *dest <<= 6;
 | 
			
		||||
	  *dest |= (cp[i] & 0x3f);
 | 
			
		||||
	  *wcp <<= 6;
 | 
			
		||||
	  *wcp |= (cp[i] & 0x3f);
 | 
			
		||||
	}
 | 
			
		||||
      if (*dest == 0xFFFF)
 | 
			
		||||
      if (*wcp == 0xFFFF)
 | 
			
		||||
	return -1;
 | 
			
		||||
 | 
			
		||||
      cp += len;
 | 
			
		||||
      dest++;
 | 
			
		||||
      wcp++;
 | 
			
		||||
      n++;
 | 
			
		||||
    }
 | 
			
		||||
  if (cp != end)
 | 
			
		||||
 | 
			
		||||
@ -235,6 +235,7 @@ gdk_init_check (int    *argc,
 | 
			
		||||
  gdk_ProgInstance = GetModuleHandle (NULL);
 | 
			
		||||
  gdk_DC = CreateDC ("DISPLAY", NULL, NULL, NULL);
 | 
			
		||||
  gdk_root_window = GetDesktopWindow ();
 | 
			
		||||
  windows_version = GetVersion ();
 | 
			
		||||
 | 
			
		||||
  CoInitialize (NULL);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -78,10 +78,6 @@
 | 
			
		||||
#define gdk_window_lookup(xid)	   ((GdkWindow*) gdk_xid_table_lookup (xid))
 | 
			
		||||
#define gdk_pixmap_lookup(xid)	   ((GdkPixmap*) gdk_xid_table_lookup (xid))
 | 
			
		||||
 | 
			
		||||
/* HFONTs clash with HWNDs, so add dithering to HFONTs... (hack) */
 | 
			
		||||
#define HFONT_DITHER 43
 | 
			
		||||
#define gdk_font_lookup(xid)	   ((GdkFont*) gdk_xid_table_lookup ((HANDLE) ((guint) xid + HFONT_DITHER)))
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif /* __cplusplus */
 | 
			
		||||
@ -249,7 +245,7 @@ struct _GdkGCPrivate
 | 
			
		||||
  GdkGCValuesMask values_mask;
 | 
			
		||||
  GdkColor foreground;
 | 
			
		||||
  GdkColor background;
 | 
			
		||||
  HFONT font;
 | 
			
		||||
  GdkFont *font;
 | 
			
		||||
  gint rop2;
 | 
			
		||||
  GdkFill fill_style;
 | 
			
		||||
  GdkPixmap *tile;
 | 
			
		||||
@ -299,20 +295,22 @@ struct _GdkVisualPrivate
 | 
			
		||||
  Visual *xvisual;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct _GdkFontPrivate
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
  GdkFont font;
 | 
			
		||||
  /* For now, both GDK_FONT_FONT and GDK_FONT_FONTSET fonts
 | 
			
		||||
   * just have one Windows font loaded. This will change.
 | 
			
		||||
   */
 | 
			
		||||
  HFONT xfont;
 | 
			
		||||
  guint ref_count;
 | 
			
		||||
 | 
			
		||||
  GSList *names;
 | 
			
		||||
  DWORD charset;
 | 
			
		||||
  UINT codepage;
 | 
			
		||||
  CPINFO cpinfo;
 | 
			
		||||
  FONTSIGNATURE fs;
 | 
			
		||||
} GdkWin32SingleFont;
 | 
			
		||||
 | 
			
		||||
struct _GdkFontPrivate
 | 
			
		||||
{
 | 
			
		||||
  GdkFont font;
 | 
			
		||||
  guint ref_count;
 | 
			
		||||
 | 
			
		||||
  GSList *fonts;
 | 
			
		||||
  GSList *names;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct _GdkCursorPrivate
 | 
			
		||||
@ -392,6 +390,15 @@ gint	   gdk_nmbstowchar_ts (wchar_t     *dest,
 | 
			
		||||
			       gint         src_len,
 | 
			
		||||
			       gint         dest_max);
 | 
			
		||||
 | 
			
		||||
void gdk_wchar_text_handle (GdkFont       *font,
 | 
			
		||||
			    const wchar_t *wcstr,
 | 
			
		||||
			    int            wclen,
 | 
			
		||||
			    void         (*handler)(GdkWin32SingleFont *,
 | 
			
		||||
						    const wchar_t *,
 | 
			
		||||
						    int,
 | 
			
		||||
						    void *),
 | 
			
		||||
			    void          *arg);
 | 
			
		||||
 | 
			
		||||
/* Please see gdkwindow.c for comments on how to use */ 
 | 
			
		||||
HWND gdk_window_xid_at(HWND base, gint bx, gint by, gint x, gint y, GList *excludes, gboolean excl_child);
 | 
			
		||||
HWND gdk_window_xid_at_coords(gint x, gint y, GList *excludes, gboolean excl_child);
 | 
			
		||||
@ -420,11 +427,10 @@ extern GdkAtom		 gdk_clipboard_atom;
 | 
			
		||||
extern GdkAtom		 gdk_win32_dropfiles_atom;
 | 
			
		||||
extern GdkAtom		 gdk_ole2_dnd_atom;
 | 
			
		||||
 | 
			
		||||
typedef BOOL (WINAPI *PFN_TrackMouseEvent) (LPTRACKMOUSEEVENT);
 | 
			
		||||
extern PFN_TrackMouseEvent p_TrackMouseEvent;
 | 
			
		||||
 | 
			
		||||
extern LRESULT CALLBACK gdk_WindowProc (HWND, UINT, WPARAM, LPARAM);
 | 
			
		||||
 | 
			
		||||
extern DWORD		 windows_version;
 | 
			
		||||
 | 
			
		||||
/* Debugging support */
 | 
			
		||||
 | 
			
		||||
#ifdef G_ENABLE_DEBUG
 | 
			
		||||
 | 
			
		||||
@ -78,10 +78,6 @@
 | 
			
		||||
#define gdk_window_lookup(xid)	   ((GdkWindow*) gdk_xid_table_lookup (xid))
 | 
			
		||||
#define gdk_pixmap_lookup(xid)	   ((GdkPixmap*) gdk_xid_table_lookup (xid))
 | 
			
		||||
 | 
			
		||||
/* HFONTs clash with HWNDs, so add dithering to HFONTs... (hack) */
 | 
			
		||||
#define HFONT_DITHER 43
 | 
			
		||||
#define gdk_font_lookup(xid)	   ((GdkFont*) gdk_xid_table_lookup ((HANDLE) ((guint) xid + HFONT_DITHER)))
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif /* __cplusplus */
 | 
			
		||||
@ -249,7 +245,7 @@ struct _GdkGCPrivate
 | 
			
		||||
  GdkGCValuesMask values_mask;
 | 
			
		||||
  GdkColor foreground;
 | 
			
		||||
  GdkColor background;
 | 
			
		||||
  HFONT font;
 | 
			
		||||
  GdkFont *font;
 | 
			
		||||
  gint rop2;
 | 
			
		||||
  GdkFill fill_style;
 | 
			
		||||
  GdkPixmap *tile;
 | 
			
		||||
@ -299,20 +295,22 @@ struct _GdkVisualPrivate
 | 
			
		||||
  Visual *xvisual;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct _GdkFontPrivate
 | 
			
		||||
typedef struct
 | 
			
		||||
{
 | 
			
		||||
  GdkFont font;
 | 
			
		||||
  /* For now, both GDK_FONT_FONT and GDK_FONT_FONTSET fonts
 | 
			
		||||
   * just have one Windows font loaded. This will change.
 | 
			
		||||
   */
 | 
			
		||||
  HFONT xfont;
 | 
			
		||||
  guint ref_count;
 | 
			
		||||
 | 
			
		||||
  GSList *names;
 | 
			
		||||
  DWORD charset;
 | 
			
		||||
  UINT codepage;
 | 
			
		||||
  CPINFO cpinfo;
 | 
			
		||||
  FONTSIGNATURE fs;
 | 
			
		||||
} GdkWin32SingleFont;
 | 
			
		||||
 | 
			
		||||
struct _GdkFontPrivate
 | 
			
		||||
{
 | 
			
		||||
  GdkFont font;
 | 
			
		||||
  guint ref_count;
 | 
			
		||||
 | 
			
		||||
  GSList *fonts;
 | 
			
		||||
  GSList *names;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct _GdkCursorPrivate
 | 
			
		||||
@ -392,6 +390,15 @@ gint	   gdk_nmbstowchar_ts (wchar_t     *dest,
 | 
			
		||||
			       gint         src_len,
 | 
			
		||||
			       gint         dest_max);
 | 
			
		||||
 | 
			
		||||
void gdk_wchar_text_handle (GdkFont       *font,
 | 
			
		||||
			    const wchar_t *wcstr,
 | 
			
		||||
			    int            wclen,
 | 
			
		||||
			    void         (*handler)(GdkWin32SingleFont *,
 | 
			
		||||
						    const wchar_t *,
 | 
			
		||||
						    int,
 | 
			
		||||
						    void *),
 | 
			
		||||
			    void          *arg);
 | 
			
		||||
 | 
			
		||||
/* Please see gdkwindow.c for comments on how to use */ 
 | 
			
		||||
HWND gdk_window_xid_at(HWND base, gint bx, gint by, gint x, gint y, GList *excludes, gboolean excl_child);
 | 
			
		||||
HWND gdk_window_xid_at_coords(gint x, gint y, GList *excludes, gboolean excl_child);
 | 
			
		||||
@ -420,11 +427,10 @@ extern GdkAtom		 gdk_clipboard_atom;
 | 
			
		||||
extern GdkAtom		 gdk_win32_dropfiles_atom;
 | 
			
		||||
extern GdkAtom		 gdk_ole2_dnd_atom;
 | 
			
		||||
 | 
			
		||||
typedef BOOL (WINAPI *PFN_TrackMouseEvent) (LPTRACKMOUSEEVENT);
 | 
			
		||||
extern PFN_TrackMouseEvent p_TrackMouseEvent;
 | 
			
		||||
 | 
			
		||||
extern LRESULT CALLBACK gdk_WindowProc (HWND, UINT, WPARAM, LPARAM);
 | 
			
		||||
 | 
			
		||||
extern DWORD		 windows_version;
 | 
			
		||||
 | 
			
		||||
/* Debugging support */
 | 
			
		||||
 | 
			
		||||
#ifdef G_ENABLE_DEBUG
 | 
			
		||||
 | 
			
		||||
@ -48,7 +48,6 @@
 | 
			
		||||
#define GDK_COLORMAP_XCOLORMAP(cmap)  (((GdkColormapPrivate*) cmap)->xcolormap)
 | 
			
		||||
#define GDK_VISUAL_XVISUAL(vis)       (((GdkVisualPrivate*) vis)->xvisual)
 | 
			
		||||
#define GDK_FONT_XDISPLAY(font)       NULL
 | 
			
		||||
#define GDK_FONT_XFONT(font)          (((GdkFontPrivate*) font)->xfont)
 | 
			
		||||
 | 
			
		||||
GdkVisual*   gdkx_visual_get   (VisualID xvisualid);
 | 
			
		||||
/* XXX: Do not use this function until it is fixed. An X Colormap
 | 
			
		||||
 | 
			
		||||
@ -48,7 +48,6 @@
 | 
			
		||||
#define GDK_COLORMAP_XCOLORMAP(cmap)  (((GdkColormapPrivate*) cmap)->xcolormap)
 | 
			
		||||
#define GDK_VISUAL_XVISUAL(vis)       (((GdkVisualPrivate*) vis)->xvisual)
 | 
			
		||||
#define GDK_FONT_XDISPLAY(font)       NULL
 | 
			
		||||
#define GDK_FONT_XFONT(font)          (((GdkFontPrivate*) font)->xfont)
 | 
			
		||||
 | 
			
		||||
GdkVisual*   gdkx_visual_get   (VisualID xvisualid);
 | 
			
		||||
/* XXX: Do not use this function until it is fixed. An X Colormap
 | 
			
		||||
 | 
			
		||||
@ -18,8 +18,8 @@ LOCALEDIR = /WINDOWS/$(PACKAGE)/locale
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
# uk (Ukrainian) is skipped, as native2ascii doesn't know the KOI8_U 
 | 
			
		||||
# encoding, sigh
 | 
			
		||||
LANGUAGES= $(basename $(basename .Big5,$(wildcard $(addsuffix .po,ca cs da de el es et eu fi fr ga gl hr hu it ja ko nl no pl pt pt_BR ru sk sl sv wa zh_TW.Big5))))
 | 
			
		||||
# encoding, sigh. Or is it suffuciently similar to KOI8_R?
 | 
			
		||||
LANGUAGES= $(basename $(basename $(wildcard $(addsuffix .po,ca cs da de el es et eu fi fr ga gl hr hu it ja ko nl no pl pt pt_BR ru sk sl sv wa zh_TW.Big5))))
 | 
			
		||||
 | 
			
		||||
################################################################
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user