⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 evt.cc

📁 linux下建立JAVA虚拟机的源码KAFFE
💻 CC
📖 第 1 页 / 共 2 页
字号:
/** * evt.c -  * * Copyright (c) 1998 *      Transvirtual Technologies, Inc.  All rights reserved. * * Copyright (c) 2002, 2003, 2004, 2005 *	Kaffe.org contributors, see ChangeLog for details.  All rights reserved. * * See the file "license.terms" for information on usage and redistribution  * of this file.  */#ifdef QPE#  include <qpe/qpeapplication.h>#else#  include <qapplication.h>#endif#include <qevent.h>#include <qqueue.h>#include <qwidget.h>#include "evt.h"#include "toolkit.h"#include "keysyms.h"jclass     AWTEvent;jclass     ComponentEvent;jclass     MouseEvent;jclass     FocusEvent;jclass     WindowEvent;jclass     KeyEvent;jclass     PaintEvent;jclass     WMEvent;jmethodID  getComponentEvent;jmethodID  getMouseEvent;jmethodID  getFocusEvent;jmethodID  getWindowEvent;jmethodID  getKeyEvent;jmethodID  getPaintEvent;jmethodID  getWMEvent;extern void pollJavaClipboard(JNIEnv *env);extern jobject clearJavaClipboard(JNIEnv *env);#define    COMPONENT_RESIZED    101#define    WINDOW_CLOSING       201#define    WINDOW_CLOSED        202#define    WINDOW_ICONIFIED     203#define    WINDOW_DEICONIFIED   204#define    KEY_PRESSED          401#define    KEY_RELEASED         402#define    MOUSE_PRESSED        501#define    MOUSE_RELEASED       502#define    MOUSE_MOVED          503#define    MOUSE_ENTERED        504#define    MOUSE_EXITED         505#define    PAINT                800#define    UPDATE               801#define    FOCUS_GAINED        1004#define    FOCUS_LOST          1005#define    WM_KILLED           1905class EventPacket {public:  EventPacket(QEvent* evt, int idx) { event = evt; srcIdx = idx; }  QEvent* getEvent() { return event; }  int getIndex() { return srcIdx; }protected:  QEvent* event;  int srcIdx;};#ifdef QPEextern QPEApplication *qapp;#elseextern QApplication *qapp;#endifQQueue<EventPacket> g_event_queue;EventDispatcher::EventDispatcher(QWidget *parent, const char *name) {  if(parent)    parent->installEventFilter(this);}bool EventDispatcher::eventFilter(QObject* o, QEvent* e) {  DBG(AWT_EVT, qqDebug("event type=%d widget=%p\n", e->type(), o));  QEvent* newEvent = NULL;  EventPacket* packet = NULL;  bool processed = false;  if (X->srcIdx == 0 || getSourceIdx(X, o) == 0xffffffff)    return QWidget::eventFilter(o, e);  switch(e->type()) {    case QEvent::Clipboard: {      newEvent = new QEvent(e->type());      processed = true;      break;    }    case QEvent::Destroy:    case QEvent::Reparent: {      newEvent = new QEvent(e->type());      processed = true;      break;    }    case QEvent::Show: {      DBG(AWT_EVT, qqDebug("Event Show: srcIdx=%d\n", X->srcIdx));#if (QT_VERSION < 300)      newEvent = (QEvent*) new QShowEvent(true);#else      QShowEvent* tmpShowEvent = (QShowEvent*)e;      newEvent = (QEvent*) new QShowEvent();#endif      processed = true;      break;    }        case QEvent::Hide: {      DBG(AWT_EVT, qqDebug("Event Hid: srcIdx=%d\n", X->srcIdx));#if (QT_VERSION < 300)      newEvent = (QEvent*) new QHideEvent(true);#else      QHideEvent* tmpHideEvent = (QHideEvent*)e;      newEvent = (QEvent*) new QHideEvent();#endif      processed = true;      break;    }        case QEvent::FocusIn:    case QEvent::FocusOut: {      DBG(AWT_EVT, qqDebug("Event Focus: srcIdx=%d\n", X->srcIdx));      QFocusEvent* tmpFocusEvent = (QFocusEvent*)e;      newEvent = (QEvent*) new QFocusEvent(tmpFocusEvent->type());      ((QFocusEvent*)newEvent)->setReason(tmpFocusEvent->reason());      processed = true;      break;    }    case QEvent::KeyPress:    case QEvent::KeyRelease: {      DBG(AWT_EVT, qqDebug("Event Key: srcIdx=%d\n", X->srcIdx));      QKeyEvent* tmpKeyEvent = (QKeyEvent*)e;      newEvent = (QEvent*) new QKeyEvent(tmpKeyEvent->type(),tmpKeyEvent->key(),	tmpKeyEvent->ascii(), tmpKeyEvent->state(), tmpKeyEvent->text(),	tmpKeyEvent->isAutoRepeat(), tmpKeyEvent->count());      processed = true;      break;    }    case QEvent::MouseButtonPress:    case QEvent::MouseButtonRelease:    case QEvent::MouseMove: {      DBG(AWT_EVT, qqDebug("Event MouseButton: srcIdx=%d\n", X->srcIdx));      QMouseEvent* tmpMouseEvent = (QMouseEvent*)e;      newEvent = (QEvent*) new QMouseEvent(tmpMouseEvent->type(),        tmpMouseEvent->pos(), tmpMouseEvent->button(),        tmpMouseEvent->state());      processed = true;      break;    }    case QEvent::Paint: {      DBG(AWT_EVT, qqDebug("Event Paint: srcIdx=%d\n", X->srcIdx));      QPaintEvent* tmpPaintEvent = (QPaintEvent*)e;      newEvent = (QEvent*) new QPaintEvent(tmpPaintEvent->rect(),        tmpPaintEvent->erased());      processed = true;      break;    }    case QEvent::Move: {      DBG(AWT_EVT, qqDebug("Event Move: srcIdx=%d\n", X->srcIdx));      QPoint data(((QWidget*)o)->width(), ((QWidget*)o)->height());      QMoveEvent* tmpMoveEvent = (QMoveEvent*)e;      // Hide width/height in oldPos of newEvent      newEvent = (QEvent*) new QMoveEvent(tmpMoveEvent->pos(),        data);            processed = true;      break;    }    case QEvent::Resize: {      DBG(AWT_EVT, qqDebug("Event Resize: srcIdx=%d\n", X->srcIdx));      QSize data(((QWidget*)o)->x(), ((QWidget*)o)->y());      QResizeEvent* tmpResizeEvent = (QResizeEvent*)e;      // Hide x/y in oldSize of newEvent      newEvent = (QEvent*) new QResizeEvent(tmpResizeEvent->size(),        data);      processed = true;      break;    }  }  if(processed == true) {    packet = new EventPacket(newEvent, getSourceIdx(X, o)/*X->srcIdx*/);    g_event_queue.enqueue(packet);  }  return QWidget::eventFilter(o, e);}EventDispatcher* eventDispatcher;void forwardFocus ( int cmd, void* wnd );  /* from wnd.c *//** * Qt-X-Java key modifier mapping *                                     altGr   : PC *     shift       -    ctrl     alt    meta   : Java *     Shift    Lock    Ctrl    Mod1    Mod3   : X      symbol *  ---------------------------------------------------------- *         1       1       2       8       4   : Java   value *         1       2       4       8      32   : X * ShiftButton    NA ControlButton  AltButton  : QT */static inline int keyMod ( int keyState ){  int mod = 0;  if ( keyState & Qt::ShiftButton )   mod |= 1;  if ( keyState & Qt::ControlButton ) mod |= 2;  if ( keyState & Qt::AltButton )     mod |= 8;  return mod;}static inline int mapButton( int button ){  if ( button & Qt::LeftButton) return 1;  if ( button & Qt::RightButton) return 3;  if ( button & Qt::MidButton) return 2;  return 1;}   #if defined(KAFFE_VMDEBUG)static char *eventStr ( int evtId ){  switch (evtId) {  case COMPONENT_RESIZED: return "ComponentResized";  case WINDOW_CLOSING: return "WindowClosing";  case WINDOW_CLOSED: return "WindowClosed";  case WINDOW_ICONIFIED: return "WindowIconified";  case WINDOW_DEICONIFIED: return "WindowDeiconified";  case KEY_PRESSED: return "KeyPressed";  case KEY_RELEASED: return "KeyReleased";  case MOUSE_PRESSED: return "MousePressed";  case MOUSE_RELEASED: return "MouseReleased";  case MOUSE_MOVED: return "MouseMoved";  case MOUSE_ENTERED: return "MouseEntered";  case MOUSE_EXITED: return "MouseExited";  case PAINT: return "Paint";  case UPDATE: return "Update";	  case FOCUS_GAINED: return "FocusGained";  case FOCUS_LOST: return "FocusLost";  case WM_KILLED: return "WMKilled";  default: return "<unknown>";  }};#endifjobject Java_java_awt_Toolkit_evtInit(JNIEnv* env, jclass clazz){  jclass Component;  DBG(AWT_EVT, qqDebug("evtInit\n"));  if ( ComponentEvent != NULL ){    DBG(AWT_EVT, qqDebug("evtInit called twice\n"));    return NULL;  }  if(qapp == NULL) {    DBG(AWT_EVT, qqDebug("evtInit: qapp not initialized!\n"));  }  eventDispatcher = new EventDispatcher();  qapp->installEventFilter(eventDispatcher);  ComponentEvent = env->FindClass("java/awt/ComponentEvt");  MouseEvent     = env->FindClass("java/awt/MouseEvt");  FocusEvent     = env->FindClass("java/awt/FocusEvt");  WindowEvent    = env->FindClass("java/awt/WindowEvt");  KeyEvent       = env->FindClass("java/awt/KeyEvt");  PaintEvent     = env->FindClass("java/awt/PaintEvt");  WMEvent        = env->FindClass("java/awt/WMEvent");  getComponentEvent = env->GetStaticMethodID( ComponentEvent, "getEvent", 												 "(IIIIII)Ljava/awt/ComponentEvt;");  getMouseEvent     = env->GetStaticMethodID( MouseEvent, "getEvent",												 "(IIIII)Ljava/awt/MouseEvt;");  getFocusEvent     = env->GetStaticMethodID( FocusEvent, "getEvent",												 "(IIZ)Ljava/awt/FocusEvt;");  getWindowEvent    = env->GetStaticMethodID( WindowEvent, "getEvent",												 "(II)Ljava/awt/WindowEvt;");  getKeyEvent       = env->GetStaticMethodID( KeyEvent, "getEvent",

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -