mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-28 21:28:55 +00:00
Bug 957445: Part 3 - combines nsIScrollbarOwner with nsIScrollbarMediator, r=mats
This commit is contained in:
parent
14dc1158ee
commit
29c0f10b91
@ -2254,7 +2254,7 @@ EventStateManager::ComputeScrollTarget(nsIFrame* aTargetFrame,
|
||||
}
|
||||
|
||||
// Overload ComputeScrollTarget method to allow passing "test" dx and dy when looking
|
||||
// for which scrollbarowners to activate when two finger down on trackpad
|
||||
// for which scrollbarmediators to activate when two finger down on trackpad
|
||||
// and before any actual motion
|
||||
nsIScrollableFrame*
|
||||
EventStateManager::ComputeScrollTarget(nsIFrame* aTargetFrame,
|
||||
|
@ -430,13 +430,13 @@ ScrollbarsForWheel::SetActiveScrollTarget(nsIScrollableFrame* aScrollTarget)
|
||||
if (!sHadWheelStart) {
|
||||
return;
|
||||
}
|
||||
nsIScrollbarOwner* scrollbarOwner = do_QueryFrame(aScrollTarget);
|
||||
if (!scrollbarOwner) {
|
||||
nsIScrollbarMediator* scrollbarMediator = do_QueryFrame(aScrollTarget);
|
||||
if (!scrollbarMediator) {
|
||||
return;
|
||||
}
|
||||
sHadWheelStart = false;
|
||||
sActiveOwner = do_QueryFrame(aScrollTarget);
|
||||
scrollbarOwner->ScrollbarActivityStarted();
|
||||
scrollbarMediator->ScrollbarActivityStarted();
|
||||
}
|
||||
|
||||
/* static */ void
|
||||
@ -452,9 +452,9 @@ ScrollbarsForWheel::MayInactivate()
|
||||
/* static */ void
|
||||
ScrollbarsForWheel::Inactivate()
|
||||
{
|
||||
nsIScrollbarOwner* scrollbarOwner = do_QueryFrame(sActiveOwner);
|
||||
if (scrollbarOwner) {
|
||||
scrollbarOwner->ScrollbarActivityStopped();
|
||||
nsIScrollbarMediator* scrollbarMediator = do_QueryFrame(sActiveOwner);
|
||||
if (scrollbarMediator) {
|
||||
scrollbarMediator->ScrollbarActivityStopped();
|
||||
}
|
||||
sActiveOwner = nullptr;
|
||||
DeactivateAllTemporarilyActivatedScrollTargets();
|
||||
@ -498,11 +498,11 @@ ScrollbarsForWheel::TemporarilyActivateAllPossibleScrollTargets(
|
||||
nsIScrollableFrame* target =
|
||||
aESM->ComputeScrollTarget(aTargetFrame, dir->deltaX, dir->deltaY, aEvent,
|
||||
EventStateManager::COMPUTE_DEFAULT_ACTION_TARGET);
|
||||
nsIScrollbarOwner* scrollbarOwner = do_QueryFrame(target);
|
||||
if (scrollbarOwner) {
|
||||
nsIScrollbarMediator* scrollbarMediator = do_QueryFrame(target);
|
||||
if (scrollbarMediator) {
|
||||
nsIFrame* targetFrame = do_QueryFrame(target);
|
||||
*scrollTarget = targetFrame;
|
||||
scrollbarOwner->ScrollbarActivityStarted();
|
||||
scrollbarMediator->ScrollbarActivityStarted();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -513,9 +513,9 @@ ScrollbarsForWheel::DeactivateAllTemporarilyActivatedScrollTargets()
|
||||
for (size_t i = 0; i < kNumberOfTargets; i++) {
|
||||
nsWeakFrame* scrollTarget = &sActivatedScrollTargets[i];
|
||||
if (*scrollTarget) {
|
||||
nsIScrollbarOwner* scrollbarOwner = do_QueryFrame(*scrollTarget);
|
||||
if (scrollbarOwner) {
|
||||
scrollbarOwner->ScrollbarActivityStopped();
|
||||
nsIScrollbarMediator* scrollbarMediator = do_QueryFrame(*scrollTarget);
|
||||
if (scrollbarMediator) {
|
||||
scrollbarMediator->ScrollbarActivityStopped();
|
||||
}
|
||||
*scrollTarget = nullptr;
|
||||
}
|
||||
|
@ -1870,9 +1870,9 @@ TabChild::RecvNotifyAPZStateChange(const ViewID& aViewId,
|
||||
case APZStateChange::TransformBegin:
|
||||
{
|
||||
nsIScrollableFrame* sf = nsLayoutUtils::FindScrollableFrameFor(aViewId);
|
||||
nsIScrollbarOwner* scrollbarOwner = do_QueryFrame(sf);
|
||||
if (scrollbarOwner) {
|
||||
scrollbarOwner->ScrollbarActivityStarted();
|
||||
nsIScrollbarMediator* scrollbarMediator = do_QueryFrame(sf);
|
||||
if (scrollbarMediator) {
|
||||
scrollbarMediator->ScrollbarActivityStarted();
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIDocument> doc = GetDocument();
|
||||
@ -1888,9 +1888,9 @@ TabChild::RecvNotifyAPZStateChange(const ViewID& aViewId,
|
||||
case APZStateChange::TransformEnd:
|
||||
{
|
||||
nsIScrollableFrame* sf = nsLayoutUtils::FindScrollableFrameFor(aViewId);
|
||||
nsIScrollbarOwner* scrollbarOwner = do_QueryFrame(sf);
|
||||
if (scrollbarOwner) {
|
||||
scrollbarOwner->ScrollbarActivityStopped();
|
||||
nsIScrollbarMediator* scrollbarMediator = do_QueryFrame(sf);
|
||||
if (scrollbarMediator) {
|
||||
scrollbarMediator->ScrollbarActivityStopped();
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIDocument> doc = GetDocument();
|
||||
|
@ -4,7 +4,7 @@
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "ScrollbarActivity.h"
|
||||
#include "nsIScrollbarOwner.h"
|
||||
#include "nsIScrollbarMediator.h"
|
||||
#include "nsIContent.h"
|
||||
#include "nsIDOMEvent.h"
|
||||
#include "nsIDOMElementCSSInlineStyle.h"
|
||||
|
@ -13,7 +13,7 @@
|
||||
#include "nsRefreshDriver.h"
|
||||
|
||||
class nsIContent;
|
||||
class nsIScrollbarOwner;
|
||||
class nsIScrollbarMediator;
|
||||
class nsITimer;
|
||||
class nsIAtom;
|
||||
|
||||
@ -58,7 +58,7 @@ namespace layout {
|
||||
class ScrollbarActivity MOZ_FINAL : public nsIDOMEventListener,
|
||||
public nsARefreshObserver {
|
||||
public:
|
||||
ScrollbarActivity(nsIScrollbarOwner* aScrollableFrame)
|
||||
ScrollbarActivity(nsIScrollbarMediator* aScrollableFrame)
|
||||
: mScrollableFrame(aScrollableFrame)
|
||||
, mNestedActivityCounter(0)
|
||||
, mIsActive(false)
|
||||
@ -135,7 +135,7 @@ protected:
|
||||
return TimeDuration::FromMilliseconds(mScrollbarFadeDuration);
|
||||
}
|
||||
|
||||
nsIScrollbarOwner* mScrollableFrame;
|
||||
nsIScrollbarMediator* mScrollableFrame;
|
||||
TimeStamp mFadeBeginTime;
|
||||
nsCOMPtr<nsITimer> mFadeBeginTimer;
|
||||
nsCOMPtr<nsIDOMEventTarget> mHorizontalScrollbar; // null while inactive
|
||||
|
@ -25,7 +25,6 @@ EXPORTS += [
|
||||
'nsIObjectFrame.h',
|
||||
'nsIPageSequenceFrame.h',
|
||||
'nsIScrollableFrame.h',
|
||||
'nsIScrollbarOwner.h',
|
||||
'nsIScrollPositionListener.h',
|
||||
'nsIStatefulFrame.h',
|
||||
'nsObjectFrame.h',
|
||||
|
@ -55,7 +55,6 @@ FRAME_ID(nsISVGChildFrame)
|
||||
FRAME_ID(nsISVGSVGFrame)
|
||||
FRAME_ID(nsIScrollableFrame)
|
||||
FRAME_ID(nsIScrollbarMediator)
|
||||
FRAME_ID(nsIScrollbarOwner)
|
||||
FRAME_ID(nsISelectControlFrame)
|
||||
FRAME_ID(nsIStatefulFrame)
|
||||
FRAME_ID(nsITableCellLayout)
|
||||
|
@ -895,7 +895,6 @@ nsHTMLScrollFrame::AccessibleType()
|
||||
|
||||
NS_QUERYFRAME_HEAD(nsHTMLScrollFrame)
|
||||
NS_QUERYFRAME_ENTRY(nsIAnonymousContentCreator)
|
||||
NS_QUERYFRAME_ENTRY(nsIScrollbarOwner)
|
||||
NS_QUERYFRAME_ENTRY(nsIScrollableFrame)
|
||||
NS_QUERYFRAME_ENTRY(nsIStatefulFrame)
|
||||
NS_QUERYFRAME_ENTRY(nsIScrollbarMediator)
|
||||
@ -1339,7 +1338,6 @@ nsXULScrollFrame::DoLayout(nsBoxLayoutState& aState)
|
||||
|
||||
NS_QUERYFRAME_HEAD(nsXULScrollFrame)
|
||||
NS_QUERYFRAME_ENTRY(nsIAnonymousContentCreator)
|
||||
NS_QUERYFRAME_ENTRY(nsIScrollbarOwner)
|
||||
NS_QUERYFRAME_ENTRY(nsIScrollableFrame)
|
||||
NS_QUERYFRAME_ENTRY(nsIStatefulFrame)
|
||||
NS_QUERYFRAME_ENTRY(nsIScrollbarMediator)
|
||||
|
@ -561,14 +561,6 @@ public:
|
||||
virtual void AppendAnonymousContentTo(nsTArray<nsIContent*>& aElements,
|
||||
uint32_t aFilter) MOZ_OVERRIDE;
|
||||
|
||||
// nsIScrollbarOwner
|
||||
virtual nsIFrame* GetScrollbarBox(bool aVertical) MOZ_OVERRIDE {
|
||||
return mHelper.GetScrollbarBox(aVertical);
|
||||
}
|
||||
|
||||
virtual void ScrollbarActivityStarted() const MOZ_OVERRIDE;
|
||||
virtual void ScrollbarActivityStopped() const MOZ_OVERRIDE;
|
||||
|
||||
// nsIScrollableFrame
|
||||
virtual nsIFrame* GetScrolledFrame() const MOZ_OVERRIDE {
|
||||
return mHelper.GetScrolledFrame();
|
||||
@ -755,6 +747,11 @@ public:
|
||||
mHelper.ThumbMoved(aScrollbar, aOldPos, aNewPos);
|
||||
}
|
||||
virtual void VisibilityChanged(bool aVisible) {}
|
||||
virtual nsIFrame* GetScrollbarBox(bool aVertical) MOZ_OVERRIDE {
|
||||
return mHelper.GetScrollbarBox(aVertical);
|
||||
}
|
||||
virtual void ScrollbarActivityStarted() const MOZ_OVERRIDE;
|
||||
virtual void ScrollbarActivityStopped() const MOZ_OVERRIDE;
|
||||
|
||||
#ifdef DEBUG_FRAME_DUMP
|
||||
virtual nsresult GetFrameName(nsAString& aResult) const MOZ_OVERRIDE;
|
||||
@ -906,14 +903,6 @@ public:
|
||||
static void AdjustReflowStateForPrintPreview(nsBoxLayoutState& aState, bool& aSetBack);
|
||||
static void AdjustReflowStateBack(nsBoxLayoutState& aState, bool aSetBack);
|
||||
|
||||
// nsIScrollbarOwner
|
||||
virtual nsIFrame* GetScrollbarBox(bool aVertical) MOZ_OVERRIDE {
|
||||
return mHelper.GetScrollbarBox(aVertical);
|
||||
}
|
||||
|
||||
virtual void ScrollbarActivityStarted() const MOZ_OVERRIDE;
|
||||
virtual void ScrollbarActivityStopped() const MOZ_OVERRIDE;
|
||||
|
||||
// nsIScrollableFrame
|
||||
virtual nsIFrame* GetScrolledFrame() const MOZ_OVERRIDE {
|
||||
return mHelper.GetScrolledFrame();
|
||||
@ -1104,6 +1093,12 @@ public:
|
||||
mHelper.ThumbMoved(aScrollbar, aOldPos, aNewPos);
|
||||
}
|
||||
virtual void VisibilityChanged(bool aVisible) {}
|
||||
virtual nsIFrame* GetScrollbarBox(bool aVertical) MOZ_OVERRIDE {
|
||||
return mHelper.GetScrollbarBox(aVertical);
|
||||
}
|
||||
|
||||
virtual void ScrollbarActivityStarted() const MOZ_OVERRIDE;
|
||||
virtual void ScrollbarActivityStopped() const MOZ_OVERRIDE;
|
||||
|
||||
#ifdef DEBUG_FRAME_DUMP
|
||||
virtual nsresult GetFrameName(nsAString& aResult) const MOZ_OVERRIDE;
|
||||
|
@ -13,7 +13,6 @@
|
||||
#include "nsCoord.h"
|
||||
#include "ScrollbarStyles.h"
|
||||
#include "mozilla/gfx/Point.h"
|
||||
#include "nsIScrollbarOwner.h"
|
||||
#include "nsIScrollbarMediator.h"
|
||||
#include "Units.h"
|
||||
|
||||
@ -33,8 +32,7 @@ class nsIAtom;
|
||||
* APIs for examining scroll state, observing changes to scroll state,
|
||||
* and triggering scrolling.
|
||||
*/
|
||||
class nsIScrollableFrame : public nsIScrollbarOwner,
|
||||
public nsIScrollbarMediator {
|
||||
class nsIScrollableFrame : public nsIScrollbarMediator {
|
||||
public:
|
||||
typedef mozilla::CSSIntPoint CSSIntPoint;
|
||||
|
||||
|
@ -1,35 +0,0 @@
|
||||
/* -*- 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/. */
|
||||
|
||||
#ifndef nsIScrollbarOwner_h___
|
||||
#define nsIScrollbarOwner_h___
|
||||
|
||||
#include "nsQueryFrame.h"
|
||||
|
||||
class nsIDOMEventTarget;
|
||||
class nsIFrame;
|
||||
|
||||
/**
|
||||
* An interface that represents a frame which manages scrollbars.
|
||||
*/
|
||||
class nsIScrollbarOwner : public nsQueryFrame {
|
||||
public:
|
||||
NS_DECL_QUERYFRAME_TARGET(nsIScrollbarOwner)
|
||||
|
||||
/**
|
||||
* Obtain the frame for the horizontal or vertical scrollbar, or null
|
||||
* if there is no such box.
|
||||
*/
|
||||
virtual nsIFrame* GetScrollbarBox(bool aVertical) = 0;
|
||||
|
||||
/**
|
||||
* Show or hide scrollbars on 2 fingers touch.
|
||||
* Subclasses should call their ScrollbarActivity's corresponding methods.
|
||||
*/
|
||||
virtual void ScrollbarActivityStarted() const = 0;
|
||||
virtual void ScrollbarActivityStopped() const = 0;
|
||||
};
|
||||
|
||||
#endif
|
@ -10,8 +10,10 @@
|
||||
#include "nsCoord.h"
|
||||
|
||||
class nsScrollbarFrame;
|
||||
class nsIDOMEventTarget;
|
||||
class nsIFrame;
|
||||
|
||||
class nsIScrollbarMediator
|
||||
class nsIScrollbarMediator : public nsQueryFrame
|
||||
{
|
||||
public:
|
||||
NS_DECL_QUERYFRAME_TARGET(nsIScrollbarMediator)
|
||||
@ -45,6 +47,18 @@ public:
|
||||
nscoord aOldPos,
|
||||
nscoord aNewPos) = 0;
|
||||
virtual void VisibilityChanged(bool aVisible) = 0;
|
||||
|
||||
/**
|
||||
* Obtain the frame for the horizontal or vertical scrollbar, or null
|
||||
* if there is no such box.
|
||||
*/
|
||||
virtual nsIFrame* GetScrollbarBox(bool aVertical) = 0;
|
||||
/**
|
||||
* Show or hide scrollbars on 2 fingers touch.
|
||||
* Subclasses should call their ScrollbarActivity's corresponding methods.
|
||||
*/
|
||||
virtual void ScrollbarActivityStarted() const = 0;
|
||||
virtual void ScrollbarActivityStopped() const = 0;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -431,6 +431,13 @@ nsListBoxBodyFrame::VisibilityChanged(bool aVisible)
|
||||
}
|
||||
}
|
||||
|
||||
nsIFrame*
|
||||
nsListBoxBodyFrame::GetScrollbarBox(bool aVertical)
|
||||
{
|
||||
nsIScrollableFrame* scrollFrame = nsLayoutUtils::GetScrollableFrameFor(this);
|
||||
return scrollFrame ? scrollFrame->GetScrollbarBox(true) : nullptr;
|
||||
}
|
||||
|
||||
void
|
||||
nsListBoxBodyFrame::UpdateIndex(int32_t aDirection)
|
||||
{
|
||||
|
@ -64,6 +64,9 @@ public:
|
||||
int32_t aOldPos,
|
||||
int32_t aNewPos) MOZ_OVERRIDE;
|
||||
virtual void VisibilityChanged(bool aVisible) MOZ_OVERRIDE;
|
||||
virtual nsIFrame* GetScrollbarBox(bool aVertical) MOZ_OVERRIDE;
|
||||
virtual void ScrollbarActivityStarted() const MOZ_OVERRIDE {}
|
||||
virtual void ScrollbarActivityStopped() const MOZ_OVERRIDE {}
|
||||
|
||||
|
||||
// nsIReflowCallback
|
||||
|
@ -103,7 +103,6 @@ NS_IMPL_FRAMEARENA_HELPERS(nsTreeBodyFrame)
|
||||
|
||||
NS_QUERYFRAME_HEAD(nsTreeBodyFrame)
|
||||
NS_QUERYFRAME_ENTRY(nsIScrollbarMediator)
|
||||
NS_QUERYFRAME_ENTRY(nsIScrollbarOwner)
|
||||
NS_QUERYFRAME_ENTRY(nsTreeBodyFrame)
|
||||
NS_QUERYFRAME_TAIL_INHERITING(nsLeafBoxFrame)
|
||||
|
||||
@ -174,7 +173,7 @@ nsTreeBodyFrame::Init(nsIContent* aContent,
|
||||
|
||||
if (LookAndFeel::GetInt(LookAndFeel::eIntID_UseOverlayScrollbars) != 0) {
|
||||
mScrollbarActivity = new ScrollbarActivity(
|
||||
static_cast<nsIScrollbarOwner*>(this));
|
||||
static_cast<nsIScrollbarMediator*>(this));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -24,7 +24,6 @@
|
||||
#include "nsScrollbarFrame.h"
|
||||
#include "nsThreadUtils.h"
|
||||
#include "mozilla/LookAndFeel.h"
|
||||
#include "nsIScrollbarOwner.h"
|
||||
|
||||
class nsOverflowChecker;
|
||||
class nsTreeImageListener;
|
||||
@ -52,7 +51,6 @@ class nsTreeBodyFrame MOZ_FINAL
|
||||
, public nsICSSPseudoComparator
|
||||
, public nsIScrollbarMediator
|
||||
, public nsIReflowCallback
|
||||
, public nsIScrollbarOwner
|
||||
{
|
||||
public:
|
||||
typedef mozilla::layout::ScrollbarActivity ScrollbarActivity;
|
||||
@ -142,12 +140,12 @@ public:
|
||||
nscoord aOldPos,
|
||||
nscoord aNewPos) MOZ_OVERRIDE;
|
||||
virtual void VisibilityChanged(bool aVisible) MOZ_OVERRIDE { Invalidate(); }
|
||||
|
||||
// nsIScrollbarOwner
|
||||
virtual nsIFrame* GetScrollbarBox(bool aVertical) MOZ_OVERRIDE {
|
||||
ScrollParts parts = GetScrollParts();
|
||||
return aVertical ? parts.mVScrollbar : parts.mHScrollbar;
|
||||
}
|
||||
virtual void ScrollbarActivityStarted() const MOZ_OVERRIDE;
|
||||
virtual void ScrollbarActivityStopped() const MOZ_OVERRIDE;
|
||||
|
||||
// Overridden from nsIFrame to cache our pres context.
|
||||
virtual void Init(nsIContent* aContent,
|
||||
@ -469,9 +467,6 @@ protected:
|
||||
void PostScrollEvent();
|
||||
void FireScrollEvent();
|
||||
|
||||
virtual void ScrollbarActivityStarted() const MOZ_OVERRIDE;
|
||||
virtual void ScrollbarActivityStopped() const MOZ_OVERRIDE;
|
||||
|
||||
/**
|
||||
* Clear the pointer to this frame for all nsTreeImageListeners that were
|
||||
* created by this frame.
|
||||
|
Loading…
x
Reference in New Issue
Block a user