mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-24 02:35:41 +00:00
fa397ea897
If, within a single refresh driver tick, the scroll position is updated by JS explicitly, and then subsequently also updated by a frame reconstruction, the scroll origin from the former (nsGkAtoms::other) can get clobbered by the latter (to nsGkAtoms::restore). The restore scroll origin is "weaker" in that it can be ignored by the APZ code in some circumstances. This is undesirable because it means the JS scroll update also gets ignored. This patch ensures that when setting the scroll origin we don't do this clobbering of stronger origins with weaker origins. MozReview-Commit-ID: DA4EHp1Debu --HG-- extra : rebase_source : 99fd1f91698a605792b2a622450f1ff31bc89101
127 lines
2.3 KiB
C++
127 lines
2.3 KiB
C++
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
/*
|
|
* a piece of state that is stored in session history when the document
|
|
* is not
|
|
*/
|
|
|
|
#ifndef nsPresState_h_
|
|
#define nsPresState_h_
|
|
|
|
#include "nsPoint.h"
|
|
#include "gfxPoint.h"
|
|
#include "nsAutoPtr.h"
|
|
|
|
class nsPresState
|
|
{
|
|
public:
|
|
nsPresState()
|
|
: mContentData(nullptr)
|
|
, mScrollState(0, 0)
|
|
, mAllowScrollOriginDowngrade(true)
|
|
, mResolution(1.0)
|
|
, mScaleToResolution(false)
|
|
, mDisabledSet(false)
|
|
, mDisabled(false)
|
|
, mDroppedDown(false)
|
|
{}
|
|
|
|
void SetScrollState(const nsPoint& aState)
|
|
{
|
|
mScrollState = aState;
|
|
}
|
|
|
|
nsPoint GetScrollPosition() const
|
|
{
|
|
return mScrollState;
|
|
}
|
|
|
|
void SetAllowScrollOriginDowngrade(bool aAllowScrollOriginDowngrade)
|
|
{
|
|
mAllowScrollOriginDowngrade = aAllowScrollOriginDowngrade;
|
|
}
|
|
|
|
bool GetAllowScrollOriginDowngrade()
|
|
{
|
|
return mAllowScrollOriginDowngrade;
|
|
}
|
|
|
|
void SetResolution(float aSize)
|
|
{
|
|
mResolution = aSize;
|
|
}
|
|
|
|
float GetResolution() const
|
|
{
|
|
return mResolution;
|
|
}
|
|
|
|
void SetScaleToResolution(bool aScaleToResolution)
|
|
{
|
|
mScaleToResolution = aScaleToResolution;
|
|
}
|
|
|
|
bool GetScaleToResolution() const
|
|
{
|
|
return mScaleToResolution;
|
|
}
|
|
|
|
void ClearNonScrollState()
|
|
{
|
|
mContentData = nullptr;
|
|
mDisabledSet = false;
|
|
}
|
|
|
|
bool GetDisabled() const
|
|
{
|
|
return mDisabled;
|
|
}
|
|
|
|
void SetDisabled(bool aDisabled)
|
|
{
|
|
mDisabled = aDisabled;
|
|
mDisabledSet = true;
|
|
}
|
|
|
|
bool IsDisabledSet() const
|
|
{
|
|
return mDisabledSet;
|
|
}
|
|
|
|
nsISupports* GetStateProperty() const
|
|
{
|
|
return mContentData;
|
|
}
|
|
|
|
void SetStateProperty(nsISupports *aProperty)
|
|
{
|
|
mContentData = aProperty;
|
|
}
|
|
|
|
void SetDroppedDown(bool aDroppedDown)
|
|
{
|
|
mDroppedDown = aDroppedDown;
|
|
}
|
|
|
|
bool GetDroppedDown() const
|
|
{
|
|
return mDroppedDown;
|
|
}
|
|
|
|
// MEMBER VARIABLES
|
|
protected:
|
|
nsCOMPtr<nsISupports> mContentData;
|
|
nsPoint mScrollState;
|
|
bool mAllowScrollOriginDowngrade;
|
|
float mResolution;
|
|
bool mScaleToResolution;
|
|
bool mDisabledSet;
|
|
bool mDisabled;
|
|
bool mDroppedDown;
|
|
};
|
|
|
|
#endif /* nsPresState_h_ */
|