int16 Private_HandleEvent(NPP instance, void* event) { EnterCodeResource(); int16 rv = NPP_HandleEvent(instance, event); ExitCodeResource(); return rv; }
void NetscapePlugin::platformPaint(GraphicsContext* context, const IntRect& dirtyRect, bool) { CurrentPluginSetter setCurrentPlugin(this); // FIXME: Call SetWindow here if we haven't called it yet (see r59904). if (m_isWindowed) { // FIXME: Paint windowed plugins into context if context->shouldIncludeChildWindows() is true. return; } controller()->willSendEventToPlugin(); LocalWindowsContext windowsContext(context, dirtyRect, m_isTransparent); m_npWindow.type = NPWindowTypeDrawable; m_npWindow.window = windowsContext.hdc(); WINDOWPOS windowpos = { 0, 0, 0, 0, 0, 0, 0 }; IntPoint pluginLocationInRootViewCoordinates = convertToRootView(IntPoint()); windowpos.x = pluginLocationInRootViewCoordinates.x(); windowpos.y = pluginLocationInRootViewCoordinates.y(); windowpos.cx = m_pluginSize.width(); windowpos.cy = m_pluginSize.height(); NPEvent npEvent; npEvent.event = WM_WINDOWPOSCHANGED; npEvent.wParam = 0; npEvent.lParam = reinterpret_cast<uintptr_t>(&windowpos); NPP_HandleEvent(&npEvent); callSetWindow(); RECT dirtyWinRect = dirtyRect; npEvent.event = WM_PAINT; npEvent.wParam = reinterpret_cast<uintptr_t>(windowsContext.hdc()); npEvent.lParam = reinterpret_cast<uintptr_t>(&dirtyWinRect); NPP_HandleEvent(&npEvent); }
void NetscapePlugin::platformPaint(GraphicsContext* context, const IntRect& dirtyRect, bool /*isSnapshot*/) { if (m_isWindowed) return; if (!m_isStarted) { // FIXME: we should paint a missing plugin icon. return; } if (context->paintingDisabled() || !m_drawable) return; XEvent xevent; memset(&xevent, 0, sizeof(XEvent)); XGraphicsExposeEvent& exposeEvent = xevent.xgraphicsexpose; exposeEvent.type = GraphicsExpose; exposeEvent.display = x11HostDisplay(); exposeEvent.drawable = m_drawable; IntRect exposedRect(dirtyRect); exposeEvent.x = exposedRect.x(); exposeEvent.y = exposedRect.y(); // Note: in transparent mode Flash thinks width is the right and height is the bottom. // We should take it into account if we want to support transparency. exposeEvent.width = exposedRect.width(); exposeEvent.height = exposedRect.height(); NPP_HandleEvent(&xevent); if (m_pluginDisplay != x11HostDisplay()) XSync(m_pluginDisplay, false); #if PLATFORM(GTK) || (PLATFORM(EFL) && USE(CAIRO)) RefPtr<cairo_surface_t> drawableSurface = adoptRef(cairo_xlib_surface_create(m_pluginDisplay, m_drawable, static_cast<NPSetWindowCallbackStruct*>(m_npWindow.ws_info)->visual, m_pluginSize.width(), m_pluginSize.height())); cairo_t* cr = context->platformContext()->cr(); cairo_save(cr); cairo_set_source_surface(cr, drawableSurface.get(), 0, 0); cairo_rectangle(cr, exposedRect.x(), exposedRect.y(), exposedRect.width(), exposedRect.height()); cairo_clip(cr); cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE); cairo_paint(cr); cairo_restore(cr); #else notImplemented(); #endif }
bool NetscapePlugin::platformHandleKeyboardEvent(const WebKeyboardEvent& event) { // We don't generate other types of keyboard events via WebEventFactory. ASSERT(event.type() == WebEvent::KeyDown || event.type() == WebEvent::KeyUp); XEvent xEvent; initializeXEvent(xEvent); setXKeyEventFields(xEvent, event); return !NPP_HandleEvent(&xEvent); }
bool NetscapePlugin::platformHandleMouseLeaveEvent(const WebMouseEvent& event) { if (m_isWindowed) return false; XEvent xEvent; initializeXEvent(xEvent); setXCrossingEventFields(xEvent, event, convertToRootView(IntPoint()), LeaveNotify); return !NPP_HandleEvent(&xEvent); }
bool NetscapePlugin::platformHandleWheelEvent(const WebWheelEvent& event) { if (m_isWindowed) return false; XEvent xEvent; initializeXEvent(xEvent); setXButtonEventFieldsByWebWheelEvent(xEvent, event, convertToRootView(IntPoint())); return !NPP_HandleEvent(&xEvent); }
bool NetscapePlugin::platformHandleMouseLeaveEvent(const WebMouseEvent& event) { CurrentPluginSetter setCurrentPlugin(this); if (m_isWindowed) return false; controller()->willSendEventToPlugin(); NPEvent npEvent = toNP(event); NPP_HandleEvent(&npEvent); return true; }
void NetscapePlugin::platformSetFocus(bool focusIn) { if (m_isWindowed) return; XEvent xEvent; initializeXEvent(xEvent); XFocusChangeEvent& focusEvent = xEvent.xfocus; focusEvent.type = focusIn ? kFocusInType : kFocusOutType; focusEvent.mode = NotifyNormal; focusEvent.detail = NotifyDetailNone; NPP_HandleEvent(&xEvent); }
void NetscapePlugin::platformSetFocus(bool hasFocus) { CurrentPluginSetter setCurrentPlugin(this); if (m_isWindowed) return; controller()->willSendEventToPlugin(); NPEvent npEvent; npEvent.event = hasFocus ? WM_SETFOCUS : WM_KILLFOCUS; npEvent.wParam = 0; npEvent.lParam = 0; NPP_HandleEvent(&npEvent); }
bool NetscapePlugin::platformHandleMouseEvent(const WebMouseEvent& event) { if (m_isWindowed) return false; if ((event.type() == WebEvent::MouseDown || event.type() == WebEvent::MouseUp) && event.button() == WebMouseEvent::RightButton && quirks().contains(PluginQuirks::IgnoreRightClickInWindowlessMode)) return false; XEvent xEvent; initializeXEvent(xEvent); switch (event.type()) { case WebEvent::MouseDown: case WebEvent::MouseUp: setXButtonEventFields(xEvent, event, convertToRootView(IntPoint())); break; case WebEvent::MouseMove: setXMotionEventFields(xEvent, event, convertToRootView(IntPoint())); break; case WebEvent::NoType: case WebEvent::Wheel: case WebEvent::KeyDown: case WebEvent::KeyUp: case WebEvent::RawKeyDown: case WebEvent::Char: #if ENABLE(GESTURE_EVENTS) case WebEvent::GestureScrollBegin: case WebEvent::GestureScrollEnd: #endif #if ENABLE(TOUCH_EVENTS) case WebEvent::TouchStart: case WebEvent::TouchMove: case WebEvent::TouchEnd: case WebEvent::TouchCancel: #endif return false; } return !NPP_HandleEvent(&xEvent); }
int16 Private_HandleEvent(NPP instance, void* event) { int16 rv = NPP_HandleEvent(instance, event); return rv; }