commit backout (bug 879565) CLOSED TREE

This commit is contained in:
Jim Mathies 2013-07-01 19:29:10 -05:00
commit 35a5731f5d
7 changed files with 55 additions and 164 deletions

View File

@ -14,32 +14,16 @@
#include "nsAString.h"
#include "nsQueryFrame.h"
#include "nsComponentManagerUtils.h"
#include "mozilla/LookAndFeel.h"
namespace mozilla {
namespace layout {
NS_IMPL_ISUPPORTS1(ScrollbarActivity, nsIDOMEventListener)
void
ScrollbarActivity::QueryLookAndFeelVals()
{
// Fade animation constants
mScrollbarFadeBeginDelay =
LookAndFeel::GetInt(LookAndFeel::eIntID_ScrollbarFadeBeginDelay);
mScrollbarFadeDuration =
LookAndFeel::GetInt(LookAndFeel::eIntID_ScrollbarFadeDuration);
// Controls whether we keep the mouse move listener so we can display the
// scrollbars whenever the user moves the mouse within the scroll area.
mDisplayOnMouseMove =
LookAndFeel::GetInt(LookAndFeel::eIntID_ScrollbarDisplayOnMouseMove);
}
void
ScrollbarActivity::Destroy()
{
StopListeningForScrollbarEvents();
StopListeningForScrollAreaEvents();
StopListeningForEvents();
UnregisterFromRefreshDriver();
CancelFadeBeginTimer();
}
@ -60,8 +44,7 @@ ScrollbarActivity::ActivityStarted()
return;
}
UnregisterFromRefreshDriver();
StartListeningForScrollbarEvents();
StartListeningForScrollAreaEvents();
StartListeningForEvents();
SetIsActive(true);
NS_ASSERTION(mIsActive, "need to be active during activity");
@ -91,7 +74,7 @@ ScrollbarActivity::ActivityStopped()
NS_IMETHODIMP
ScrollbarActivity::HandleEvent(nsIDOMEvent* aEvent)
{
if (!mDisplayOnMouseMove && !mIsActive)
if (!mIsActive)
return NS_OK;
nsAutoString type;
@ -168,66 +151,28 @@ ScrollbarActivity::HandleEventForScrollbar(const nsAString& aType,
}
void
ScrollbarActivity::StartListeningForScrollbarEvents()
ScrollbarActivity::StartListeningForEvents()
{
if (mListeningForScrollbarEvents)
return;
mHorizontalScrollbar = do_QueryInterface(GetHorizontalScrollbar());
mVerticalScrollbar = do_QueryInterface(GetVerticalScrollbar());
AddScrollbarEventListeners(mHorizontalScrollbar);
AddScrollbarEventListeners(mVerticalScrollbar);
mListeningForScrollbarEvents = true;
}
void
ScrollbarActivity::StopListeningForScrollbarEvents()
{
if (!mListeningForScrollbarEvents)
return;
RemoveScrollbarEventListeners(mHorizontalScrollbar);
RemoveScrollbarEventListeners(mVerticalScrollbar);
mHorizontalScrollbar = nullptr;
mVerticalScrollbar = nullptr;
mListeningForScrollbarEvents = false;
}
void
ScrollbarActivity::StartListeningForScrollAreaEvents()
{
if (mListeningForScrollAreaEvents)
if (mListeningForEvents)
return;
nsIFrame* scrollArea = do_QueryFrame(mScrollableFrame);
nsCOMPtr<nsIDOMEventTarget> scrollAreaTarget
= do_QueryInterface(scrollArea->GetContent());
nsCOMPtr<nsIDOMEventTarget> scrollAreaTarget = do_QueryInterface(
scrollArea->GetContent());
mHorizontalScrollbar = do_QueryInterface(GetHorizontalScrollbar());
mVerticalScrollbar = do_QueryInterface(GetVerticalScrollbar());
if (scrollAreaTarget) {
scrollAreaTarget->AddEventListener(NS_LITERAL_STRING("mousemove"), this,
true);
}
mListeningForScrollAreaEvents = true;
StartListeningForEventsOnScrollbar(mHorizontalScrollbar);
StartListeningForEventsOnScrollbar(mVerticalScrollbar);
mListeningForEvents = true;
}
void
ScrollbarActivity::StopListeningForScrollAreaEvents()
{
if (!mListeningForScrollAreaEvents)
return;
nsIFrame* scrollArea = do_QueryFrame(mScrollableFrame);
nsCOMPtr<nsIDOMEventTarget> scrollAreaTarget = do_QueryInterface(scrollArea->GetContent());
if (scrollAreaTarget) {
scrollAreaTarget->RemoveEventListener(NS_LITERAL_STRING("mousemove"), this, true);
}
mListeningForScrollAreaEvents = false;
}
void
ScrollbarActivity::AddScrollbarEventListeners(nsIDOMEventTarget* aScrollbar)
ScrollbarActivity::StartListeningForEventsOnScrollbar(nsIDOMEventTarget* aScrollbar)
{
if (aScrollbar) {
aScrollbar->AddEventListener(NS_LITERAL_STRING("mousedown"), this, true);
@ -238,7 +183,27 @@ ScrollbarActivity::AddScrollbarEventListeners(nsIDOMEventTarget* aScrollbar)
}
void
ScrollbarActivity::RemoveScrollbarEventListeners(nsIDOMEventTarget* aScrollbar)
ScrollbarActivity::StopListeningForEvents()
{
if (!mListeningForEvents)
return;
nsIFrame* scrollArea = do_QueryFrame(mScrollableFrame);
nsCOMPtr<nsIDOMEventTarget> scrollAreaTarget = do_QueryInterface(scrollArea->GetContent());
if (scrollAreaTarget) {
scrollAreaTarget->RemoveEventListener(NS_LITERAL_STRING("mousemove"), this, true);
}
StopListeningForEventsOnScrollbar(mHorizontalScrollbar);
StopListeningForEventsOnScrollbar(mVerticalScrollbar);
mHorizontalScrollbar = nullptr;
mVerticalScrollbar = nullptr;
mListeningForEvents = false;
}
void
ScrollbarActivity::StopListeningForEventsOnScrollbar(nsIDOMEventTarget* aScrollbar)
{
if (aScrollbar) {
aScrollbar->RemoveEventListener(NS_LITERAL_STRING("mousedown"), this, true);
@ -277,10 +242,7 @@ ScrollbarActivity::EndFade()
}
SetIsActive(false);
UnregisterFromRefreshDriver();
StopListeningForScrollbarEvents();
if (!mDisplayOnMouseMove) {
StopListeningForScrollAreaEvents();
}
StopListeningForEvents();
NS_ASSERTION(!mIsActive, "should have gone inactive after fade end");
NS_ASSERTION(!mIsFading, "shouldn't be fading anymore");
@ -410,11 +372,10 @@ ScrollbarActivity::SetIsFading(bool aNewFading)
void
ScrollbarActivity::StartFadeBeginTimer()
{
if (!mFadeBeginTimer) {
mFadeBeginTimer = do_CreateInstance("@mozilla.org/timer;1");
}
NS_ASSERTION(!mFadeBeginTimer, "timer already alive!");
mFadeBeginTimer = do_CreateInstance("@mozilla.org/timer;1");
mFadeBeginTimer->InitWithFuncCallback(FadeBeginTimerFired, this,
mScrollbarFadeBeginDelay,
kScrollbarFadeBeginDelay,
nsITimer::TYPE_ONE_SHOT);
}
@ -423,6 +384,7 @@ ScrollbarActivity::CancelFadeBeginTimer()
{
if (mFadeBeginTimer) {
mFadeBeginTimer->Cancel();
mFadeBeginTimer = nullptr;
}
}

View File

@ -63,16 +63,10 @@ public:
, mNestedActivityCounter(0)
, mIsActive(false)
, mIsFading(false)
, mListeningForScrollbarEvents(false)
, mListeningForScrollAreaEvents(false)
, mListeningForEvents(false)
, mHScrollbarHovered(false)
, mVScrollbarHovered(false)
, mDisplayOnMouseMove(false)
, mScrollbarFadeBeginDelay(0)
, mScrollbarFadeDuration(0)
{
QueryLookAndFeelVals();
}
{}
NS_DECL_ISUPPORTS
NS_DECL_NSIDOMEVENTLISTENER
@ -91,12 +85,14 @@ public:
reinterpret_cast<ScrollbarActivity*>(aSelf)->BeginFade();
}
static const uint32_t kScrollbarFadeBeginDelay = 450; // milliseconds
static const uint32_t kScrollbarFadeDuration = 200; // milliseconds
protected:
bool IsActivityOngoing()
{ return mNestedActivityCounter > 0; }
bool IsStillFading(TimeStamp aTime);
void QueryLookAndFeelVals();
void HandleEventForScrollbar(const nsAString& aType,
nsIContent* aTarget,
@ -111,14 +107,10 @@ protected:
void StartFadeBeginTimer();
void CancelFadeBeginTimer();
void StartListeningForScrollbarEvents();
void StartListeningForScrollAreaEvents();
void StopListeningForScrollbarEvents();
void StopListeningForScrollAreaEvents();
void AddScrollbarEventListeners(nsIDOMEventTarget* aScrollbar);
void RemoveScrollbarEventListeners(nsIDOMEventTarget* aScrollbar);
void StartListeningForEvents();
void StartListeningForEventsOnScrollbar(nsIDOMEventTarget* aScrollbar);
void StopListeningForEvents();
void StopListeningForEventsOnScrollbar(nsIDOMEventTarget* aScrollbar);
void RegisterWithRefreshDriver();
void UnregisterFromRefreshDriver();
@ -130,8 +122,8 @@ protected:
nsIContent* GetHorizontalScrollbar() { return GetScrollbarContent(false); }
nsIContent* GetVerticalScrollbar() { return GetScrollbarContent(true); }
const TimeDuration FadeDuration() {
return TimeDuration::FromMilliseconds(mScrollbarFadeDuration);
static const TimeDuration FadeDuration() {
return TimeDuration::FromMilliseconds(kScrollbarFadeDuration);
}
nsIScrollbarOwner* mScrollableFrame;
@ -142,15 +134,9 @@ protected:
int mNestedActivityCounter;
bool mIsActive;
bool mIsFading;
bool mListeningForScrollbarEvents;
bool mListeningForScrollAreaEvents;
bool mListeningForEvents;
bool mHScrollbarHovered;
bool mVScrollbarHovered;
// LookAndFeel values we load on creation
bool mDisplayOnMouseMove;
int mScrollbarFadeBeginDelay;
int mScrollbarFadeDuration;
};
} // namespace layout

View File

@ -23,18 +23,6 @@ scrollbar[orient="vertical"]
-moz-appearance: scrollbartrack-vertical;
}
@media all and (-moz-overlay-scrollbars) {
scrollbar {
position: relative;
z-index: 2147483647;
}
scrollbar:not([active="true"]),
scrollbar[disabled="true"] {
visibility: hidden;
}
}
/* ::::: borders for thumb and buttons ::::: */
thumb,

View File

@ -361,7 +361,7 @@ public:
*/
eIntID_ScrollbarButtonAutoRepeatBehavior,
/**
* Delay before showing a tooltip.
* Dealy before showing a tooltip.
*/
eIntID_TooltipDelay,
/*
@ -375,20 +375,8 @@ public:
* home button. Used on gaia to determine whether a home button
* is shown.
*/
eIntID_PhysicalHomeButton,
/*
* Controls whether overlay scrollbars display when the user moves
* the mouse in a scrollable frame.
*/
eIntID_ScrollbarDisplayOnMouseMove,
/*
* Overlay scrollbar animation constants.
*/
eIntID_ScrollbarFadeBeginDelay,
eIntID_ScrollbarFadeDuration
};
eIntID_PhysicalHomeButton
};
/**
* Windows themes we currently detect.

View File

@ -358,15 +358,6 @@ nsLookAndFeel::GetIntImpl(IntID aID, int32_t &aResult)
case eIntID_AllowOverlayScrollbarsOverlap:
aResult = AllowOverlayScrollbarsOverlap() ? 1 : 0;
break;
case eIntID_ScrollbarDisplayOnMouseMove:
aResult = 0;
break;
case eIntID_ScrollbarFadeBeginDelay:
aResult = 450;
break;
case eIntID_ScrollbarFadeDuration:
aResult = 200;
break;
case eIntID_TreeOpenDelay:
aResult = 1000;
break;

View File

@ -482,21 +482,6 @@ nsLookAndFeel::GetIntImpl(IntID aID, int32_t &aResult)
case eIntID_SwipeAnimationEnabled:
aResult = 0;
break;
case eIntID_UseOverlayScrollbars:
aResult = (XRE_GetWindowsEnvironment() == WindowsEnvironmentType_Metro);
break;
case eIntID_AllowOverlayScrollbarsOverlap:
aResult = 0;
break;
case eIntID_ScrollbarDisplayOnMouseMove:
aResult = 1;
break;
case eIntID_ScrollbarFadeBeginDelay:
aResult = 2500;
break;
case eIntID_ScrollbarFadeDuration:
aResult = 350;
break;
default:
aResult = 0;
res = NS_ERROR_FAILURE;

View File

@ -51,15 +51,6 @@ nsLookAndFeelIntPref nsXPLookAndFeel::sIntPrefs[] =
{ "ui.useOverlayScrollbars",
eIntID_UseOverlayScrollbars,
false, 0 },
{ "ui.scrollbarDisplayOnMouseMove",
eIntID_ScrollbarDisplayOnMouseMove,
false, 0 },
{ "ui.scrollbarFadeBeginDelay",
eIntID_ScrollbarFadeBeginDelay,
false, 0 },
{ "ui.scrollbarFadeDuration",
eIntID_ScrollbarFadeDuration,
false, 0 },
{ "ui.showHideScrollbars",
eIntID_ShowHideScrollbars,
false, 0 },