jdk/src/solaris/native/sun/awt/awt_TextArea.c
changeset 1192 715cf9378c53
parent 1051 90cf935adb35
parent 1191 f142c1da78c2
child 1193 41afb8ee8f45
--- a/jdk/src/solaris/native/sun/awt/awt_TextArea.c	Wed Jul 05 16:40:31 2017 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1003 +0,0 @@
-/*
- * Copyright 1995-2003 Sun Microsystems, Inc.  All Rights Reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Sun designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Sun in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- */
-
-#ifdef HEADLESS
-    #error This file should not be included in headless library
-#endif
-
-#include "awt_p.h"
-#include "canvas.h"
-#include "java_awt_TextArea.h"
-#include "java_awt_Cursor.h"
-#include "java_awt_Component.h"
-#include "java_awt_Color.h"
-#include "java_awt_AWTEvent.h"
-#include "java_awt_Font.h"
-#include "java_awt_event_MouseWheelEvent.h"
-#include "sun_awt_motif_MTextAreaPeer.h"
-#include "sun_awt_motif_MComponentPeer.h"
-
-#include "awt_Component.h"
-#include "awt_Cursor.h"
-#include "awt_TextArea.h"
-
-#include <jni.h>
-#include <jni_util.h>
-#include "multi_font.h"
-
-extern struct MComponentPeerIDs mComponentPeerIDs;
-extern struct CursorIDs cursorIDs;
-extern AwtGraphicsConfigDataPtr
-    copyGraphicsConfigToPeer(JNIEnv *env, jobject this);
-struct TextAreaIDs textAreaIDs;
-struct MTextAreaPeerIDs mTextAreaPeerIDs;
-
-/*
- * Class:     java_awt_TextArea
- * Method:    initIDs
- * Signature: ()V
- */
-
-/* This function gets called from the static initializer for TextArea.java
-   to initialize the fieldIDs for fields that may be accessed from C */
-
-JNIEXPORT void JNICALL
-Java_java_awt_TextArea_initIDs
-  (JNIEnv *env, jclass cls)
-{
-    textAreaIDs.scrollbarVisibility =
-      (*env)->GetFieldID(env, cls, "scrollbarVisibility", "I");
-}
-
-/*
- * Class:     sun_awt_motif_MTextAreaPeer
- * Method:    initIDs
- * Signature: ()V
- */
-
-/* This function gets called from the static initializer for
-   MTextAreaPeer.java to initialize the fieldIDs for fields that may
-   be accessed from C */
-JNIEXPORT void JNICALL
-Java_sun_awt_motif_MTextAreaPeer_initIDs
-  (JNIEnv *env, jclass cls)
-{
-    mTextAreaPeerIDs.firstChangeSkipped =
-      (*env)->GetFieldID(env, cls, "firstChangeSkipped", "Z");
-}
-
-/*
- * client_data is MTextAreaPeer instance
- */
-void
-TextArea_valueChanged(Widget w, XtPointer client_data, XtPointer call_data)
-{
-    JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
-    jboolean skipped;
-
-    skipped = (*env)->GetBooleanField(env, (jobject) client_data,
-                                      mTextAreaPeerIDs.firstChangeSkipped);
-    if (!(*env)->ExceptionOccurred(env)) {
-        if (skipped == JNI_FALSE) {
-            (*env)->SetBooleanField(env, (jobject) client_data,
-                                    mTextAreaPeerIDs.firstChangeSkipped,
-                                    JNI_TRUE);
-        } else {
-            JNU_CallMethodByName(env, NULL, (jobject) client_data,
-                                 "valueChanged", "()V");
-        }
-    }
-
-    if ((*env)->ExceptionOccurred(env)) {
-        (*env)->ExceptionDescribe(env);
-        (*env)->ExceptionClear(env);
-    }
-}
-
-extern void Text_handlePaste(Widget w, XtPointer client_data, XEvent * event,
-                             Boolean * cont);
-
-/*
- * Class:     sun_awt_motif_MTextAreaPeer
- * Method:    pCreate
- * Signature: (Lsun/awt/motif/MComponentPeer;)V
- */
-JNIEXPORT void JNICALL Java_sun_awt_motif_MTextAreaPeer_pCreate
-  (JNIEnv *env, jobject this, jobject parent)
-{
-    struct TextAreaData *tdata;
-#define MAX_ARGC 30
-    Arg args[MAX_ARGC];
-    int32_t argc;
-    struct ComponentData *wdata;
-    jobject target;
-    Pixel bg;
-    int32_t sbVisibility;
-    Boolean wordWrap = False, hsb = False, vsb = False;
-    jobject globalRef = awtJNI_CreateAndSetGlobalRef(env, this);
-    AwtGraphicsConfigDataPtr adata;
-    char *nonEmptyText = "* will never be shown *";
-
-    AWT_LOCK();
-
-    adata = copyGraphicsConfigToPeer(env, this);
-
-    if (JNU_IsNull(env, parent)) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        AWT_UNLOCK();
-        return;
-    }
-    wdata = (struct ComponentData *)
-        JNU_GetLongFieldAsPtr(env,parent,mComponentPeerIDs.pData);
-    if (wdata == NULL) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        AWT_UNLOCK();
-        return;
-    }
-    target = (*env)->GetObjectField(env, this, mComponentPeerIDs.target);
-
-    tdata = ZALLOC(TextAreaData);
-    JNU_SetLongFieldFromPtr(env,this,mComponentPeerIDs.pData,tdata);
-
-    if (tdata == NULL) {
-        JNU_ThrowOutOfMemoryError(env, "OutOfMemoryError");
-        AWT_UNLOCK();
-        return;
-    }
-    XtVaGetValues(wdata->widget, XmNbackground, &bg, NULL);
-
-    sbVisibility = (*env)->GetIntField(env, target,
-                                       textAreaIDs.scrollbarVisibility);
-    switch (sbVisibility) {
-        case java_awt_TextArea_SCROLLBARS_NONE:
-            wordWrap = True;
-            hsb = False;
-            vsb = False;
-            break;
-
-        case java_awt_TextArea_SCROLLBARS_VERTICAL_ONLY:
-            wordWrap = True;
-            hsb = False;
-            vsb = True;
-            break;
-
-        case java_awt_TextArea_SCROLLBARS_HORIZONTAL_ONLY:
-            wordWrap = False;
-            hsb = True;
-            vsb = False;
-            break;
-
-        default:
-        case java_awt_TextArea_SCROLLBARS_BOTH:
-            wordWrap = False;
-            hsb = True;
-            vsb = True;
-            break;
-    }
-
-    argc = 0;
-    XtSetArg(args[argc], XmNrecomputeSize, False);
-    argc++;
-    XtSetArg(args[argc], XmNx, 0);
-    argc++;
-    XtSetArg(args[argc], XmNy, 0);
-    argc++;
-    XtSetArg(args[argc], XmNbackground, bg);
-    argc++;
-    XtSetArg(args[argc], XmNeditMode, XmMULTI_LINE_EDIT);
-    argc++;
-    XtSetArg(args[argc], XmNwordWrap, wordWrap);
-    argc++;
-    XtSetArg(args[argc], XmNscrollHorizontal, hsb);
-    argc++;
-    XtSetArg(args[argc], XmNscrollVertical, vsb);
-    argc++;
-    XtSetArg(args[argc], XmNmarginHeight, 2);
-    argc++;
-    XtSetArg(args[argc], XmNmarginWidth, 2);
-    argc++;
-    XtSetArg(args[argc], XmNuserData, (XtPointer) globalRef);
-    argc++;
-    XtSetArg (args[argc], XmNscreen,
-              ScreenOfDisplay(awt_display,
-                              adata->awt_visInfo.screen));
-    argc++;
-    XtSetArg(args[argc], XmNfontList, getMotifFontList());
-    argc++;
-
-    /* Initialize with a non-empty text, so the
-     * TextArea_valueChanged callback will be called
-     * even if the following conditions are true:
-     * 1. TextArea constructed with an empty initial text.
-     * 2. setText() with an empty argument is called
-     *    immediately after the TextArea component is created.
-     * For more details please see #4028580.
-     */
-    XtSetArg(args[argc], XmNvalue, nonEmptyText);
-    argc++;
-
-    DASSERT(!(argc > MAX_ARGC));
-    tdata->txt = XmCreateScrolledText(wdata->widget, "textA",
-                                      args, argc);
-    tdata->comp.widget = XtParent(tdata->txt);
-
-    /* Bug 4208972. Give the ScrolledWindow a minimum size. */
-    XtVaSetValues(tdata->comp.widget,
-        XmNwidth,  1,
-        XmNheight, 1, NULL);
-
-    XtSetMappedWhenManaged(tdata->comp.widget, False);
-    XtManageChild(tdata->txt);
-    XtManageChild(tdata->comp.widget);
-
-    XtAddCallback(tdata->txt,
-                  XmNvalueChangedCallback,
-                  TextArea_valueChanged,
-                  (XtPointer) globalRef);
-
-    XtAddEventHandler(tdata->txt, FocusChangeMask,
-                      True, awt_canvas_event_handler, globalRef);
-
-    XtInsertEventHandler(tdata->txt,
-                         KeyPressMask,
-                         False, Text_handlePaste, (XtPointer) globalRef,
-                         XtListHead);
-
-    awt_addWidget(tdata->txt, tdata->comp.widget, globalRef,
-                  java_awt_AWTEvent_KEY_EVENT_MASK |
-                  java_awt_AWTEvent_MOUSE_EVENT_MASK |
-                  java_awt_AWTEvent_MOUSE_MOTION_EVENT_MASK);
-    /*
-     * Fix for BugTraq ID 4349615.
-     * Unregister Motif drop site to prevent it from crash
-     * when dropping java objects.
-     */
-    XmDropSiteUnregister(tdata->txt);
-
-    AWT_UNLOCK();
-}
-
-/*
- * Class:     sun_awt_motif_MTextAreaPeer
- * Method:    getExtraWidth
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_sun_awt_motif_MTextAreaPeer_getExtraWidth
-  (JNIEnv *env, jobject this)
-{
-    struct TextAreaData *tdata;
-    Dimension spacing, shadowThickness, textMarginWidth, sbWidth;
-    Widget verticalScrollBar;
-
-    AWT_LOCK();
-
-    tdata = (struct TextAreaData *) JNU_GetLongFieldAsPtr(env,this,mComponentPeerIDs.pData);
-
-    if (tdata == NULL || tdata->txt == NULL) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        AWT_UNLOCK();
-        return 0;
-    }
-    XtVaGetValues(tdata->txt, XmNmarginWidth, &textMarginWidth, NULL);
-    XtVaGetValues(tdata->comp.widget,
-                  XmNspacing, &spacing,
-                  XmNverticalScrollBar, &verticalScrollBar,
-                  NULL);
-    if (verticalScrollBar != NULL) {
-        /* Assumption:  shadowThickness same for scrollbars and text area */
-        XtVaGetValues(verticalScrollBar,
-                      XmNwidth, &sbWidth,
-                      XmNshadowThickness, &shadowThickness,
-                      NULL);
-    } else {
-        sbWidth = 0;
-        shadowThickness = 0;
-    }
-
-    AWT_UNLOCK();
-
-    return (jint) (sbWidth + spacing + 2 * textMarginWidth + 4 * shadowThickness);
-}
-
-/*
- * Class:     sun_awt_motif_MTextAreaPeer
- * Method:    getExtraHeight
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_sun_awt_motif_MTextAreaPeer_getExtraHeight
-  (JNIEnv *env, jobject this)
-{
-    struct TextAreaData *tdata;
-    Dimension spacing, shadowThickness, textMarginHeight, sbHeight;
-    Dimension sbShadowThickness, highlightThickness, sbHighlightThickness;
-    int32_t height;
-    Widget horizontalScrollBar;
-
-    AWT_LOCK();
-
-    tdata = (struct TextAreaData *) JNU_GetLongFieldAsPtr(env,this,mComponentPeerIDs.pData);
-
-    if (tdata == NULL || tdata->txt == NULL) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        AWT_UNLOCK();
-        return 0;
-    }
-
-    XtVaGetValues(tdata->txt, XmNmarginHeight, &textMarginHeight,
-                              XmNshadowThickness, &shadowThickness,
-                              XmNhighlightThickness, &highlightThickness, NULL);
-    height = 2 * (textMarginHeight + shadowThickness + highlightThickness);
-
-    XtVaGetValues(tdata->comp.widget,
-                  XmNspacing, &spacing,
-                  XmNhorizontalScrollBar, &horizontalScrollBar,
-                  NULL);
-
-    if (horizontalScrollBar != NULL) {
-        XtVaGetValues(horizontalScrollBar,
-                      XmNshadowThickness, &sbShadowThickness,
-                      XmNhighlightThickness, &sbHighlightThickness,
-                      XmNheight, &sbHeight,
-                      NULL);
-        height += sbHeight + spacing
-                + 2 * (sbShadowThickness + sbHighlightThickness);
-    }
-
-    AWT_UNLOCK();
-
-    return (jint)height;
-}
-
-/*
- * Class:     sun_awt_motif_MTextAreaPeer
- * Method:    setTextBackground
- * Signature: (Ljava/awt/Color;)V
- */
-JNIEXPORT void JNICALL Java_sun_awt_motif_MTextAreaPeer_setTextBackground
-  (JNIEnv *env, jobject this, jobject c)
-{
-    struct TextAreaData *tdata;
-    Pixel color;
-
-    AWT_LOCK();
-
-    tdata = (struct TextAreaData *) JNU_GetLongFieldAsPtr(env,this,mComponentPeerIDs.pData);
-
-    if (tdata == NULL || tdata->txt == NULL || JNU_IsNull(env, c)) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        AWT_UNLOCK();
-        return;
-    }
-    color = awtJNI_GetColor(env, c);
-    XtVaSetValues(tdata->txt,
-                  XmNbackground, color,
-                  NULL);
-
-    AWT_FLUSH_UNLOCK();
-}
-
-/*
- * Class:     sun_awt_motif_MTextAreaPeer
- * Method:    pSetEditable
- * Signature: (Z)V
- */
-JNIEXPORT void JNICALL Java_sun_awt_motif_MTextAreaPeer_pSetEditable
-  (JNIEnv *env, jobject this, jboolean editable)
-{
-    struct TextAreaData *tdata;
-
-    AWT_LOCK();
-
-    tdata = (struct TextAreaData *) JNU_GetLongFieldAsPtr(env,this,mComponentPeerIDs.pData);
-
-    if (tdata == NULL || tdata->txt == NULL) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        AWT_UNLOCK();
-        return;
-    }
-    XtVaSetValues(tdata->txt,
-                  XmNeditable, (editable ? True : False),
-                  XmNcursorPositionVisible, (editable ? True : False),
-                  NULL);
-
-    AWT_FLUSH_UNLOCK();
-}
-
-/*
- * Class:     sun_awt_motif_MTextAreaPeer
- * Method:    select
- * Signature: (II)V
- */
-JNIEXPORT void JNICALL Java_sun_awt_motif_MTextAreaPeer_select
-  (JNIEnv *env, jobject this, jint start, jint end)
-{
-    struct TextAreaData *tdata;
-
-    AWT_LOCK();
-
-    tdata = (struct TextAreaData *) JNU_GetLongFieldAsPtr(env,this,mComponentPeerIDs.pData);
-
-    if (tdata == NULL || tdata->txt == NULL) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        AWT_UNLOCK();
-        return;
-    }
-    XmTextSetSelection(tdata->txt, (XmTextPosition) start, (XmTextPosition) end, 0);
-    AWT_FLUSH_UNLOCK();
-}
-
-/*
- * Class:     sun_awt_motif_MTextAreaPeer
- * Method:    getSelectionStart
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_sun_awt_motif_MTextAreaPeer_getSelectionStart
-  (JNIEnv *env, jobject this)
-{
-    struct TextAreaData *tdata;
-    XmTextPosition start, end, pos;
-
-    AWT_LOCK();
-
-    tdata = (struct TextAreaData *) JNU_GetLongFieldAsPtr(env,this,mComponentPeerIDs.pData);
-
-    if (tdata == NULL || tdata->txt == NULL) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        AWT_UNLOCK();
-        return 0;
-    }
-    if (XmTextGetSelectionPosition(tdata->txt, &start, &end) &&
-                                             (start != end)) {
-        pos = start;
-    } else {
-        pos = XmTextGetInsertionPosition(tdata->txt);
-    }
-    AWT_UNLOCK();
-
-    return (jint) pos;
-}
-
-/*
- * Class:     sun_awt_motif_MTextAreaPeer
- * Method:    getSelectionEnd
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_sun_awt_motif_MTextAreaPeer_getSelectionEnd
-  (JNIEnv *env, jobject this)
-{
-    struct TextAreaData *tdata;
-    XmTextPosition start, end, pos;
-
-    AWT_LOCK();
-
-    tdata = (struct TextAreaData *) JNU_GetLongFieldAsPtr(env,this,mComponentPeerIDs.pData);
-    if (tdata == NULL || tdata->txt == NULL) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        AWT_UNLOCK();
-        return 0;
-    }
-    if (XmTextGetSelectionPosition(tdata->txt, &start, &end) &&
-                                             (start != end)) {
-        pos = end;
-    } else {
-        pos = XmTextGetInsertionPosition(tdata->txt);
-    }
-    AWT_UNLOCK();
-
-    return (jint) pos;
-}
-
-/*
- * Class:     sun_awt_motif_MTextAreaPeer
- * Method:    setText
- * Signature: (Ljava/lang/String;)V
- */
-JNIEXPORT void JNICALL Java_sun_awt_motif_MTextAreaPeer_setText
-  (JNIEnv *env, jobject this, jstring txt)
-{
-    struct TextAreaData *tdata;
-    char *cTxt;
-    jobject font = awtJNI_GetFont(env, this);
-
-    if (JNU_IsNull(env, txt)) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        return;
-    }
-    AWT_LOCK();
-
-    tdata = (struct TextAreaData *)
-      JNU_GetLongFieldAsPtr(env,this,mComponentPeerIDs.pData);
-    if (tdata == NULL || tdata->txt == NULL) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        AWT_UNLOCK();
-        return;
-    }
-    cTxt = (char *) JNU_GetStringPlatformChars(env, txt, NULL);
-
-    if (cTxt == NULL) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        AWT_UNLOCK();
-        return;
-    }
-    XtVaSetValues(tdata->txt, XmNvalue, cTxt, NULL);
-
-    if (cTxt != NULL) {
-        JNU_ReleaseStringPlatformChars(env, txt, cTxt);
-    }
-    AWT_FLUSH_UNLOCK();
-}
-
-/*
- * Class:     sun_awt_motif_MTextAreaPeer
- * Method:    getText
- * Signature: ()Ljava/lang/String;
- */
-JNIEXPORT jstring JNICALL Java_sun_awt_motif_MTextAreaPeer_getText
-  (JNIEnv *env, jobject this)
-{
-    struct TextAreaData *tdata;
-    char *cTxt;
-    jstring rval;
-    jobject font = awtJNI_GetFont(env, this);
-
-    AWT_LOCK();
-
-    tdata = (struct TextAreaData *)
-      JNU_GetLongFieldAsPtr(env,this, mComponentPeerIDs.pData);
-    if (tdata == NULL || tdata->txt == NULL) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        AWT_UNLOCK();
-        return NULL;
-    }
-    cTxt = XmTextGetString(tdata->txt);
-
-    rval = JNU_NewStringPlatform(env, (const char *) cTxt);
-
-    XtFree(cTxt);
-
-    AWT_UNLOCK();
-
-    return rval;
-}
-
-/*
- * Class:     sun_awt_motif_MTextAreaPeer
- * Method:    insert
- * Signature: (Ljava/lang/String;I)V
- */
-JNIEXPORT void JNICALL Java_sun_awt_motif_MTextAreaPeer_insert
-  (JNIEnv *env, jobject this, jstring txt, jint pos)
-{
-    struct TextAreaData *tdata;
-    char *cTxt;
-    jobject font = awtJNI_GetFont(env, this);
-
-    if (JNU_IsNull(env, txt)) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        return;
-    }
-    AWT_LOCK();
-    tdata = (struct TextAreaData *)
-      JNU_GetLongFieldAsPtr(env, this, mComponentPeerIDs.pData);
-    if (tdata == NULL || tdata->txt == NULL) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        AWT_UNLOCK();
-        return;
-    }
-    cTxt = (char *) JNU_GetStringPlatformChars(env, txt, NULL);
-
-    if (cTxt == NULL) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        AWT_UNLOCK();
-        return;
-    }
-    XmTextInsert(tdata->txt, (XmTextPosition) pos, cTxt);
-
-    if (cTxt != NULL) {
-        JNU_ReleaseStringPlatformChars(env, txt, cTxt);
-    }
-    AWT_FLUSH_UNLOCK();
-}
-
-/*
- * Class:     sun_awt_motif_MTextAreaPeer
- * Method:    replaceRange
- * Signature: (Ljava/lang/String;II)V
- */
-JNIEXPORT void JNICALL Java_sun_awt_motif_MTextAreaPeer_replaceRange
-  (JNIEnv *env, jobject this, jstring txt, jint start, jint end)
-{
-    struct TextAreaData *tdata;
-    char *cTxt;
-    jobject font = awtJNI_GetFont(env, this);
-
-    if (JNU_IsNull(env, txt)) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        return;
-    }
-    AWT_LOCK();
-    tdata = (struct TextAreaData *)
-      JNU_GetLongFieldAsPtr(env, this, mComponentPeerIDs.pData);
-    if (tdata == NULL || tdata->txt == NULL) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        AWT_UNLOCK();
-        return;
-    }
-    cTxt = (char *) JNU_GetStringPlatformChars(env, txt, NULL);
-
-    if (cTxt == NULL) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        AWT_UNLOCK();
-        return;
-    }
-    XmTextReplace(tdata->txt,
-                  (XmTextPosition) start,
-                  (XmTextPosition) end,
-                  cTxt);
-
-    if (cTxt != NULL) {
-        JNU_ReleaseStringPlatformChars(env, txt, cTxt);
-    }
-    AWT_FLUSH_UNLOCK();
-}
-
-/*
- * Class:     sun_awt_motif_MTextAreaPeer
- * Method:    setFont
- * Signature: (Ljava/awt/Font;)V
- */
-JNIEXPORT void JNICALL Java_sun_awt_motif_MTextAreaPeer_setFont
-  (JNIEnv *env, jobject this, jobject f)
-{
-    struct TextAreaData *tdata;
-    struct FontData *fdata;
-    XmFontList fontlist;
-    char *err;
-    XmFontListEntry fontentry;
-
-    if (JNU_IsNull(env, f)) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        return;
-    }
-    AWT_LOCK();
-
-    fdata = awtJNI_GetFontData(env, f, &err);
-    if (fdata == NULL) {
-        JNU_ThrowInternalError(env, err);
-        AWT_UNLOCK();
-        return;
-    }
-    tdata = (struct TextAreaData *)
-      JNU_GetLongFieldAsPtr(env, this, mComponentPeerIDs.pData);
-    if (tdata == NULL || tdata->comp.widget == NULL) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        AWT_UNLOCK();
-        return;
-    }
-    if (awtJNI_IsMultiFont(env, f)) {
-        if (fdata->xfs == NULL) {
-            fdata->xfs = awtJNI_MakeFontSet(env, f);
-        }
-        if (fdata->xfs != NULL) {
-            fontentry = XmFontListEntryCreate("labelFont",
-                                              XmFONT_IS_FONTSET,
-                                              (XtPointer) (fdata->xfs));
-            fontlist = XmFontListAppendEntry(NULL, fontentry);
-            /*
-             * Some versions of motif have a bug in
-             * XmFontListEntryFree() which causes it to free more than it
-             * should.  Use XtFree() instead.  See O'Reilly's
-             * Motif Reference Manual for more information.
-             */
-            XmFontListEntryFree(&fontentry);
-
-        } else {
-            fontlist = XmFontListCreate(fdata->xfont, "labelFont");
-        }
-    } else {
-        fontlist = XmFontListCreate(fdata->xfont, "labelFont");
-    }
-
-    if (fontlist != NULL) {
-        Dimension textw, texth;
-        Dimension w, h;
-
-        XtVaGetValues(tdata->txt,
-                      XmNwidth, &textw,
-                      XmNheight, &texth,
-                      NULL);
-        XtVaGetValues(tdata->comp.widget,
-                      XmNwidth, &w,
-                      XmNheight, &h,
-                      NULL);
-
-        /* Must set width/height when we set the font, else
-         * Motif resets the text to a single row.
-         */
-        XtVaSetValues(tdata->txt,
-                      XmNfontList, fontlist,
-                      XmNwidth, textw,
-                      XmNheight, texth,
-                      NULL);
-        XtVaSetValues(tdata->comp.widget,
-                      XmNwidth, w,
-                      XmNheight, h,
-                      NULL);
-
-        XmFontListFree(fontlist);
-    } else {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-    }
-
-    AWT_UNLOCK();
-}
-
-/*
- * Class:     sun_awt_motif_MTextAreaPeer
- * Method:    setCaretPosition
- * Signature: (I)V
- */
-JNIEXPORT void JNICALL Java_sun_awt_motif_MTextAreaPeer_setCaretPosition
-  (JNIEnv *env, jobject this, jint pos)
-{
-    struct TextAreaData *tdata;
-
-    AWT_LOCK();
-
-    tdata = (struct TextAreaData *)
-      JNU_GetLongFieldAsPtr(env, this, mComponentPeerIDs.pData);
-
-    if (tdata == NULL || tdata->txt == NULL) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        AWT_UNLOCK();
-        return;
-    }
-    XmTextSetInsertionPosition(tdata->txt, (XmTextPosition) pos);
-
-    AWT_FLUSH_UNLOCK();
-}
-
-/*
- * Class:     sun_awt_motif_MTextAreaPeer
- * Method:    getCaretPosition
- * Signature: ()I
- */
-JNIEXPORT jint JNICALL Java_sun_awt_motif_MTextAreaPeer_getCaretPosition
-  (JNIEnv *env, jobject this)
-{
-    struct TextAreaData *tdata;
-    XmTextPosition pos;
-
-    AWT_LOCK();
-
-    tdata = (struct TextAreaData *)
-      JNU_GetLongFieldAsPtr(env, this, mComponentPeerIDs.pData);
-
-    if (tdata == NULL || tdata->txt == NULL) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        AWT_UNLOCK();
-        return 0;
-    }
-    pos = XmTextGetInsertionPosition(tdata->txt);
-
-    AWT_UNLOCK();
-
-    return (jint) pos;
-}
-
-/*
- * Class:     sun_awt_motif_MTextAreaPeer
- * Method:    pShow
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_sun_awt_motif_MTextAreaPeer_pShow2
-  (JNIEnv *env, jobject this)
-{
-    struct TextAreaData *tdata;
-
-    AWT_LOCK();
-    tdata = (struct TextAreaData *) JNU_GetLongFieldAsPtr(env,this,mComponentPeerIDs.pData);
-    if (tdata == NULL || tdata->comp.widget == NULL) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        AWT_UNLOCK();
-        return;
-    }
-
-    awt_util_show(tdata->comp.widget);
-    AWT_FLUSH_UNLOCK();
-}
-
-
-/*
- * Class:     sun_awt_motif_MTextAreaPeer
- * Method:    pMakeCursorVisible
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_sun_awt_motif_MTextAreaPeer_pMakeCursorVisible
-  (JNIEnv *env, jobject this)
-{
-    struct TextAreaData *tdata;
-
-    AWT_LOCK();
-    tdata = (struct TextAreaData *) JNU_GetLongFieldAsPtr(env,this,mComponentPeerIDs.pData);
-    if (tdata == NULL || tdata->comp.widget == NULL) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        AWT_UNLOCK();
-        return;
-    }
-
-    AWT_FLUSH_UNLOCK();
-}
-
-/*
- * Class:     sun_awt_motif_MTextAreaPeer
- * Method:    pSetCursor
- * Signature: (L/java/awt/Cursor;)V
- */
-JNIEXPORT void JNICALL Java_sun_awt_motif_MTextAreaPeer_pSetCursor
-  (JNIEnv *env, jobject this, jobject cursor)
-{
-    Cursor xcursor;
-    struct TextAreaData         *tdata;
-
-    AWT_LOCK();
-    tdata = (struct TextAreaData *)
-        JNU_GetLongFieldAsPtr(env, this, mComponentPeerIDs.pData);
-    if (tdata == NULL || tdata->comp.widget == NULL || JNU_IsNull(env, cursor)) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        AWT_UNLOCK();
-        return;
-    }
-
-    awt_util_setCursor(tdata->txt, getCursor(env, cursor));
-
-    AWT_FLUSH_UNLOCK();
-}
-
-/*
- * Class:     sun_awt_motif_MTextAreaPeer
- * Method:    nativeHandleMouseWheel
- * Signature: (III)V
- */
-JNIEXPORT void JNICALL Java_sun_awt_motif_MTextAreaPeer_nativeHandleMouseWheel
-  (JNIEnv *env, jobject this, jint scrollType, jint scrollAmt, jint wheelAmt)
-{
-    struct TextAreaData         *tdata;
-    Widget text = NULL;
-    Widget scroll = NULL;
-
-    AWT_LOCK();
-    tdata = (struct TextAreaData *)
-        JNU_GetLongFieldAsPtr(env, this, mComponentPeerIDs.pData);
-    if (tdata == NULL || tdata->comp.widget == NULL) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        AWT_UNLOCK();
-        return;
-    }
-    // get the Text widget
-    text = tdata->txt;
-    if (text == NULL) {
-        AWT_UNLOCK();
-        return;
-    }
-
-    // get the ScrolledWindow
-    scroll = XtParent(text);
-    if (scroll == NULL) {
-        AWT_UNLOCK();
-        return;
-    }
-
-    awt_util_do_wheel_scroll(scroll, scrollType, scrollAmt, wheelAmt);
-    AWT_UNLOCK();
-}
-
-
-
-/*  To be fully implemented in a future release
- *
- * Class:     sun_awt_windows_MTextAreaPeer
- * Method:    getIndexAtPoint
- * Signature: (II)I
- *
-JNIEXPORT jint JNICALL
-Java_sun_awt_motif_MTextAreaPeer_getIndexAtPoint(JNIEnv *env, jobject self,
- jint x, jint y)
-{
-    struct TextAreaData *tdata;
-    XmTextPosition pos;
-
-    AWT_LOCK();
-
-    tdata = (struct TextAreaData *)
-        JNU_GetLongFieldAsPtr(env,self,mComponentPeerIDs.pData);
-
-    if (tdata == NULL || tdata->txt == NULL) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        AWT_UNLOCK();
-        return -1;
-    }
-    pos = XmTextXYToPos(tdata->txt, x, y);
-    AWT_UNLOCK();
-
-    return (jint) pos;
-}
-*/
-
-/*  To be fully implemented in a future release
- *
- * Class:     sun_awt_windows_MTextAreaPeer
- * Method:    getCharacterBounds
- * Signature: (I)Ljava/awt/Rectangle;
- *
-JNIEXPORT jobject JNICALL
-Java_sun_awt_motif_MTextAreaPeer_getCharacterBounds(JNIEnv *env, jobject self, jint i)
-{
-#define Text_FontAscent(tfg)                   (((XmTextWidget)(tfg)) -> \
-                                           text.output->data->font_ascent)
-#define Text_FontDescent(tfg)                  (((XmTextWidget)(tfg)) -> \
-                                           text.output->data->font_descent)
-
-    struct TextAreaData *tdata;
-    jobject rect=NULL;
-    Position x=0, y=0;
-    Position next_x=0, next_y=0;
-    int32_t w=0, h=0;
-
-    AWT_LOCK();
-
-    tdata = (struct TextAreaData *)
-        JNU_GetLongFieldAsPtr(env,self,mComponentPeerIDs.pData);
-
-    if (tdata == NULL || tdata->txt == NULL) {
-        JNU_ThrowNullPointerException(env, "NullPointerException");
-        AWT_UNLOCK();
-        return (jobject) NULL;
-    }
-
-    XmTextPosToXY(tdata->txt, i, &x, &y);
-    y -= Text_FontAscent(tdata->txt);
-    XmTextPosToXY(tdata->txt, i+1, &next_x, &next_y);
-    w = next_x - x;
-    h = Text_FontAscent(tdata->txt) + Text_FontDescent(tdata->txt);
-
-    AWT_UNLOCK();
-
-    if (w>0) {
-        jclass clazz;
-        jmethodID mid;
-
-        clazz = (*env)->FindClass(env, "java/awt/Rectangle");
-        mid = (*env)->GetMethodID(env, clazz, "<init>", "(IIII)V");
-        if (mid != NULL) {
-            rect = (*env)->NewObject(env, clazz, mid, x, y, w, h);
-            if ((*env)->ExceptionOccurred(env)) {
-                return (jobject) NULL;
-            }
-        }
-    }
-    return rect;
-}
-*/