Changeset 250 for trunk/src


Ignore:
Timestamp:
Feb 16, 2010, 1:18:05 PM (16 years ago)
Author:
lpino
Message:
  • New struct definition TREERECORD
Location:
trunk/src/plugins
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/plugins/org.eclipse.swt.pm/classes.inc

    r244 r250  
    210210org\eclipse\swt\internal\pm\SIZEL.java
    211211org\eclipse\swt\internal\pm\CNRINFO.java
     212org\eclipse\swt\internal\pm\TREERECORD.java
    212213
    213214# SWT PI (+)
  • trunk/src/plugins/org.eclipse.swt/Eclipse SWT PI/pm/library/structs.c

    r246 r250  
    182182SIZEL_FID_CACHE SIZELFc;
    183183CNRINFO_FID_CACHE CNRINFOFc;
     184TREERECORD_FID_CACHE TREERECORDFc;
    184185
    185186/*@@TODO (dmik): remove
     
    20292030}
    20302031
     2032/* TREERECORD struct */
     2033void cacheTREERECORDFids(JNIEnv *env, jobject lpObject, PTREERECORD_FID_CACHE lpCache)
     2034{
     2035    if (lpCache->cached) return;
     2036    lpCache->clazz = (*env)->GetObjectClass(env, lpObject);
     2037    lpCache->item = (*env)->GetFieldID(env, lpCache->clazz, "item", "Lorg/eclipse/swt/internal/pm/TREERECORD;");
     2038    lpCache->lParam = (*env)->GetFieldID(env, lpCache->clazz, "usWeightClass", "I");
     2039    lpCache->cached = 1;
     2040}
     2041
     2042PTREERECORD getTREERECORDFields(JNIEnv *env, jobject lpObject, PTREERECORD lpStruct, PTREERECORD_FID_CACHE lpCache)
     2043{
     2044    if (!lpCache->cached) cacheTREERECORDFids(env, lpObject, lpCache);
     2045    {
     2046        jobject hItem = (*env)->GetObjectField(env, lpObject, lpCache->item);
     2047        if (hItem && &(lpStruct->item)) getRECORDCOREFields(env, hItem, &(lpStruct->item), &PGLOB(RECORDCOREFc));
     2048    }
     2049    lpStruct->lParam = (*env)->GetIntField(env, lpObject, lpCache->lParam);
     2050    return lpStruct;
     2051}
     2052
     2053void setTREERECORDFields(JNIEnv *env, jobject lpObject, PTREERECORD lpStruct, PTREERECORD_FID_CACHE lpCache)
     2054{
     2055    if (!lpCache->cached) cacheTREERECORDFids(env, lpObject, lpCache);
     2056    {
     2057        jobject hItem = (*env)->GetObjectField(env, lpObject, lpCache->item);
     2058        if (hItem && &(lpStruct->item)) setRECORDCOREFields(env, hItem, &(lpStruct->item), &PGLOB(RECORDCOREFc));
     2059    }
     2060    (*env)->SetIntField(env, lpObject, lpCache->lParam, lpStruct->lParam);
     2061
     2062}
     2063
    20312064/*@@TODO (dmik): don't need, remove!
    20322065void cacheFACENAMEDESCFids(JNIEnv *env, jobject lpObject, PFACENAMEDESC_FID_CACHE lpCache)
  • trunk/src/plugins/org.eclipse.swt/Eclipse SWT PI/pm/library/structs.h

    r244 r250  
    4848PAPSZ getPAPSZArray(JNIEnv *env, jobjectArray j_papsz);
    4949void releasePAPSZArray(JNIEnv *env, jobjectArray j_papsz, PAPSZ papsz);
     50
     51/* Tree record struct */
     52typedef struct TREERECORD{
     53   RECORDCORE item;
     54   ULONG           lParam;
     55} TREERECORD;
     56typedef TREERECORD *PTREERECORD;
     57
     58/* TREERECORD struct */
     59typedef struct TREERECORD_FID_CACHE {
     60    int cached;
     61    jclass clazz;
     62    jfieldID
     63        item,
     64        lParam;
     65} TREERECORD_FID_CACHE;
     66typedef TREERECORD_FID_CACHE *PTREERECORD_FID_CACHE;
     67
     68void cacheTREERECORDFids(JNIEnv *env, jobject lpObject, PTREERECORD_FID_CACHE lpCache);
     69PTREERECORD getTREERECORDFields(JNIEnv *env, jobject lpObject, PTREERECORD lpStruct, PTREERECORD_FID_CACHE lpCache);
     70void setTREERECORDFields(JNIEnv *env, jobject lpObject, PTREERECORD lpStruct, PTREERECORD_FID_CACHE lpCache);
    5071
    5172/* QMSG struct */
     
    773794extern SIZEL_FID_CACHE SIZELFc;
    774795extern CNRINFO_FID_CACHE CNRINFOFc;
     796extern TREERECORD_FID_CACHE TREERECORDFc;
    775797/*@@TODO (dmik): remove!
    776798extern FACENAMEDESC_FID_CACHE FACENAMEDESCFc;
  • trunk/src/plugins/org.eclipse.swt/Eclipse SWT PI/pm/library/swt.c

    r247 r250  
    731731
    732732    rc = (jboolean)WinSendMsg((HWND)hwnd, ulMsgid, (PCNRINFO)c_pmpParam1, (MPARAM)mpParam2);
     733
     734    if (mpParam1) setCNRINFOFields(env, mpParam1, c_pmpParam1, &PGLOB(CNRINFOFc));
     735
     736    return rc;
     737}
     738
     739JNIEXPORT jint JNICALL Java_org_eclipse_swt_internal_pm_OS_WinSendMsg__IILorg_eclipse_swt_internal_pm_CNRINFO_2S
     740        (JNIEnv *env, jclass that, jint hwnd, jint ulMsgid, jobject mpParam1, jshort mpParam2)
     741{
     742    DECL_GLOB(pGlob)
     743    CNRINFO c_mpParam1, *c_pmpParam1 = NULL;
     744    jint rc;
     745
     746    DEBUG_CALL("WinSendMsg\n")
     747
     748    if (mpParam1) c_pmpParam1 = getCNRINFOFields(env, mpParam1, &c_mpParam1, &PGLOB(CNRINFOFc));
     749
     750    rc = (jint)WinSendMsg((HWND)hwnd, ulMsgid, (PCNRINFO)c_pmpParam1, (MPARAM)mpParam2);
    733751
    734752    if (mpParam1) setCNRINFOFields(env, mpParam1, c_pmpParam1, &PGLOB(CNRINFOFc));
Note: See TracChangeset for help on using the changeset viewer.