part of fix for Bug 33733

added ShouldRollupOnMouseWheelEvent methos to ask if the rollup want to rollup on MouseWheel events
This commit is contained in:
rods%netscape.com 2000-05-12 20:23:04 +00:00
parent e38c1eeb76
commit f2f98584c5
5 changed files with 40 additions and 5 deletions

View File

@ -180,8 +180,10 @@ public:
//nsIRollupListener
// NS_DECL_NSIROLLUPLISTENER
NS_IMETHOD Rollup();
NS_IMETHOD ShouldRollupOnMouseWheelEvent(nsIWidget *aWidget, PRBool *aShouldRollup)
{ *aShouldRollup = PR_FALSE; return NS_OK;}
NS_IMETHOD ShouldRollupOnMouseWheelEvent(PRBool *aShouldRollup) { *aShouldRollup = PR_FALSE; return NS_OK;}
//NS_IMETHOD ShouldRollupOnMouseWheelEvent(nsIWidget *aWidget, PRBool *aShouldRollup)
//{ *aShouldRollup = PR_FALSE; return NS_OK;}
NS_IMETHOD SetFrameConstructor(nsCSSFrameConstructor *aConstructor)
{ mFrameConstructor = aConstructor; return NS_OK;} // not owner - do not addref!

View File

@ -180,8 +180,10 @@ public:
//nsIRollupListener
// NS_DECL_NSIROLLUPLISTENER
NS_IMETHOD Rollup();
NS_IMETHOD ShouldRollupOnMouseWheelEvent(nsIWidget *aWidget, PRBool *aShouldRollup)
{ *aShouldRollup = PR_FALSE; return NS_OK;}
NS_IMETHOD ShouldRollupOnMouseWheelEvent(PRBool *aShouldRollup) { *aShouldRollup = PR_FALSE; return NS_OK;}
//NS_IMETHOD ShouldRollupOnMouseWheelEvent(nsIWidget *aWidget, PRBool *aShouldRollup)
//{ *aShouldRollup = PR_FALSE; return NS_OK;}
NS_IMETHOD SetFrameConstructor(nsCSSFrameConstructor *aConstructor)
{ mFrameConstructor = aConstructor; return NS_OK;} // not owner - do not addref!

View File

@ -49,7 +49,6 @@ nsMenuDismissalListener::~nsMenuDismissalListener()
{
}
////////////////////////////////////////////////////////////////////////
nsresult
nsMenuDismissalListener::MouseDown(nsIDOMEvent* aMouseEvent)
@ -97,6 +96,13 @@ nsMenuDismissalListener::Rollup()
return NS_OK;
}
////////////////////////////////////////////////////////////////////////
NS_IMETHODIMP nsMenuDismissalListener::ShouldRollupOnMouseWheelEvent(PRBool *aShouldRollup)
{
*aShouldRollup = PR_FALSE;
return NS_OK;
}
// uggggh.
static NS_DEFINE_IID(kIFrameIID, NS_IFRAME_IID);

View File

@ -24,6 +24,8 @@
#include "nsISupports.idl"
interface nsIWidget;
[uuid(23C2BA03-6C76-11d3-96ED-0060B0FB9956)]
interface nsIRollupListener : nsISupports
{
@ -32,4 +34,11 @@ interface nsIRollupListener : nsISupports
* @result NS_Ok if no errors
*/
void Rollup();
/**
* Asks the RoolupListener if it should rollup on mousevents
* @result NS_Ok if no errors
*/
void ShouldRollupOnMouseWheelEvent(out PRBool aShould);
};

View File

@ -710,9 +710,25 @@ nsWindow :: DealWithPopups ( UINT inMsg, LRESULT* outResult )
// which make it difficult to find a message which will
// reliably be generated when the mouse wheel changes position
if ((inMsg == WM_MOUSEWHEEL) || (inMsg == uMSH_MOUSEWHEEL)) {
// XXX Turn on ifdef or remove the "else" part of this ifdef when
// Bug 33733 is fixed
#if 0
PRBool doRollup;
gRollupListener->ShouldRollupOnMouseWheelEvent(&doRollup);
if (!doRollup) {
*outResult = FALSE;
return FALSE;
} else {
gRollupListener->Rollup();
*outResult = TRUE;
return TRUE;
}
#else
gRollupListener->Rollup();
*outResult = TRUE;
return TRUE;
#endif
}
if (inMsg == WM_ACTIVATE || inMsg == WM_NCLBUTTONDOWN || inMsg == WM_LBUTTONDOWN ||