Changeset 82 for trunk/src


Ignore:
Timestamp:
May 28, 2008, 12:46:14 AM (17 years ago)
Author:
lpino
Message:

(Decorations.java) - Basic implementation of accelerator tables

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/plugins/org.eclipse.swt/Eclipse SWT/pm/org/eclipse/swt/widgets/Decorations.java

    r75 r82  
    33/*
    44 * OS/2 version.
    5  * Copyright (c) 2002, 2004 EclipseOS2 Team.
     5 * Copyright (c) 2002, 2008 EclipseOS2 Team.
    66 */
    77
     
    302302                maxAccel = items.length;
    303303        }
    304         int size = ACCEL.sizeof;
    305         ACCEL accel = new ACCEL ();
    306         byte [] buffer1 = new byte [size];     
    307         byte [] buffer2 = new byte [maxAccel * size];
     304//      int size = ACCEL.sizeof;
     305        ACCELTABLE pacctAccelTable = new ACCELTABLE();
     306        ACCEL[] accelList = new ACCEL[maxAccel];
     307//      byte [] buffer1 = new byte [size];     
     308//      byte [] buffer2 = new byte [maxAccel * size];
    308309        if (menuBar != null && items != null) {
    309310                for (int i=0; i<items.length; i++) {
     
    315316                                }
    316317                                if (parent == menuBar) {
     318                                        ACCEL accel = new ACCEL ();
    317319                                        item.fillAccel (accel);
    318                                         OS.MoveMemory (buffer1, accel, size);
    319                                         System.arraycopy (buffer1, 0, buffer2, nAccel * size, size);
     320                                        accelList[nAccel] = accel;
     321//                                      OS.MoveMemory (buffer1, accel, size);
     322//                                      System.arraycopy (buffer1, 0, buffer2, nAccel * size, size);
    320323                                        nAccel++;
    321324                                }
    322325                        }
    323326                }
     327                pacctAccelTable.cAccel = (short)nAccel;
     328                //@@TEMP(lpino): in the future we should get this value from somewhere
     329                pacctAccelTable.codepage = (short)437;
     330                pacctAccelTable.aaccel = new ACCEL[nAccel];
     331                for(int i= 0;i < nAccel;i++)
     332                    pacctAccelTable.aaccel[i] = accelList[i];
    324333        }
    325 //        hAccel = OS.WinCreateAccelTable(hab, pacctAccelTable);
    326         if (nAccel != 0) hAccel = OS.CreateAcceleratorTable (buffer2, nAccel);
     334        hAccel = OS.WinCreateAccelTable(getDisplay().hab, pacctAccelTable);
     335        System.out.println("Decorations:createAcceleratorTable - Handle of accelerator table = " + hAccel);
     336        if(!OS.WinSetAccelTable(getDisplay().hab, hAccel, frameHandle)){
     337            System.out.println("Decorations:createAcceleratorTable - Thread did not attach accelerator table to the frame");
     338            if(!OS.WinDestroyAccelTable(hAccel))
     339                System.out.println("Decorations:createAcceleratorTable - The accelerator table was not destroyed");
     340        }   
     341//      if (nAccel != 0) hAccel = OS.CreateAcceleratorTable (buffer2, nAccel);
    327342}
    328343
     
    429444
    430445void destroyAcceleratorTable () {
    431         if (hAccel != 0 && hAccel != -1) OS.DestroyAcceleratorTable (hAccel);
     446        if (hAccel != 0 && hAccel != -1) OS.WinDestroyAccelTable (hAccel);
    432447        hAccel = -1;
    433448}
     
    12641279
    12651280boolean translateAccelerator (QMSG qmsg) {
    1266     return false;
    1267 //@@TODO (dmik): later   
    1268 //      if (!isEnabled () || !isActive ()) return false;
    1269 //      if (menuBar != null && !menuBar.isEnabled ()) return false;
    1270 //      if (hAccel == -1) createAcceleratorTable ();
    1271 //      if (hAccel == 0) return false;
    1272 //      return OS.TranslateAccelerator (handle, hAccel, msg) != 0;
     1281        if (!isEnabled () || !isActive ()) return false;
     1282        if (menuBar != null && !menuBar.isEnabled ()) return false;
     1283        if (hAccel == -1) createAcceleratorTable ();
     1284        if (hAccel == 0) return false;
     1285        return OS.WinTranslateAccel (getDisplay().hab, handle, hAccel, qmsg);
     1286   
    12731287}
    12741288
     
    12861300int windowProc (int msg, int mp1, int mp2) {
    12871301//@@TODO (dmik): remove
    1288 //    switch (msg) {
     1302    switch (msg) {
    12891303//@@TODO(dmik)
    1290 //        case OS.WM_APP:
    1291 //        case OS.WM_APP+1:
    1292 //            if (hAccel == -1) createAcceleratorTable ();
    1293 //            return msg == OS.WM_APP ? nAccel : hAccel;
    1294 //    }
     1304        case OS.WM_USER:
     1305        case OS.WM_USER+1:
     1306            if (hAccel == -1) createAcceleratorTable ();
     1307            return msg == OS.WM_USER ? nAccel : hAccel;
     1308    }
    12951309    return super.windowProc (msg, mp1, mp2);
    12961310}
Note: See TracChangeset for help on using the changeset viewer.