diff -urN java.orig/j2se/src/solaris/native/sun/awt/awt_motif21.c java/j2se/src/solaris/native/sun/awt/awt_motif21.c
--- java.orig/j2se/src/solaris/native/sun/awt/awt_motif21.c	2003-09-11 11:55:43.000000000 +1000
+++ java/j2se/src/solaris/native/sun/awt/awt_motif21.c	2003-10-27 10:12:14.000000000 +1100
@@ -15,14 +15,16 @@
 #include "awt_p.h"
 #include "awt_Component.h"
 
+/* LessTif does this slightly differently
+ * hgg <games@sourcemage.org>
+ */
+
 #define XmPER_SHELL 0
 extern XIC XmImGetXIC(
                                 Widget          w,
-                        uint32_t    input_policy,
+                        XmInputPolicy    input_policy,
                         ArgList         args,
                         Cardinal        num_args) ;
-extern int32_t _XmImGetGeo(
-                        Widget vw) ;
 
 #define MAXARGS 10
 static Arg xic_vlist[MAXARGS];
@@ -38,7 +40,7 @@
  */
 static Widget getTextWidget(jobject tc) {
     JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
-    
+
     if (mTextAreaClass == NULL) {
         jclass localClass = (*env)->FindClass(env, MTEXTAREAPEER_CLASS_NAME);
 	mTextAreaClass = (jclass)(*env)->NewGlobalRef(env, localClass);
@@ -86,12 +88,9 @@
 	    XFree(im_rect);
 	} else {
 	    im_height = 0;
-	}    
+	}
     }
 
-    if (im_height == 0) {
-	im_height = _XmImGetGeo(w);
-    }
 
 #if defined(DEBUG)
     jio_fprintf(stderr,"awt_motif_getIMStatusHeight: Height = %d",im_height);
@@ -119,7 +118,7 @@
 
     char *ret;
     Widget p=w;
-    
+
     while (!XtIsShell(p)) {
         p = XtParent(p);
     }
diff -urN java.orig/j2se/src/solaris/native/sun/awt/awt_ScrollPane.c java/j2se/src/solaris/native/sun/awt/awt_ScrollPane.c
--- java.orig/j2se/src/solaris/native/sun/awt/awt_ScrollPane.c	2003-09-11 11:55:42.000000000 +1000
+++ java/j2se/src/solaris/native/sun/awt/awt_ScrollPane.c	2003-10-27 10:13:42.000000000 +1100
@@ -169,18 +169,8 @@
 NavigableCallback oldClipNavigable = NULL;
 Boolean clipCallbackInitialized = False;
 XmNavigability MyClipNavigable(Widget wid) {
-    // We've installed this function for ClipWindow
-    if (XmIsClipWindow(wid)) {
-        // To be able to request focus on ClipWindow by call
-        // XmProcessTraversal(, XmTRAVERSE_CURRENT) we need to make
-        // it return XmCONTROL_NAVIGABLE. Default implementation returns
-        // DESCENDANTS_TAB_NAVIGABLE which doesn't allow this.
-        return XmCONTROL_NAVIGABLE;
-    }
-    if (oldClipNavigable) {
-        return oldClipNavigable(wid);
-    }
-    // this will never happen
+    // I removed a function because LessTif handles this more gracefully
+    // hgg <games@sourcemage.org>
     return XmCONTROL_NAVIGABLE;
 }
 
diff -urN java.orig/j2se/src/solaris/native/sun/awt/multi_font.c java/j2se/src/solaris/native/sun/awt/multi_font.c
--- java.orig/j2se/src/solaris/native/sun/awt/multi_font.c	2003-09-11 11:55:44.000000000 +1000
+++ java/j2se/src/solaris/native/sun/awt/multi_font.c	2003-10-27 01:07:50.000000000 +1100
@@ -327,16 +327,6 @@
     return JNI_TRUE;
 }
 
-#ifdef __linux__
-XmString 
-unicodeXmStringCreate(char* text, char* tag, int len) {
-    XmString ret_val;
-    XtProcessLock();
-    ret_val = _XmStringNCreate (text, tag, len);
-    XtProcessUnlock();
-    return ret_val;
-}
-#endif
 
 /*
  * Unicode to Motif Multi Font Compound String converter
@@ -412,31 +402,6 @@
             char *offsetStringData;
 
             offsetStringData = stringData + (4 * sizeof(char));
-#ifdef __linux__
-            len = buf[0] << 24 | buf[1] << 16 | buf[2] << 8 | buf[3]; 
-            /* Motif XmStringCreate() API requests "text must be a NULL-terminated 
-               string" and its implementation uses "strlen()" to calculate the length 
-               of the text string. Unfortunately when we deal with iso10646 font
-               on linux, the "text" is requested to be encoded in UTF16, which has the 
-               posibility of including code points like "0xYY00" ("0xYY" + "0x00") that
-               causes problem when XmStringCreate() calls _XmStringNCreate() without
-               specifying a specific text lenth (see Motif XmString.c). The workaround is 
-               to call _XmStringNCreate() directly with specific text length at this 
-               cirsumstance.
-	    */               
-            if (strstr(fdata->flist[fdnumber].charset_name, "UnicodeBigUnmarked"))
-                xmtmp1 = unicodeXmStringCreate(offsetStringData, tag, len);
-            else
-                xmtmp1 = XmStringCreate(offsetStringData, tag);
-            if (xmstr == NULL) 
-                xmstr = xmtmp1;
-            else {
-                xmtmp2 = XmStringConcat(xmstr, xmtmp1);
-                XmStringFree(xmtmp1);
-                XmStringFree(xmstr);
-                xmstr = xmtmp2;
-            }
-#else
             if(xmstr == NULL) {
                 xmstr = XmStringCreate(offsetStringData, tag);
             }
@@ -447,7 +412,6 @@
                 XmStringFree(xmstr);
                 xmstr = xmtmp2;
             }
-#endif
         }
 
         (*env)->ReleasePrimitiveArrayCritical(env, data, stringData, JNI_ABORT);
