OK Király, maybe you can help out on this then.
Based on a post I made a while ago:
Here is the header info for webKit
Here's the area in the WebKit code where this unholy poison lies:
ScrollableArea.h
lines 212 and 213:
unsigned m_verticalScrollElasticity : 2; // ScrollElasticity,
unsigned m_horizontalScrollElasticity : 2; // ScrollElasticity
There are also enums (settings or definitions) for ScrollElasticityAutomatic and ScrollElasticityAllowed.
Where these exist in the code can be changed to ScrollElasticityNone and the app rebuilt. OR, we can find out how to write this to a defaults or Safari preference pList.
In ScrollAnimatorMac.mm, there is a section that responds to ScrollElasticityAutomatic and this can be pulled and simply replaced with return false;
There also is a ScrollElasticityController.h file and it is referenced from ScrollAnimatorMac.mm. In it is #if ENABLE(RUBBER_BANDING) which handles how to respond to that lameness.
AHA. This leads me to platform.h (there are more than one of these) which defines ENABLE_RUBBER_BANDING as 1
There might be a few areas in Safari where we need to turn this off and redefining RUBBER_BANDING to 0 might need to happen too.
From the trunk of the webkit source, here is the path to the Mac specific files:
webkit (trunk)/Source/WebCore/platform/mac
The following files have the term "rubber_banding" in them:
ScrollElasticityController.h
ScrollElasticityController.mm
ScrollbarThemeMac.mm
ScrollAnimatorMac.h
ScrollAnimatorMac.mm
ScrollbarThemeMac.h
These files hare the term "rubberband" in them:
ScrollAnimatorMac.h
ScrollAnimatorMac.mm
ScrollElasticityController.mm
ScrollElasticityController.h
The following tiles have the term "elastic" in them:
ScrollElasticityController.h
ScrollElasticityController.mm
ScrollAnimatorMac.h
ScrollAnimatorMac.mm
This gets me thinking. Are we trying to set in the wrong place? Should we be trying to turn off elasticity/rubberbanding in WebKit, instead of Safari??
OK. In ScrollElasticityController.h is this:
#if ENABLE(RUBBER_BANDING)
This is the evil. It must be defined somewhere else and if we redefine it to NO, or 0, this should (hopefully) do it.
Inside the AboutDataEnableFeatures.in file are a whole lot of items - including RUBBER_BANDING.
Inside features.gypi is this:
# We have to nest variables inside variables so that they can be overridden
# through GYP_DEFINES.
...
['OS=="mac"', {
'feature_defines': [
'ENABLE_RUBBER_BANDING=1',
'***_USE_SKIA_ON_MAC_CHROMIUM=<(use_skia)',
],
Try that. Try setting
ENABLE_RUBBER_BANDING = 0
RUBBER_BANDING = 0
For Safari and if it's possible to set it for WebKit or for everything,
defaults write -g ENABLE_RUBBER_BANDING -boolean false
defaults write -g RUBBER_BANDING -boolean false
defaults write -g ENABLE_RUBBER_BANDING -boolean false
defaults write -g RUBBER_BANDING -boolean false
My fingers are crossed.