diff --git a/mozilla/layout/generic/nsGfxScrollFrame.cpp b/mozilla/layout/generic/nsGfxScrollFrame.cpp index 1b1bbf9073c..c31ef5e3efb 100644 --- a/mozilla/layout/generic/nsGfxScrollFrame.cpp +++ b/mozilla/layout/generic/nsGfxScrollFrame.cpp @@ -71,7 +71,7 @@ #include "nsIPrintPreviewContext.h" #include "nsIURI.h" - +#include "nsGUIEvent.h" //---------------------------------------------------------------------- class nsGfxScrollFrameInner : public nsIDocumentObserver, @@ -890,6 +890,8 @@ nsGfxScrollFrameInner::AttributeChanged(nsIDocument *aDocument, hframe->GetContent(getter_AddRefs(hcontent)); vframe->GetContent(getter_AddRefs(vcontent)); + nsIFrame * targetFrame = nsnull; + nsCOMPtr targetContent; if (hcontent.get() == aContent || vcontent.get() == aContent) { nscoord x = 0; @@ -902,6 +904,8 @@ nsGfxScrollFrameInner::AttributeChanged(nsIDocument *aDocument, // convert it to an integer x = value.ToInteger(&error); + targetFrame = hframe; + targetContent = hcontent; } if (NS_CONTENT_ATTR_HAS_VALUE == vcontent->GetAttr(kNameSpaceID_None, nsXULAtoms::curpos, value)) @@ -910,8 +914,23 @@ nsGfxScrollFrameInner::AttributeChanged(nsIDocument *aDocument, // convert it to an integer y = value.ToInteger(&error); + targetFrame = vframe; + targetContent = vcontent; } + nsScrollbarEvent event; + event.eventStructType = NS_SCROLLBAR_EVENT; + event.message = NS_SCROLL_EVENT; + event.flags = 0; + nsEventStatus status = nsEventStatus_eIgnore; + nsCOMPtr presShell; + mOuter->mPresContext->GetShell(getter_AddRefs(presShell)); + + // Fire the onScroll event. + if (presShell && targetFrame && targetContent) + presShell->HandleEventWithTarget(&event, targetFrame, targetContent, + NS_EVENT_FLAG_INIT, &status); + nsIScrollableView* s = GetScrollableView(mOuter->mPresContext); s->RemoveScrollPositionListener(this); ScrollbarChanged(mOuter->mPresContext, x*mOnePixel, y*mOnePixel); diff --git a/mozilla/layout/html/base/src/nsGfxScrollFrame.cpp b/mozilla/layout/html/base/src/nsGfxScrollFrame.cpp index 1b1bbf9073c..c31ef5e3efb 100644 --- a/mozilla/layout/html/base/src/nsGfxScrollFrame.cpp +++ b/mozilla/layout/html/base/src/nsGfxScrollFrame.cpp @@ -71,7 +71,7 @@ #include "nsIPrintPreviewContext.h" #include "nsIURI.h" - +#include "nsGUIEvent.h" //---------------------------------------------------------------------- class nsGfxScrollFrameInner : public nsIDocumentObserver, @@ -890,6 +890,8 @@ nsGfxScrollFrameInner::AttributeChanged(nsIDocument *aDocument, hframe->GetContent(getter_AddRefs(hcontent)); vframe->GetContent(getter_AddRefs(vcontent)); + nsIFrame * targetFrame = nsnull; + nsCOMPtr targetContent; if (hcontent.get() == aContent || vcontent.get() == aContent) { nscoord x = 0; @@ -902,6 +904,8 @@ nsGfxScrollFrameInner::AttributeChanged(nsIDocument *aDocument, // convert it to an integer x = value.ToInteger(&error); + targetFrame = hframe; + targetContent = hcontent; } if (NS_CONTENT_ATTR_HAS_VALUE == vcontent->GetAttr(kNameSpaceID_None, nsXULAtoms::curpos, value)) @@ -910,8 +914,23 @@ nsGfxScrollFrameInner::AttributeChanged(nsIDocument *aDocument, // convert it to an integer y = value.ToInteger(&error); + targetFrame = vframe; + targetContent = vcontent; } + nsScrollbarEvent event; + event.eventStructType = NS_SCROLLBAR_EVENT; + event.message = NS_SCROLL_EVENT; + event.flags = 0; + nsEventStatus status = nsEventStatus_eIgnore; + nsCOMPtr presShell; + mOuter->mPresContext->GetShell(getter_AddRefs(presShell)); + + // Fire the onScroll event. + if (presShell && targetFrame && targetContent) + presShell->HandleEventWithTarget(&event, targetFrame, targetContent, + NS_EVENT_FLAG_INIT, &status); + nsIScrollableView* s = GetScrollableView(mOuter->mPresContext); s->RemoveScrollPositionListener(this); ScrollbarChanged(mOuter->mPresContext, x*mOnePixel, y*mOnePixel);