summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMamoru Komachi <usata@gentoo.org>2005-03-30 17:18:05 +0000
committerMamoru Komachi <usata@gentoo.org>2005-03-30 17:18:05 +0000
commitf7e5c3f5009e5516e889235da5d350d8544c29a2 (patch)
tree44ef80688047560d346dadf0027a9430d96b22dc /app-i18n/iiimxcf
parentFINALLY I can commit this thing. Closes bug #65149. Man that took awhile :| (diff)
downloadhistorical-f7e5c3f5009e5516e889235da5d350d8544c29a2.tar.gz
historical-f7e5c3f5009e5516e889235da5d350d8544c29a2.tar.bz2
historical-f7e5c3f5009e5516e889235da5d350d8544c29a2.zip
Version bumped.
Package-Manager: portage-2.0.51.19
Diffstat (limited to 'app-i18n/iiimxcf')
-rw-r--r--app-i18n/iiimxcf/ChangeLog8
-rw-r--r--app-i18n/iiimxcf/Manifest2
-rw-r--r--app-i18n/iiimxcf/files/digest-iiimxcf-12.1_p20021
-rw-r--r--app-i18n/iiimxcf/files/im-sdk-htt_xbe-crash.patch727
-rw-r--r--app-i18n/iiimxcf/iiimxcf-12.1_p2002.ebuild45
5 files changed, 782 insertions, 1 deletions
diff --git a/app-i18n/iiimxcf/ChangeLog b/app-i18n/iiimxcf/ChangeLog
index 0323b66254a1..66966303b8b1 100644
--- a/app-i18n/iiimxcf/ChangeLog
+++ b/app-i18n/iiimxcf/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for app-i18n/iiimxcf
# Copyright 2000-2005 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/app-i18n/iiimxcf/ChangeLog,v 1.5 2005/01/01 14:29:37 eradicator Exp $
+# $Header: /var/cvsroot/gentoo-x86/app-i18n/iiimxcf/ChangeLog,v 1.6 2005/03/30 17:11:24 usata Exp $
+
+*iiimxcf-12.1_p2002 (30 Mar 2005)
+
+ 30 Mar 2005; Mamoru KOMACHI <usata@gentoo.org>
+ +files/im-sdk-htt_xbe-crash.patch, +iiimxcf-12.1_p2002.ebuild:
+ Version bumped.
*iiimxcf-12.0.1_pre1891 (14 Sep 2004)
*iiimxcf-11.4_p1467 (14 Sep 2003)
diff --git a/app-i18n/iiimxcf/Manifest b/app-i18n/iiimxcf/Manifest
index 3b1c0a1fbcc2..af21ff6eedb6 100644
--- a/app-i18n/iiimxcf/Manifest
+++ b/app-i18n/iiimxcf/Manifest
@@ -2,5 +2,7 @@ MD5 00b6356cbdbcca16d7e14837c5a29078 ChangeLog 709
MD5 e92a48548554c80cf90e18df17ff6a82 metadata.xml 156
MD5 dc212c8a1b2551bb19653edc08483972 iiimxcf-11.4_p1467.ebuild 925
MD5 ed94c26ebaad592a6a30d0fbe1e8ddd2 iiimxcf-12.0.1_pre1891.ebuild 930
+MD5 f3486b60d57a471ba4a57b66ae6ffa8f iiimxcf-12.1_p2002.ebuild 1003
+MD5 be37bb244b3081121d1781e5118f2443 files/digest-iiimxcf-12.1_p2002 79
MD5 de5dcfe76eb7086d4b90d73615622cd3 files/digest-iiimxcf-11.4_p1467 74
MD5 e97031d3645096ad0e4fb680a228b9c0 files/digest-iiimxcf-12.0.1_pre1891 77
diff --git a/app-i18n/iiimxcf/files/digest-iiimxcf-12.1_p2002 b/app-i18n/iiimxcf/files/digest-iiimxcf-12.1_p2002
new file mode 100644
index 000000000000..88acc89b1a5c
--- /dev/null
+++ b/app-i18n/iiimxcf/files/digest-iiimxcf-12.1_p2002
@@ -0,0 +1 @@
+MD5 51f3f10b11f8d4a206e2b190ec36a32a im-sdk-src-r12_1-svn2002.tar.bz2 18141292
diff --git a/app-i18n/iiimxcf/files/im-sdk-htt_xbe-crash.patch b/app-i18n/iiimxcf/files/im-sdk-htt_xbe-crash.patch
new file mode 100644
index 000000000000..5cda7d859846
--- /dev/null
+++ b/app-i18n/iiimxcf/files/im-sdk-htt_xbe-crash.patch
@@ -0,0 +1,727 @@
+diff -uNr im-sdk.orig/iiimxcf/htt_xbe/lib/IMdkit/r6im/XInputContext.cpp.orig im-sdk/iiimxcf/htt_xbe/lib/IMdkit/r6im/XInputContext.cpp
+--- im-sdk.orig/iiimxcf/htt_xbe/lib/IMdkit/r6im/XInputContext.cpp.orig 2004-10-19 11:36:49.052501536 +1000
++++ im-sdk/iiimxcf/htt_xbe/lib/IMdkit/r6im/XInputContext.cpp 2004-10-19 11:37:39.065898344 +1000
+@@ -160,15 +160,15 @@
+ XInputContext::
+ SetPreeditCallbacks() {
+ if (xic) {
+- XVaNestedList preedit_attr = XVaCreateNestedList(NULL,
++ XVaNestedList preedit_attr = XVaCreateNestedList(0,
+ XNPreeditStartCallback, preedit_start_cb,
+ XNPreeditDrawCallback, preedit_draw_cb,
+ XNPreeditCaretCallback, preedit_caret_cb,
+ XNPreeditDoneCallback, preedit_done_cb,
+- 0);
++ NULL);
+ XSetICValues(xic,
+ XNPreeditAttributes, preedit_attr,
+- 0);
++ NULL);
+ XFree(preedit_attr);
+ }
+ return;
+@@ -178,14 +178,14 @@
+ XInputContext::
+ SetStatusCallbacks() {
+ if (xic) {
+- XVaNestedList status_attr = XVaCreateNestedList(NULL,
++ XVaNestedList status_attr = XVaCreateNestedList(0,
+ XNStatusStartCallback, status_start_cb,
+ XNStatusDrawCallback, status_draw_cb,
+ XNStatusDoneCallback, status_done_cb,
+- 0);
++ NULL);
+ XSetICValues(xic,
+ XNStatusAttributes, status_attr,
+- 0);
++ NULL);
+ XFree(status_attr);
+ }
+ }
+@@ -199,7 +199,7 @@
+ // private XIC attribute
+ "commitStringCallback", commit_string_cb,
+ "forwardEventCallback", forward_event_cb,
+- 0);
++ NULL);
+ return;
+ }
+
+@@ -216,7 +216,7 @@
+ // such cases, we allow to set client_win again.
+ XSetICValues(xic,
+ XNClientWindow, client_win,
+- 0);
++ NULL);
+ filters &= ~FLT_DESTROY;
+ select_destroy_clientwin_emask();
+ register_clientwin_destroy_filter();
+@@ -273,7 +273,7 @@
+ if (xic)
+ XSetICValues(xic,
+ XNFocusWindow, focus_win,
+- 0);
++ NULL);
+ }
+ return;
+ }
+@@ -361,7 +361,7 @@
+ if (reply_back && xic) {
+ XSetICValues(xic,
+ XNPreeditState, XIMPreeditEnable,
+- 0);
++ NULL);
+ }
+ is_conv_on = 1;
+ }
+@@ -371,7 +371,7 @@
+ if (reply_back && xic) {
+ XSetICValues(xic,
+ XNPreeditState, XIMPreeditDisable,
+- 0);
++ NULL);
+ }
+ is_conv_on = 0;
+ }
+@@ -387,13 +387,13 @@
+ XVaNestedList preedit_attr;
+ XPoint spot;
+ spot.x = x; spot.y = y;
+- preedit_attr = XVaCreateNestedList(NULL,
++ preedit_attr = XVaCreateNestedList(0,
+ XNSpotLocation, &spot,
+ NULL);
+ if (xic)
+ XSetICValues(xic,
+ XNPreeditAttributes, preedit_attr,
+- 0);
++ NULL);
+ XFree(preedit_attr);
+ return;
+ }
+@@ -411,13 +411,13 @@
+ XVaNestedList preedit_attr;
+ XRectangle area;
+ area.x = x; area.y = y; area.width = width; area.height = height;
+- preedit_attr = XVaCreateNestedList(NULL,
++ preedit_attr = XVaCreateNestedList(0,
+ XNArea, &area,
+ NULL);
+ if (xic)
+ XSetICValues(xic,
+ XNPreeditAttributes, preedit_attr,
+- 0);
++ NULL);
+ XFree(preedit_attr);
+ return;
+ }
+@@ -433,18 +433,18 @@
+ XVaNestedList preedit_attr;
+ XRectangle area;
+ area.x = 0; area.y = 0; area.width = width; area.height = height;
+- preedit_attr = XVaCreateNestedList(NULL,
++ preedit_attr = XVaCreateNestedList(0,
+ XNAreaNeeded, &area,
+ NULL);
+ if (xic)
+ XSetICValues(xic,
+ XNPreeditAttributes, preedit_attr,
+- 0);
++ NULL);
+ XFree(preedit_attr);
+ if (width == 0 || height == 0) {
+ // do geometry negotiation
+ XRectangle *area2 = (XRectangle*)0;
+- preedit_attr = XVaCreateNestedList(NULL,
++ preedit_attr = XVaCreateNestedList(0,
+ XNAreaNeeded, &area2,
+ NULL);
+ if (xic)
+@@ -485,13 +485,13 @@
+
+ // as XIM client
+ XVaNestedList preedit_attr;
+- preedit_attr = XVaCreateNestedList(NULL,
++ preedit_attr = XVaCreateNestedList(0,
+ XNColormap, colormap,
+ NULL);
+ if (xic)
+ XSetICValues(xic,
+ XNPreeditAttributes, preedit_attr,
+- 0);
++ NULL);
+ XFree(preedit_attr);
+ return;
+ }
+@@ -503,13 +503,13 @@
+
+ // as XIM client
+ XVaNestedList preedit_attr;
+- preedit_attr = XVaCreateNestedList(NULL,
++ preedit_attr = XVaCreateNestedList(0,
+ XNBackgroundPixmap, bg_pixmap,
+ NULL);
+ if (xic)
+ XSetICValues(xic,
+ XNPreeditAttributes, preedit_attr,
+- 0);
++ NULL);
+ XFree(preedit_attr);
+ }
+ void
+@@ -520,13 +520,13 @@
+
+ // as XIM client
+ XVaNestedList preedit_attr;
+- preedit_attr = XVaCreateNestedList(NULL,
++ preedit_attr = XVaCreateNestedList(0,
+ XNLineSpace, line_spacing,
+ NULL);
+ if (xic)
+ XSetICValues(xic,
+ XNPreeditAttributes, preedit_attr,
+- 0);
++ NULL);
+ XFree(preedit_attr);
+ }
+ void
+@@ -537,13 +537,13 @@
+
+ // as XIM client
+ XVaNestedList preedit_attr;
+- preedit_attr = XVaCreateNestedList(NULL,
++ preedit_attr = XVaCreateNestedList(0,
+ XNCursor, cursor,
+ NULL);
+ if (xic)
+ XSetICValues(xic,
+ XNPreeditAttributes, preedit_attr,
+- 0);
++ NULL);
+ XFree(preedit_attr);
+ }
+ void
+@@ -554,13 +554,13 @@
+
+ // as XIM client
+ XVaNestedList preedit_attr;
+- preedit_attr = XVaCreateNestedList(NULL,
++ preedit_attr = XVaCreateNestedList(0,
+ XNBackground, bg,
+ NULL);
+ if (xic)
+ XSetICValues(xic,
+ XNPreeditAttributes, preedit_attr,
+- 0);
++ NULL);
+ XFree(preedit_attr);
+ }
+ void
+@@ -570,13 +570,13 @@
+ preedit_attr4.foreground = fg;
+
+ XVaNestedList preedit_attr;
+- preedit_attr = XVaCreateNestedList(NULL,
++ preedit_attr = XVaCreateNestedList(0,
+ XNForeground, fg,
+ NULL);
+ if (xic)
+ XSetICValues(xic,
+ XNPreeditAttributes, preedit_attr,
+- 0);
++ NULL);
+ XFree(preedit_attr);
+ }
+ void
+@@ -587,13 +587,12 @@
+
+ XVaNestedList preedit_attr;
+ XFontSet font_set = XFactory::create_fontset(dpy, preedit_fontname);
+- preedit_attr = XVaCreateNestedList(NULL,
+- XNFontSet, font_set,
+- NULL);
++ preedit_attr = XVaCreateNestedList(0,
++ XNFontSet, font_set, NULL);
+ if (xic)
+ XSetICValues(xic,
+ XNPreeditAttributes, preedit_attr,
+- 0);
++ NULL);
+ XFree(preedit_attr);
+ }
+
+@@ -617,7 +616,7 @@
+ if (xic)
+ XSetICValues(xic,
+ XNStatusAttributes, status_attr,
+- 0);
++ NULL);
+ XFree(status_attr);
+ return;
+ }
+@@ -639,7 +638,7 @@
+ if (xic)
+ XSetICValues(xic,
+ XNStatusAttributes, status_attr,
+- 0);
++ NULL);
+ XFree(status_attr);
+ if (width == 0 || height == 0) {
+ // do geometry negotiation
+@@ -650,7 +649,7 @@
+ if (xic)
+ XGetICValues(xic,
+ XNStatusAttributes, status_attr,
+- 0);
++ NULL);
+ XFree(status_attr);
+ if (area2) {
+ if (width == 0 ||
+@@ -693,7 +692,7 @@
+ if (xic)
+ XSetICValues(xic,
+ XNStatusAttributes, status_attr,
+- 0);
++ NULL);
+ XFree(status_attr);
+ return;
+ }
+@@ -711,7 +710,7 @@
+ if (xic)
+ XSetICValues(xic,
+ XNStatusAttributes, status_attr,
+- 0);
++ NULL);
+ XFree(status_attr);
+ }
+ void
+@@ -728,7 +727,7 @@
+ if (xic)
+ XSetICValues(xic,
+ XNStatusAttributes, status_attr,
+- 0);
++ NULL);
+ XFree(status_attr);
+ }
+ void
+@@ -745,7 +744,7 @@
+ if (xic)
+ XSetICValues(xic,
+ XNStatusAttributes, status_attr,
+- 0);
++ NULL);
+ XFree(status_attr);
+ }
+ void
+@@ -762,7 +761,7 @@
+ if (xic)
+ XSetICValues(xic,
+ XNStatusAttributes, status_attr,
+- 0);
++ NULL);
+ XFree(status_attr);
+ }
+ void
+@@ -779,7 +778,7 @@
+ if (xic)
+ XSetICValues(xic,
+ XNStatusAttributes, status_attr,
+- 0);
++ NULL);
+ XFree(status_attr);
+ }
+ void
+@@ -796,7 +795,7 @@
+ if (xic)
+ XSetICValues(xic,
+ XNStatusAttributes, status_attr,
+- 0);
++ NULL);
+ XFree(status_attr);
+ }
+
+
+diff -uNr im-sdk.orig/iiimxcf/xiiimp.so/configure.ac im-sdk/iiimxcf/xiiimp.so/configure.ac
+--- im-sdk.orig/iiimxcf/xiiimp.so/configure.ac 2004-03-22 11:31:57.000000000 +1000
++++ im-sdk/iiimxcf/xiiimp.so/configure.ac 2004-03-22 11:36:20.000000000 +1000
+@@ -57,6 +57,7 @@
+ IM_CHECK_DLOPEN
+ IM_CHECK_X
+ IM_CHECK_XUTF8API
++PKG_CHECK_MODULES(XFT, xft >= 2.0.0, have_xft=true, :)
+
+ # Checks for library functions.
+ #AC_FUNC_MALLOC
+@@ -101,6 +102,8 @@
+ AC_SUBST(XIIIMP_MAJOR_VERSION)
+ AC_SUBST(XIIIMP_MINOR_VERSION)
+ AC_SUBST(XIIIMP_SOX18N_VERSION)
++AC_SUBST(XFT_LIBS)
++AC_SUBST(XFT_CFLAGS)
+
+ AC_OUTPUT(Makefile iiimp/Makefile)
+
+diff -uNr im-sdk.orig/iiimxcf/xiiimp.so/iiimp/guiIMLookup.c im-sdk/iiimxcf/xiiimp.so/iiimp/guiIMLookup.c
+--- im-sdk.orig/iiimxcf/xiiimp.so/iiimp/guiIMLookup.c 2004-03-22 11:31:57.000000000 +1000
++++ im-sdk/iiimxcf/xiiimp.so/iiimp/guiIMLookup.c 2004-03-22 11:41:08.000000000 +1000
+@@ -43,6 +43,7 @@
+ #include "iiimpIM.h"
+ #include "iiimpColor.h"
+ #include "composeIM.h"
++#include <X11/Xft/Xft.h>
+ #include "guiIMLookup.h"
+ #include "guiIMPre.h"
+ #include "lookup.h"
+@@ -60,16 +61,21 @@
+
+ static void
+ DrawLookupString(Display *display, Window win, XFontSet fontset,
++ XftDraw *xftdraw, XftColor xftcolor, XftFont *xftfont,
+ GC gc, GC rgc, XIMFeedback feedback,
+ int x, int y, char *str, int len) {
+ if (fontset == NULL) return;
+
+ if (feedback & XIMReverse) {
+- XmbDrawImageString(display, win, fontset, rgc,
+- x, y, str, len);
++ if ((xftdraw != NULL) && (xftfont != NULL))
++ XftDrawStringUtf8(xftdraw, &xftcolor, xftfont, x, y, str, len);
++ else
++ XmbDrawImageString(display, win, fontset, rgc, x, y, str, len);
+ } else {
+- XmbDrawImageString(display, win, fontset, gc,
+- x, y, str, len);
++ if ((xftdraw != NULL) && (xftfont != NULL))
++ XftDrawStringUtf8(xftdraw, &xftcolor, xftfont, x, y, str, len);
++ else
++ XmbDrawImageString(display, win, fontset, gc, x, y, str, len);
+ }
+ return;
+ }
+@@ -362,6 +368,7 @@
+ int rows;
+ int x = xMargin;
+ int y = yMargin;
++
+
+ if (lookup->fontset) {
+ XFontSetExtents *fse;
+@@ -412,7 +419,11 @@
+ if (lookup->redraw == DRAW_NOTHING &&
+ i == lookup->previous) {
+ DrawLookupString(ic->core.im->core.display, lookup->window,
+- lookup->fontset, lookup->gc, lookup->rgc, 0,
++ lookup->fontset,
++ lookup->xftdraw,
++ lookup->xftcolor,
++ lookup->xftfont,
++ lookup->gc, lookup->rgc, 0,
+ x, y, lookup->candidateArray[i],
+ strlen(lookup->candidateArray[i]));
+ if (lookup->current != i) {
+@@ -421,7 +432,11 @@
+ }
+ if (i == lookup->current) {
+ DrawLookupString(ic->core.im->core.display, lookup->window,
+- lookup->fontset, lookup->gc, lookup->rgc,
++ lookup->fontset,
++ lookup->xftdraw,
++ lookup->xftcolor,
++ lookup->xftfont,
++ lookup->gc, lookup->rgc,
+ XIMReverse,
+ x, y, lookup->candidateArray[i],
+ strlen(lookup->candidateArray[i]));
+@@ -429,7 +444,11 @@
+ }
+ if (lookup->redraw & CONTENTS) {
+ DrawLookupString(ic->core.im->core.display, lookup->window,
+- lookup->fontset, lookup->gc, lookup->rgc, 0,
++ lookup->fontset,
++ lookup->xftdraw,
++ lookup->xftcolor,
++ lookup->xftfont,
++ lookup->gc, lookup->rgc, 0,
+ x, y, lookup->candidateArray[i],
+ strlen(lookup->candidateArray[i]));
+ }
+@@ -607,6 +626,19 @@
+ lookup->fontset = XFactoryCreateDefaultFontSet(display);
+ lookup->need_free_fontset = True;
+ }
++ if (!lookup->xftdraw) {
++ lookup->xftdraw = XftDrawCreate(display,(Drawable) win,
++ DefaultVisual(display, DefaultScreen(display)),
++ DefaultColormap(display, DefaultScreen(display)));
++ }
++ if (!lookup->xftfont) {
++ lookup->xftfont = XFactoryCreateDefaultXftFont(display);
++ }
++
++ lookup->xftcolor.color.red = 0;
++ lookup->xftcolor.color.blue = 0;
++ lookup->xftcolor.color.green = 0;
++ lookup->xftcolor.color.alpha = 0xffff;
+
+ return True;
+ }
+@@ -848,6 +880,7 @@
+ XIMText *value;
+ XIMText *label;
+ IMFeedbackList **value_flist, **label_flist;
++ Display *display = ic->core.im->core.display;
+
+ if (lookup->array_size == 0) {
+ lookup->array_size = 26; /* init size */
+@@ -941,10 +974,20 @@
+ strcpy(candidate, value_str);
+ }
+ len = strlen(candidate);
+- if (lookup->maxWidth < (temp = XmbTextEscapement(lookup->fontset,
++
++ if ((lookup->xftdraw != NULL) && (lookup->xftfont != NULL)) {
++ XGlyphInfo extents;
++ XftTextExtentsUtf8(display,lookup->xftfont, candidate, len, &extents);
++ if (lookup->maxWidth < extents.xOff) {
++ lookup->maxWidth = extents.xOff;
++ }
++ } else {
++ if (lookup->maxWidth < (temp = XmbTextEscapement(lookup->fontset,
+ candidate, len))) {
+- lookup->maxWidth = temp;
++ lookup->maxWidth = temp;
++ }
+ }
++
+ lookup->candidateArray[i] = candidate;
+ lookup->labelArray[i] = (char*)strdup(label_str);
+ if (i % lookup->ncolumns == 0) {
+@@ -1071,6 +1114,14 @@
+ XFactoryFreeDefaultFontSet (ic->core.im->core.display);
+ lookup->need_free_fontset = False;
+ }
++ if (lookup->xftdraw != NULL) {
++ XftDrawDestroy(lookup->xftdraw);
++ lookup->xftdraw = NULL;
++ }
++ if (lookup->xftfont != NULL) {
++ XFactoryFreeDefaultXftFont(ic->core.im->core.display);
++ lookup->xftfont = NULL;
++ }
+ XDestroyWindow(ic->core.im->core.display,
+ lookup->window);
+ _XUnregisterFilter(ic->core.im->core.display, lookup->window,
+diff -uNr im-sdk.orig/iiimxcf/xiiimp.so/iiimp/guiIMLookup.h im-sdk/iiimxcf/xiiimp.so/iiimp/guiIMLookup.h
+--- im-sdk.orig/iiimxcf/xiiimp.so/iiimp/guiIMLookup.h 2004-03-22 11:31:57.000000000 +1000
++++ im-sdk/iiimxcf/xiiimp.so/iiimp/guiIMLookup.h 2004-03-22 11:37:23.000000000 +1000
+@@ -60,6 +60,9 @@
+ GC gc;
+ GC rgc;
+ XFontSet fontset;
++ XftDraw *xftdraw;
++ XftFont *xftfont;
++ XftColor xftcolor;
+ Bool need_free_fontset;
+ int nrows;
+ int ncolumns;
+diff -uNr im-sdk.orig/iiimxcf/xiiimp.so/iiimp/guiIMSts.c im-sdk/iiimxcf/xiiimp.so/iiimp/guiIMSts.c
+--- im-sdk.orig/iiimxcf/xiiimp.so/iiimp/guiIMSts.c 2004-03-22 11:31:57.000000000 +1000
++++ im-sdk/iiimxcf/xiiimp.so/iiimp/guiIMSts.c 2004-03-22 11:40:41.000000000 +1000
+@@ -89,6 +89,7 @@
+ static void
+ DrawStatusString(XicCommon ic,
+ Display *display, Window win, XFontSet fontset,
++ XftDraw *xftdraw, XftColor xftcolor, XftFont *xftfont,
+ GC gc, int x, int y, char *str, int str_len,
+ IMFeedbackList *feedback_list, int feedback_length) {
+ if (fontset == NULL) return;
+@@ -122,7 +123,10 @@
+ return;
+ }
+ error:
+- XmbDrawString(display, win, fontset, gc, x, y, str, str_len);
++ if ((xftdraw != NULL) && (xftfont != NULL))
++ XftDrawStringUtf8(xftdraw, &xftcolor, xftfont, x, y, str, str_len);
++ else
++ XmbDrawString(display, win, fontset, gc, x, y, str, str_len);
+ }
+
+ #if defined(USE_FILTER_KEY_PRESS_IN_STATUS)
+@@ -250,6 +254,9 @@
+ DrawStatusString(ic, ic->core.im->core.display,
+ status->window,
+ status->fontset,
++ status->xftdraw,
++ status->xftcolor,
++ status->xftfont,
+ status->gc, status->x, status->y,
+ status_string, len,
+ status->feedback, status->text.length);
+@@ -475,7 +482,7 @@
+ StatusWin status = (StatusWin)(ic->gui_icpart->status);
+
+ if (!status) return; /* Let's do it later */
+-
++
+ if (ic->core.status_attr.fontset) {
+ if (status->fontset && status->need_free_fontset) {
+ XFactoryFreeDefaultFontSet (ic->core.im->core.display);
+@@ -489,6 +496,22 @@
+ status->fontset = XFactoryCreateDefaultFontSet(ic->core.im->core.display);
+ status->need_free_fontset = True;
+ }
++ if (!status->xftdraw) {
++ status->xftdraw = XftDrawCreate(ic->core.im->core.display,
++ (Drawable) status->window,
++ DefaultVisual(ic->core.im->core.display,
++ DefaultScreen(ic->core.im->core.display)),
++ DefaultColormap(ic->core.im->core.display,
++ DefaultScreen(ic->core.im->core.display)));
++ }
++ if (!status->xftfont) {
++ status->xftfont = XFactoryCreateDefaultXftFont(ic->core.im->core.display);
++ }
++ status->xftcolor.color.red = 0;
++ status->xftcolor.color.blue = 0;
++ status->xftcolor.color.green = 0;
++ status->xftcolor.color.alpha = 0xffff;
++
+ return;
+ }
+
+@@ -581,6 +604,16 @@
+ XFactoryFreeDefaultFontSet (ic->core.im->core.display);
+ status->need_free_fontset = False;
+ }
++
++ if (status->xftdraw != NULL) {
++ XftDrawDestroy(status->xftdraw);
++ status->xftdraw = NULL;
++ }
++ if (status->xftfont != NULL) {
++ XFactoryFreeDefaultXftFont(ic->core.im->core.display);
++ status->xftfont = NULL;
++ }
++
+ _XUnregisterFilter(ic->core.im->core.display, status->window,
+ RepaintStatus, (XPointer)ic);
+ #if defined(USE_FILTER_KEY_PRESS_IN_STATUS)
+diff -uNr im-sdk.orig/iiimxcf/xiiimp.so/iiimp/guiIMSts.h im-sdk/iiimxcf/xiiimp.so/iiimp/guiIMSts.h
+--- im-sdk.orig/iiimxcf/xiiimp.so/iiimp/guiIMSts.h 2004-03-22 11:31:57.000000000 +1000
++++ im-sdk/iiimxcf/xiiimp.so/iiimp/guiIMSts.h 2004-03-22 11:37:36.000000000 +1000
+@@ -43,6 +43,7 @@
+ #define _guiIM_STS_h
+
+ #include "guiIM.h"
++#include <X11/Xft/Xft.h>
+
+ typedef void (*StatusCB)(XicCommon, XPointer);
+
+@@ -53,6 +54,9 @@
+ GC rgc;
+ #endif
+ XFontSet fontset;
++ XftDraw *xftdraw;
++ XftFont *xftfont;
++ XftColor xftcolor;
+ Bool need_free_fontset;
+ XIMText text;
+ IMFeedbackList *feedback;
+diff -uNr im-sdk.orig/iiimxcf/xiiimp.so/iiimp/Makefile.am im-sdk/iiimxcf/xiiimp.so/iiimp/Makefile.am
+--- im-sdk.orig/iiimxcf/xiiimp.so/iiimp/Makefile.am 2004-03-22 11:31:57.000000000 +1000
++++ im-sdk/iiimxcf/xiiimp.so/iiimp/Makefile.am 2004-03-22 11:37:58.000000000 +1000
+@@ -1,7 +1,7 @@
+ moduledir = $(IMDIR)
+ xiiimp_la_CFLAGS = $(X_CFLAGS) -I$(X_PRIVATEINC) \
+ $(SHLIBCFLAGS) $(THREAD_CXX_CFLAGS) \
+- -I$(CSCONV_DIR)
++ -I$(CSCONV_DIR) $(XFT_CFLAGS)
+ xiiimp_la_LDFLAGS = -rpath $(moduledir) -version-info $(XIIIMP_SOX18N_VERSION) \
+ -module -export-dynamic -no-undefined
+ # On GNU/Linux system, libtool does not take care of -no-undefined so that
+@@ -10,7 +10,7 @@
+ xiiimp_la_LIBADD = $(X_LIBS) \
+ $(IM_LIBDIR)/iiimcf/libiiimcf.la \
+ $(IM_LIBDIR)/iiimp/libiiimp.la \
+- $(DLOPEN_LIBS) $(THREAD_LIBS)
++ $(DLOPEN_LIBS) $(THREAD_LIBS) $(XFT_LIBS)
+ xiiimp_la_SOURCES = \
+ genutil.c \
+ KeyMap.c \
+diff -uNr im-sdk.orig/iiimxcf/xiiimp.so/iiimp/xfactory.c im-sdk/iiimxcf/xiiimp.so/iiimp/xfactory.c
+--- im-sdk.orig/iiimxcf/xiiimp.so/iiimp/xfactory.c 2004-03-22 11:31:57.000000000 +1000
++++ im-sdk/iiimxcf/xiiimp.so/iiimp/xfactory.c 2004-03-22 11:43:10.000000000 +1000
+@@ -46,6 +46,7 @@
+ #endif
+ #include "guiIM.h"
+ #include "xfactory.h"
++#include <X11/Xft/Xft.h>
+
+ #define PROP_WM_STATE_ELEMENTS 2
+
+@@ -459,6 +460,46 @@
+ return default_fontset;
+ }
+
++static XftFont *default_xftfont = NULL;
++static ref_xftfont_count = 0;
++
++XftFont*
++XFactoryCreateDefaultXftFont (Display *display)
++{
++ FcPattern *xfp, *match;
++ FcResult *result;
++
++ ref_xftfont_count ++ ;
++
++ if (default_xftfont != NULL){
++ return default_xftfont;
++ }
++
++ xfp = FcPatternCreate ();
++ FcPatternAddString(xfp, XFT_FAMILY, "serif");
++ match = XftFontMatch(display, DefaultScreen(display), xfp, result);
++
++ default_xftfont = XftFontOpenPattern(display, match);
++
++ if (default_xftfont == NULL) {
++ return NULL;
++ }
++
++ return default_xftfont;
++}
++
++void
++XFactoryFreeDefaultXftFont (Display *display)
++{
++ if (ref_xftfont_count-- == 0)
++ {
++ if (default_xftfont)
++ XftFontClose (display, default_xftfont);
++ default_xftfont = NULL;
++ }
++ return;
++}
++
+ void
+ XFactoryFreeDefaultFontSet(Display *display)
+ {
+diff -uNr im-sdk.orig/iiimxcf/xiiimp.so/iiimp/xfactory.h im-sdk/iiimxcf/xiiimp.so/iiimp/xfactory.h
+--- im-sdk.orig/iiimxcf/xiiimp.so/iiimp/xfactory.h 2004-10-19 11:49:40.251261504 +1000
++++ im-sdk/iiimxcf/xiiimp.so/iiimp/xfactory.h 2004-10-19 11:51:07.847944784 +1000
+@@ -49,6 +49,8 @@
+
+ #pragma ident "@(#)xfactory.h 1.1 99/11/04 SMI"
+
++#include <X11/Xft/Xft.h>
++
+ extern void XFactoryRemoveDecoration(Display *display, Window window);
+ extern void XFactoryRemoveDecorationExceptTitle(Display *display,
+ Window window);
+@@ -87,4 +89,5 @@
+ extern Bool XFactoryCheckIMWindow(Display* display, Window window);
+ extern int XFactoryValidateCoordinates(Display * display, Window w,
+ int *x, int *y);
++extern XftFont *XFactoryCreateDefaultXftFont (Display *display);
+ #endif /* !_XFACTORY_H */
+
diff --git a/app-i18n/iiimxcf/iiimxcf-12.1_p2002.ebuild b/app-i18n/iiimxcf/iiimxcf-12.1_p2002.ebuild
new file mode 100644
index 000000000000..8821a7df0cf9
--- /dev/null
+++ b/app-i18n/iiimxcf/iiimxcf-12.1_p2002.ebuild
@@ -0,0 +1,45 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-i18n/iiimxcf/iiimxcf-12.1_p2002.ebuild,v 1.1 2005/03/30 17:11:24 usata Exp $
+
+inherit iiimf eutils
+
+DESCRIPTION="X client framework for IIIMF"
+SRC_URI="http://www.openi18n.org/download/im-sdk/src/${IMSDK_P}.tar.bz2"
+
+KEYWORDS="~x86 -alpha"
+IUSE=""
+
+RDEPEND="dev-libs/libiiimp
+ dev-libs/libiiimcf"
+DEPEND="${RDEPEND}
+ >=sys-apps/sed-4"
+
+src_unpack() {
+ unpack ${A}
+ cd ${S}
+ epatch ${FILESDIR}/im-sdk-htt_xbe-crash.patch
+ cd ${S}/xiiimp.so/iiimp
+ sed -i -e 's,$(IM_LIBDIR)/iiimcf,/usr/lib,g' \
+ -e 's,$(IM_LIBDIR)/iiimp,/usr/lib,g' \
+ Makefile.am || die "sed Makefile.am failed."
+}
+
+src_compile() {
+ cd ${S}/xiiimp.so
+ iiimf_src_compile || die
+ cd ${S}/htt_xbe
+ iiimf_src_compile || die
+}
+
+src_install() {
+ cd ${S}/xiiimp.so
+ make DESTDIR=${D} install || die
+ docinto xiiimp.so
+ dodoc AUTHORS NEWS README ChangeLog
+
+ cd ${S}/htt_xbe
+ make DESTDIR=${D} install || die
+ docinto htt_xbe
+ dodoc ChangeLog
+}