Beispiel #1
0
static nsresult NSAPI handle_htmlevent(nsIDOMEventListener *iface, nsIDOMEvent *event)
{
    nsEventListener *This = impl_from_nsIDOMEventListener(iface);
    HTMLDocumentNode *doc = This->This->doc;
    const PRUnichar *type;
    nsIDOMEventTarget *event_target;
    nsIDOMNode *nsnode;
    nsAString type_str;
    eventid_t eid;
    nsresult nsres;

    TRACE("%p\n", This->This);

    if(!doc) {
        WARN("NULL doc\n");
        return NS_OK;
    }

    nsAString_Init(&type_str, NULL);
    nsIDOMEvent_GetType(event, &type_str);
    nsAString_GetData(&type_str, &type);
    eid = str_to_eid(type);
    nsAString_Finish(&type_str);

    nsres = nsIDOMEvent_GetTarget(event, &event_target);
    if(NS_FAILED(nsres) || !event_target) {
        ERR("GetEventTarget failed: %08x\n", nsres);
        return NS_OK;
    }

    nsres = nsIDOMEventTarget_QueryInterface(event_target, &IID_nsIDOMNode, (void**)&nsnode);
    nsIDOMEventTarget_Release(event_target);
    if(NS_FAILED(nsres)) {
        ERR("Could not get nsIDOMNode: %08x\n", nsres);
        return NS_OK;
    }

    fire_event(doc, eid, TRUE, nsnode, event, NULL);

    nsIDOMNode_Release(nsnode);

    return NS_OK;
}
Beispiel #2
0
static nsresult NSAPI handle_load(nsIDOMEventListener *iface, nsIDOMEvent *event)
{
    HTMLDocumentNode *doc = NSEVENTLIST_THIS(iface)->This->doc;
    nsIDOMHTMLElement *nsbody = NULL;
    HTMLDocumentObj *doc_obj = NULL;

    TRACE("(%p)\n", doc);

    if(!doc || !doc->basedoc.window)
        return NS_ERROR_FAILURE;
    if(doc->basedoc.doc_obj && doc->basedoc.doc_obj->basedoc.doc_node == doc)
        doc_obj = doc->basedoc.doc_obj;

    connect_scripts(doc->basedoc.window);

    if(doc_obj)
        handle_docobj_load(doc_obj);

    set_ready_state(doc->basedoc.window, READYSTATE_COMPLETE);

    if(doc_obj) {
        if(doc_obj->view_sink)
            IAdviseSink_OnViewChange(doc_obj->view_sink, DVASPECT_CONTENT, -1);

        set_statustext(doc_obj, IDS_STATUS_DONE, NULL);

        update_title(doc_obj);
    }

    if(!doc->nsdoc) {
        ERR("NULL nsdoc\n");
        return NS_ERROR_FAILURE;
    }

    nsIDOMHTMLDocument_GetBody(doc->nsdoc, &nsbody);
    if(nsbody) {
        fire_event(doc, EVENTID_LOAD, TRUE, (nsIDOMNode*)nsbody, event);
        nsIDOMHTMLElement_Release(nsbody);
    }

    return NS_OK;
}
Beispiel #3
0
mb_buf_ptr SimpleParser::parse_event(mb_buf_ptr buf_ptr)
{
	if (len == 0)
	{
		//try again
		len_found = false;
		return buf_ptr;
	}

	//just keep moving bytes into the event buffer until it reaches len number of bytes
	unsigned int num_bytes_to_copy = (buf_ptr.m_Len > len - event_str.length()) ? len - event_str.length() : buf_ptr.m_Len;
	event_str.append((char*)buf_ptr.m_Ptr, num_bytes_to_copy);

	if (event_str.length() == len)
		fire_event();

	//get rid of what we have used
	buf_ptr.m_Ptr += num_bytes_to_copy;
	buf_ptr.m_Len -= num_bytes_to_copy;

	return buf_ptr;
}
Beispiel #4
0
HRESULT dispatch_event(HTMLDOMNode *node, const WCHAR *event_name, VARIANT *event_obj, VARIANT_BOOL *cancelled)
{
    eventid_t eid;

    eid = attr_to_eid(event_name);
    if(eid == EVENTID_LAST) {
        WARN("unknown event %s\n", debugstr_w(event_name));
        return E_INVALIDARG;
    }

    if(event_obj && V_VT(event_obj) != VT_EMPTY && V_VT(event_obj) != VT_ERROR)
        FIXME("event_obj not implemented\n");

    if(!(event_info[eid].flags & EVENT_DEFAULTLISTENER)) {
        FIXME("not EVENT_DEFAULTEVENTHANDLER\n");
        return E_NOTIMPL;
    }

    fire_event(node->doc, eid, TRUE, node->nsnode, NULL);

    *cancelled = VARIANT_TRUE; /* FIXME */
    return S_OK;
}
Beispiel #5
0
  void Gamestate_II::on_event(const SDL_Event &event) {
    switch(event.type) {
    case SDL_JOYAXISMOTION:
      {
        float confidence = (float(event.jaxis.value) + 0.5f) / 32767.5f;
        const float ac = float(fabs(confidence));
        const float nm = confidence < 0.0f ? -1.0f : 1.0f;
        confidence = nm * std::min(std::max(ac - m_joystick_min, 0.0f) / (m_joystick_max - m_joystick_min), 1.0f);

        fire_event(Zeni_Input_ID(SDL_JOYAXISMOTION, event.jaxis.axis, event.jaxis.which), confidence);
      }
      break;
    case SDL_JOYBALLMOTION:
      {
        const int ac = abs(event.jball.xrel);
        const int nm = event.jball.xrel < 0.0f ? -1 : 1;
        const float confidence = nm * std::min(std::max(float(ac - m_joyball_min), 0.0f) / (m_joyball_max - m_joyball_min), 1.0f);

        fire_event(Zeni_Input_ID(SDL_JOYBALLMOTION, event.jball.ball * 2 + 0, event.jball.which), confidence);
      }
      {
        const int ac = abs(event.jball.yrel);
        const int nm = event.jball.yrel < 0.0f ? -1 : 1;
        const float confidence = nm * std::min(std::max(float(ac - m_joyball_min), 0.0f) / (m_joyball_max - m_joyball_min), 1.0f);

        fire_event(Zeni_Input_ID(SDL_JOYBALLMOTION, event.jball.ball * 2 + 1, event.jball.which), confidence);
      }
      break;
    case SDL_JOYBUTTONDOWN:
    case SDL_JOYBUTTONUP:
      {
        const float confidence = event.jbutton.state == SDL_PRESSED ? 1.0f : 0.0f;

        fire_event(Zeni_Input_ID(SDL_JOYBUTTONDOWN, event.jbutton.button, event.jbutton.which), confidence);
      }
      break;
    case SDL_JOYHATMOTION:
      {
        float confidence;

        switch(event.jhat.value) {
          case SDL_HAT_LEFT:
          case SDL_HAT_LEFTDOWN:
          case SDL_HAT_LEFTUP:
            confidence = -1.0f;
            break;

          case SDL_HAT_RIGHT:
          case SDL_HAT_RIGHTDOWN:
          case SDL_HAT_RIGHTUP:
            confidence = 1.0f;
            break;

          case SDL_HAT_CENTERED:
          case SDL_HAT_DOWN:
          case SDL_HAT_UP:
          default:
            confidence = 0.0f;
            break;
        }

        fire_event(Zeni_Input_ID(SDL_JOYHATMOTION, 0, event.jhat.which), confidence);
      }
      {
        float confidence;

        switch(event.jhat.value) {
          case SDL_HAT_DOWN:
          case SDL_HAT_LEFTDOWN:
          case SDL_HAT_RIGHTDOWN:
            confidence = -1.0f;
            break;

          case SDL_HAT_UP:
          case SDL_HAT_LEFTUP:
          case SDL_HAT_RIGHTUP:
            confidence = 1.0f;
            break;

          case SDL_HAT_CENTERED:
          case SDL_HAT_LEFT:
          case SDL_HAT_RIGHT:
          default:
            confidence = 0.0f;
            break;
        }

        fire_event(Zeni_Input_ID(SDL_JOYHATMOTION, 1, event.jhat.which), confidence);
      }
      break;
    case SDL_KEYDOWN:
    case SDL_KEYUP:
      {
        const float confidence = event.key.state == SDL_PRESSED ? 1.0f : 0.0f;

        fire_event(Zeni_Input_ID(SDL_KEYDOWN, event.key.keysym.sym, 0 /*event.key.which*/), confidence);
      }
      break;
    case SDL_MOUSEMOTION:
      {
        const int ac = abs(event.motion.xrel);
        const int nm = event.motion.xrel < 0.0f ? -1 : 1;
        const float confidence = nm * std::min(std::max(float(ac - m_mouse_min), 0.0f) / (m_mouse_max - m_mouse_min), 1.0f);

        fire_event(Zeni_Input_ID(SDL_MOUSEMOTION, 0, 0 /*event.motion.which*/), confidence);
      }
      {
        const int ac = abs(event.motion.yrel);
        const int nm = event.motion.yrel < 0.0f ? -1 : 1;
        const float confidence = nm * std::min(std::max(float(ac - m_mouse_min), 0.0f) / (m_mouse_max - m_mouse_min), 1.0f);

        fire_event(Zeni_Input_ID(SDL_MOUSEMOTION, 1, 0 /*event.motion.which*/), confidence);
      }
      break;
    case SDL_MOUSEBUTTONDOWN:
    case SDL_MOUSEBUTTONUP:
      {
        const float confidence = event.button.state == SDL_PRESSED ? 1.0f : 0.0f;

        fire_event(Zeni_Input_ID(SDL_MOUSEBUTTONDOWN, event.button.button, 0 /*event.button.which*/), confidence);
      }
      break;
    default:
      Gamestate_Base::on_event(event);
      break;
    }
  }