/**
 * Override QMultiLineEdit to notify Java peer of traversal out.
 *
 * @param keyEvent key event to handle
 */
void TextFieldBody::keyPressEvent(QKeyEvent *key)
{
    int k = key->key();
    // always handle select event because it switches 
    // between the modal and non-modal modes
#ifdef QT_KEYPAD_MODE
    if (k == Qt::Key_Select) {
        QMultiLineEdit::keyPressEvent(key);
    } else if (isModalEditing()) {
#endif
        if (isReadOnly()) {
            if ((k == Qt::Key_Up && rowIsVisible(0))
                || (k == Qt::Key_Down && rowIsVisible(numRows() - 1)))  {
                
                PlatformMScreen * mscreen = PlatformMScreen::getMScreen();
                mscreen->keyPressEvent(key);
                
            } else {
                QMultiLineEdit::keyPressEvent(key);
            }
        } else {
            int line;
            int col;
            QMultiLineEdit::getCursorPosition(&line, &col);
            if ((k == Qt::Key_Up && line == 0)  
                || (k == Qt::Key_Down && (line == numLines() - 1))){
                
                PlatformMScreen * mscreen = PlatformMScreen::getMScreen();
                mscreen->keyPressEvent(key);
                
            } else {
                QMultiLineEdit::keyPressEvent(key);
            }
        }
#ifdef QT_KEYPAD_MODE
    } else {
        // not handle events while it's in not modal state
        key->ignore();
    }
#endif
}
void CustomItem::keyPressEvent(QKeyEvent *key)
{
  PlatformMScreen * mscreen = PlatformMScreen::getMScreen();
  mscreen->keyPressEvent(key);
}