mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-05-26 14:30:27 +00:00
e9ba40cf6b
- Bug 1178833 - Fix for unified builds when a new file is added to layout/base. r=mstange (bf961c00fd) - Bug 1178847 - Add a MobileViewportManager to manage setting the CSS viewport on B2G. r=botond,tn (937ba486fa) - Bug 1178847 - Don't use the MobileViewportManager code on Mulet or Fennec yet. r=botond (3061b2c617) - Bug 1168950. Add the document to DoProcessRestyles profile label. r=dbaron (2347b76411) - Bug 1187792 - Don't set the SPCSPS unless meta-viewport or zooming is enabled. r=botond (a8f5ed1006) - Bug 1193062 - Don't double-send target APZC confirmations that might race each other. r=kats (de48467401) - Bug 1186004 - Add a pref to enable/disable APZ zooming behaviour. r=botond (fc3653c979) - Bug 1193062 - Add a PAN_MOMENTUM state. r=kats (10c8bb1a5e) - Bug 1148350 - Have ConvertToGecko use a live screen-to-apzc transform to avoid transform mismatches. r=botond (9eee9ea6f2) - Bug 1169844 - Remove incorrect assertion and properly untransform wheel events for overscroll situations. r=botond (9b101b53bb) - Bug 1169690 - Accelerate flings correctly in the presence of overscroll handoff. r=kats (49d55c05f4) - Bug 1158424 - Extract a BreadthFirstSearch() helper function. r=kats (6a49498185) - Bug 1158424 - Add APZCTreeManager::FindRootContentApzcForLayersId(). r=kats (d6c7ecf781) - Bug 1158424 - Fix APZCTreeManager::GetMultitouchTarget(). r=kats (bf8571a4ca) - Bug 1174205 - Make sure to acquire the tree lock before finding the multitouch target. r=botond (bdbd98f2c7) - Bug 1211660 - Remove dead obj argument from two functions. r=Waldo. (efba5a2f8d) - Bug 1158424 - Undeprecate HasNoParentWithSameLayersId(). r=kats (d994ea28f8) - Fix AsyncCompositionManager not comparing layer tree IDs when finding scrollbar targets. (bug 1151169, r=kats) (c7dbc4776a) - Bug 1163259. Make sure we don't look at the parent ref layer when looking for a layer with the frame metrics for a scrollbar. r=kats (8b99d2c830) - Bug 1164340. Convert the scrollbar thumb ratio to a unitless ratio properly for non-zoomable scrollframes. r=botond (27f56cab56) - Bug 1164340. Fix up some scrollbar related comments in AsyncCompositionManager. r=botond (b9d540bea9) - Bug 1164767. Modify async scrollbar positioning code to deal with containerless root scrollables. r=botond (501d07592e) - Bug 1158424 - Remove FrameMetrics::IsRootScrollable() (it just duplicated IsRootContent()). r=kats (672fd034b3) - Bug 1120683 - Properly handle unapplying 3D projective transforms throughout APZ code. r=botond (a46612811a) - Bug 1148868 - Make APZ wheel handling handle pixel scrolling on OS X. r=dvander, r=kats (da3bd34135) - Bug 1193062 - Add fields to PanGestureInput and ScrollWheelInput. r=kats (716ba34e18) - Bug 1189565 - Send resize events when backing scale factor changes. r=mstange (4e81a7bbf7) - Bug 1193062 - Add nsCocoaUtils::ModifiersForEvent. r=smichaud (da67b22ff7) - Bug 1016035 - Remove the ability to swipe vertically. r=kats (fa315e0b97) - Bug 1016035 - Refactor the code that decides whether we want to start a swipe. r=kats (3091961328) - Bug 1016035 - Make the threshold in AxisPhysicsMSDModel::IsFinished controllable by the caller. r=kip (76df4d85a2) - Bug 1016035 - More swipe refactoring. r=kats (2abcd05b33) - Bug 1016035 - Implement the swipe animation ourselves instead of calling the NSEvent trackSwipe API. r=kats (4842b2a728) - Bug 1016035 - Move swipe tracking code into DispatchAPZWheelInputEvent. r=kats (bb1052b87c) - Bug 1016035 - Also mark widgetWheelEvents that are handled by APZ with mCanStartSwipe. r=kats (21809b902d) - Bug 1016035 - Put PanGestureInput events into a queue if they can end up as a swipe. r=kats (2ebac59047) - Bug 1016035 - Split up MaybeTrackScrollEventAsSwipe into SendMayStartSwipe and TrackScrollEventAsSwipe. r=kats (ced10d9671) - Bug 1016035 - Send MayStartSwipe event before sending the wheel event. r=kats (b3346b81fb) - Fix some fields missing in the widget event IPC glue. (bug 1139711, r=kats) (1298b25705) - Bug 1016035 - Add mCanTriggerSwipe and TriggersSwipe(). r=masayuki (664a059972) - Bug 1016035 - Make APZEventState report defaultPrevented=true when the event started a swipe. r=kats (128d627ac7) - Bug 1016035 - Set scroll overflow information on potential swipe start events that have been processed by APZ. r=masayuki (b5931f6320) - Bug 1206801 - fix broken CONFIG['DEBUG'] checks in moz.build files; r=mshal (292d5ac709) - Bug 1186424: Refactor AsmJSValidate.cpp in preparation for parallelization; r=luke (4868bc66ca) - Bug 1129267 - Fix by backing out patch for bug 1118615. r=mstange (ea8aaba04e) - Bug 1182411 Part 1: Make plugin quirks available to the Parent as well as the Child. r=jimm (1f2551a6b7) - Bug 1228462 - "PluginQuirks.* uses DOS CRLF". r=jmathies (b569a6c6c8) - Bug 1152300 - When focus shifts from a native plugin window to content, content needs to forward the request for focus change to chrome. r=enn (5bd811fadd) - Bug 1185529: On Windows, ensure that NPAPI child window has the correct parent before setwindow is called. r=jimm (9d94fdf2ff) - Bug 1182411 Part 2: Change winless popup surrogate to have its parent set in the chrome process. r=jimm (adee9bb012)
94 lines
3.6 KiB
C++
94 lines
3.6 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||
/* vim: set sw=2 ts=8 et tw=80 : */
|
||
/* 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/. */
|
||
|
||
#include "AxisPhysicsMSDModel.h"
|
||
#include <math.h> // for sqrt and fabs
|
||
|
||
namespace mozilla {
|
||
namespace layers {
|
||
|
||
/**
|
||
* Constructs an AxisPhysicsMSDModel with initial values for state.
|
||
*
|
||
* @param aInitialPosition sets the initial position of the simulated spring,
|
||
* in AppUnits.
|
||
* @param aInitialDestination sets the resting position of the simulated spring,
|
||
* in AppUnits.
|
||
* @param aInitialVelocity sets the initial velocity of the simulated spring,
|
||
* in AppUnits / second. Critically-damped and over-damped systems are
|
||
* guaranteed not to overshoot aInitialDestination if this is set to 0;
|
||
* however, it is possible to overshoot and oscillate if not set to 0 or
|
||
* the system is under-damped.
|
||
* @param aSpringConstant sets the strength of the simulated spring. Greater
|
||
* values of mSpringConstant result in a stiffer / stronger spring.
|
||
* @param aDampingRatio controls the amount of dampening force and determines
|
||
* if the system is under-damped, critically-damped, or over-damped.
|
||
*/
|
||
AxisPhysicsMSDModel::AxisPhysicsMSDModel(double aInitialPosition,
|
||
double aInitialDestination,
|
||
double aInitialVelocity,
|
||
double aSpringConstant,
|
||
double aDampingRatio)
|
||
: AxisPhysicsModel(aInitialPosition, aInitialVelocity)
|
||
, mDestination(aInitialDestination)
|
||
, mSpringConstant(aSpringConstant)
|
||
, mSpringConstantSqrtXTwo(sqrt(mSpringConstant) * 2.0)
|
||
, mDampingRatio(aDampingRatio)
|
||
{
|
||
}
|
||
|
||
AxisPhysicsMSDModel::~AxisPhysicsMSDModel()
|
||
{
|
||
}
|
||
|
||
double
|
||
AxisPhysicsMSDModel::Acceleration(const State &aState)
|
||
{
|
||
// Simulate a Mass-Damper-Spring Model; assume a unit mass
|
||
|
||
// Hooke’s Law: http://en.wikipedia.org/wiki/Hooke%27s_law
|
||
double spring_force = (mDestination - aState.p) * mSpringConstant;
|
||
double damp_force = -aState.v * mDampingRatio * mSpringConstantSqrtXTwo;
|
||
|
||
return spring_force + damp_force;
|
||
}
|
||
|
||
|
||
double
|
||
AxisPhysicsMSDModel::GetDestination()
|
||
{
|
||
return mDestination;
|
||
}
|
||
|
||
void
|
||
AxisPhysicsMSDModel::SetDestination(double aDestination)
|
||
{
|
||
mDestination = aDestination;
|
||
}
|
||
|
||
bool
|
||
AxisPhysicsMSDModel::IsFinished(double aSmallestVisibleIncrement)
|
||
{
|
||
// In order to satisfy the condition of reaching the destination, the distance
|
||
// between the simulation position and the destination must be less than
|
||
// aSmallestVisibleIncrement while the speed is simultaneously less than
|
||
// finishVelocity. This enables an under-damped system to overshoot the
|
||
// destination when desired without prematurely triggering the finished state.
|
||
// If finishVelocity is set too low, the animation may end long after
|
||
// oscillation has finished, resulting in unnecessary processing.
|
||
// If set too high, the animation may prematurely terminate when expected
|
||
// to overshoot the destination in an under-damped system.
|
||
// aSmallestVisibleIncrement * 2 was selected through experimentation that
|
||
// revealed that a critically damped system will terminate within 100ms.
|
||
const double finishVelocity = aSmallestVisibleIncrement * 2;
|
||
|
||
return fabs(mDestination - GetPosition ()) < aSmallestVisibleIncrement
|
||
&& fabs(GetVelocity()) <= finishVelocity;
|
||
}
|
||
|
||
} // namespace layers
|
||
} // namespace mozilla
|