Trying to make Tp go down. Switch back to the old way of doing load events.

This commit is contained in:
bzbarsky%mit.edu 2003-03-19 05:38:33 +00:00
Родитель 3610d1fc06
Коммит 38989d3add
1 изменённых файлов: 32 добавлений и 23 удалений

Просмотреть файл

@ -56,9 +56,9 @@
#include "nsIEventQueue.h" #include "nsIEventQueue.h"
#include "nsNetUtil.h" #include "nsNetUtil.h"
#include "nsIDOMDocumentEvent.h" #include "nsIPresContext.h"
#include "nsIDOMEventTarget.h" #include "nsIPresShell.h"
#include "nsIDOMEvent.h" #include "nsGUIEvent.h"
nsImageLoadingContent::nsImageLoadingContent() nsImageLoadingContent::nsImageLoadingContent()
: mObserverList(nsnull), : mObserverList(nsnull),
@ -507,21 +507,34 @@ nsImageLoadingContent::StringToURI(const nsACString& aSpec,
* Struct used to dispatch events * Struct used to dispatch events
*/ */
struct ImageEvent : PLEvent { struct ImageEvent : PLEvent {
ImageEvent(nsIDOMEventTarget* aTarget, nsIDOMEvent* aEvent) ImageEvent(nsIPresContext* aPresContext, nsIContent* aContent,
: mTarget(aTarget), const nsAString& aMessage)
mEvent(aEvent) : mPresContext(aPresContext),
mContent(aContent),
mMessage(aMessage)
{} {}
nsCOMPtr<nsIPresContext> mPresContext;
nsCOMPtr<nsIDOMEventTarget> mTarget; nsCOMPtr<nsIContent> mContent;
nsCOMPtr<nsIDOMEvent> mEvent; nsString mMessage;
}; };
PR_STATIC_CALLBACK(void*) PR_STATIC_CALLBACK(void*)
HandleImagePLEvent(PLEvent* aEvent) HandleImagePLEvent(PLEvent* aEvent)
{ {
ImageEvent* evt = NS_STATIC_CAST(ImageEvent*, aEvent); ImageEvent* evt = NS_STATIC_CAST(ImageEvent*, aEvent);
PRBool preventDefaultCalled; // we don't care... nsEventStatus estatus = nsEventStatus_eIgnore;
evt->mTarget->DispatchEvent(evt->mEvent, &preventDefaultCalled); nsEvent event;
event.eventStructType = NS_EVENT;
if (evt->mMessage == NS_LITERAL_STRING("load")) {
event.message = NS_IMAGE_LOAD;
} else {
event.message = NS_IMAGE_ERROR;
}
evt->mContent->HandleDOMEvent(evt->mPresContext, &event, nsnull,
NS_EVENT_FLAG_INIT, &estatus);
return nsnull; return nsnull;
} }
@ -554,19 +567,15 @@ nsImageLoadingContent::FireEvent(const nsAString& aEventType)
nsCOMPtr<nsIDocument> document; nsCOMPtr<nsIDocument> document;
rv = GetOurDocument(getter_AddRefs(document)); rv = GetOurDocument(getter_AddRefs(document));
nsCOMPtr<nsIDOMEventTarget> eventTarget = do_QueryInterface(this); nsCOMPtr<nsIPresShell> shell;
NS_ENSURE_TRUE(eventTarget, NS_ERROR_UNEXPECTED); document->GetShellAt(0, getter_AddRefs(shell));
NS_ENSURE_TRUE(shell, NS_ERROR_FAILURE);
nsCOMPtr<nsIPresContext> presContext;
shell->GetPresContext(getter_AddRefs(presContext));
NS_ENSURE_TRUE(presContext, NS_ERROR_FAILURE);
nsCOMPtr<nsIContent> ourContent = do_QueryInterface(this);
nsCOMPtr<nsIDOMDocumentEvent> doc = do_QueryInterface(document); ImageEvent* evt = new ImageEvent(presContext, ourContent, aEventType);
NS_ENSURE_TRUE(doc, rv);
nsCOMPtr<nsIDOMEvent> domEvent;
rv = doc->CreateEvent(NS_LITERAL_STRING("HTMLEvents"), getter_AddRefs(domEvent));
NS_ENSURE_TRUE(domEvent, rv);
domEvent->InitEvent(aEventType, PR_FALSE, PR_FALSE);
ImageEvent* evt = new ImageEvent(eventTarget, domEvent);
NS_ENSURE_TRUE(evt, NS_ERROR_OUT_OF_MEMORY); NS_ENSURE_TRUE(evt, NS_ERROR_OUT_OF_MEMORY);