
gtk-a-higuti-980912-0.patch

This patch is against CVS tree, around Sep 9.

It adds support for CJK (Chinese, Japanese, and Korean) locales in the
GtkText widget, using wide characters. It also changes the internal
representation of text in GtkEntry, and fixes some problem with XIM
support codes.

Furthermore, I found a minor bug in gtk/gtktext.c:delete_text_property(),
that text->text_properties_end is not set correctly.

Changes:

	* configure.in
		New option --enable-default-fontset, which is useful for
		CJK users.
	* gdk/gdk.c
		(gdk_set_locale): Use LC_CTYPE instead of LC_ALL.
		(gdk_event_get): Changed the logic of filtering XIM events.
		(gdk_im_begin): Fixed a bug about synchronizing XIC focus.
		(gdk_im_end): Likewise.
		(gdk_mbstowcs): New function. Nearly equals to mbstowcs, but
			implemented by a combination of Xlib functions, so
			it works with X_LOCALE.
		(gdk_wcstombs): New function.
		(g_mbtowc): Removed. No longer needed.
	* gdk/gdk.h
		(gdk_text_width_wc): New prototype.
		(gdk_char_width_wc): New prototype.
		(gdk_draw_text_wc): New prototype.
		(gdk_wcstombs): New prototype.
		(gdk_mbstowcs): New prototype.
	* gdk/gdkdraw.c
		(gdk_draw_text_wc): New function.
	* gdk/gdkfont.c
		(gdk_text_width_wc): New function.
		(gdk_char_width_wc): New function.
	* gdk/gdki18n.h
		(mblen, mbtowc, wctomb, mbstowcs, wcstombs,
		 wcslen, wcscpy, wcsncpy):
			Removed. No longer needed.
		(iswalnum): Removed.
		(gdk_iswalnum): New macro.
		(gdk_iswspace): New macro.
	* gdk/gdktype.h
		(GdkWchar): New type.
	* gtk/gtkeditable.c
		(gtk_editable_finalize): Removed.
	* gtk/gtkentry.h, gtk/gtkentry.c
		There are many changes according to the change of the
		internal representation of text, from multibyte string
		to wide characters. The following is the remainder of these
		changes.
		(gtk_entry_enter_leave): New function. Some XIMs require to
			be set PreeditPosition when we get a Enter/Leave
			event.
		(gtk_entry_find_char): Removed. No longer needed.
		(gtk_entry_realize): Added a mask to handle focus events on
			text_area, because some XIMs require this. Added
			some codes to make XIC realized.
		(gtk_entry_unrealize): Added a call to gdk_ic_destroy().
	* gtk/gtkprivate.h, gtk/gtkmain.c
		Removed gtk_use_mb and related codes.
	* gtk/gtkspinbutton.c
		Some changes according to the change of type of entry->text.
	* gtk/gtkstyle.c
		Added some codes related to --enable-default-fontset.
	* gtk/gtktext.h, gtk/gtktext.c
		Changed the internal representation of text. We use GdkWchar
		if a fontset is supplied. If not, we use guchar to save
		memory. Furthermore, there are some changes in codes related
		to XIM.
	* gtk/gtkwidget.c
		(gtk_widget_real_unrealize): Changed the order of
		unrealization. If we unrealize the base widget first, some
		XIMs hang, because the client window is deleted before XIC.
	* gtk/testgtk.c
		(create_text): Changed codes inserting text from file,
		to insert multibyte characters correctly.


