Aleksandar Vasilev wrote:
Hello,

Is there a way to globally intercept the mouse messages that are sent to the embedded mozilla rendering window (from the embedding application, written in C++). I tried to do it by adding a DOM event listener to the DOM document object, which captures all mousemove events, and it works, but only for the currently loaded page. When a new page is loaded, the event target is no longer valid. What I want is a persistent way to trap mouse events.
Thanks in advance

Regards

Alex

 In *.h

#include "nsIDOMMouseListener.h"


your_class1 : public nsIDOMMouseListener and other inplements if you need.


overwrite this function:

//nsIDOMMouseListener
        NS_IMETHOD MouseDown(nsIDOMEvent* aDOMEvent);
        NS_IMETHOD MouseUp(nsIDOMEvent* aDOMEvent);
        NS_IMETHOD MouseClick(nsIDOMEvent* aDOMEvent);
        NS_IMETHOD MouseDblClick(nsIDOMEvent* aDOMEvent);
        NS_IMETHOD MouseOver(nsIDOMEvent* aDOMEvent);
        NS_IMETHOD MouseOut(nsIDOMEvent* aDOMEvent);
        NS_IMETHOD HandleEvent(nsIDOMEvent *event);



after... to handle your mouse messages:


///mouse event
        // our event receiver
        nsCOMPtr<nsIDOMEventReceiver>  mEventReceiver;
        nsCOMPtr<nsPIDOMWindow> piWin;
        GetPIDOMWindow(getter_AddRefs(piWin));
        if (piWin)
        {
                nsCOMPtr<nsIChromeEventHandler> chromeHandler;
                piWin->GetChromeEventHandler(getter_AddRefs(chromeHandler));

                mEventReceiver = do_QueryInterface(chromeHandler);

                nsIDOMEventListener *eventListener =
NS_STATIC_CAST(nsIDOMEventListener *, NS_STATIC_CAST(nsIDOMMouseListener *, your_class1));
                rv = mEventReceiver->AddEventListenerByIID(eventListener,
                        NS_GET_IID(nsIDOMMouseListener));
        }


and thats all!!!
_______________________________________________
mozilla-embedding mailing list
mozilla-embedding@mozilla.org
http://mail.mozilla.org/listinfo/mozilla-embedding

Reply via email to