WR, I have been able to do a build of TextEdit that has the bouncy bits disabled. It's at home on one of my other Macs.
This is a first step.
I want to see if we can replace the app's plist in the (stupidly) protected Library folder with a variable that defaults to NO for bounces.
Also, I wonder if we could modify the scrollView header defailt value that hides in the system somewhere to set that to NO, but I'm not sure.
One BIG PROBLEM we have is that with many Lion codesigned apps, you can't modify one byte of the file or it will crash on launch. Totally blows. This is not the Apple we knew and loved.
Idoitic features like
"auto locking of files you haven't used in a while",
"bouncy views and scrollbars",
"sudden and automatic quitting of apps",
"versioning of things I don't want versioned",
"inability to turn gestures on or off on a per app basis",
"protected Library folder",
"code signing preventing us from ending app contents",
and not giving us control to turn these things off make Lion a terribly aggrivating experience and a NFW for me.
Why in **** should we have to pay money for an OS that has all this stuff - THAT WE WANT TO TURN OFF - and then have no (or no easy) way to actually turn them off? That is not an upgrade, that is a PITA.
Our time = money. And I want to keep the small amount of spare time that I have.
Thanks Apple. For making the OS suck and for screwing over your long time users.
Ya, I rebuilt the app from the source code in Xcode. What I want to do is find out how to put that "don't bounce" setting in a plist preference.
You can't modify the binary. If you try to, the code signing will force it to quit on launch.
Try it. Duplilcate the TextEdit app and right click on it and click Show Package Contents", then modify one of the files in there.
Close it and try to launch the app. BLAM. Instant crash.
Let me try to check the source to see if there is anything I can look at now.
Here is my research from the day.
On iOS, there is a thing called a UIScrollView. Setting bounces to 0 makes the scrolling not bounce.
Lion is different. It uses an NSScrollView. (I just did the research) In it is a property called "Elasticity" which determines this: Allow content to be scrolled past its bounds on this axis in an elastic fashion. Things that scroll generally sit within an NSScrollView on the screen. It turns out the NSScrollElasticity is responsable for that. It's defined in NSScrollView.h.
#if MAC_OS_X_VERSION_10_7 <= MAC_OS_X_VERSION_MAX_ALLOWED
NSScrollElasticityAutomatic = 0, // automatically determine whether to allow elasticity on this axis
NSScrollElasticityNone = 1, // disallow scrolling beyond document bounds on this axis
NSScrollElasticityAllowed = 2, // allow content to be scrolled past its bounds on this axis in an elastic fashion
If you open this folder, you can see the file on your hard drive.
Dunno if modifying that file would help anything, but in any case, I would love for a preference file (pList) to automatically set all NSScrollViews for an app to use NSScrollView.NSScrollElasticity = NSScrollElasticityNone
I think that would work, but I don't yet know how to do it and do it for all apps.
Excellent work on this, Alex.
I've tried quite a few combinations of things:
defaults write com.apple.safari NSScrollElasticityNone -bool yes
defaults write com.apple.safari NSScrollElasticityNone 1
defaults write com.apple.safari NSScrollView.NSScrollElasticity NSScrollElasticityNone
defaults write .GlobalPreferences NSScrollElasticityNone -bool yes
defaults write .GlobalPreferences NSScrollElasticityNone 1
defaults write .GlobalPreferences NSScrollView.NSScrollElasticity NSScrollElasticityNone
...and none have worked.
I'm going to ask in another forum if anyone might know if and how it is possible to take your research to the next level.
Alex, just wanted to chime in and say, NICE WORK. Your findings make me optimistic! I, too, hate this unnecessary "elastic" effect (most notably in Safari) and am eager to see some software development to turn it the frack OFF. Maybe a System Preference we can install (or terminal hack we can apply) to disable it on our MacOS forever. Thank you!
Oh, you wonderful person, you.
I think I was given source code to a project that will do this last week, but I haven't had the time to boot to Lion and compile it yet.
This is the start of bringing sanity back to the Mac OS. The fact that we had to wait so long, that third parties had to do it and that Apple thinks that scroll elasticity/bouncing on the Mac is a good idea means that someone making the decisions for the GUI for Apple is still sick in the head.
Scroll elasticity on the Mac OS is the Clippy of the Mac world.
I will distribute this to the Xcode lists.
You are now on my Christmas list and in my Will.
If you want a copy of TextEdit without the bouncy, please let me know and I'll build you a copy.
I have downloaded a copy of the WebKit source. I with I had time to make a Safari plugin (or version of Safari) that fixed the window tab order and disabled elasticity and auto quitting.
EDIT: OH, Fofer, this is the compiled version of the code that was sent to me a week or so ago. Much thanks to Thomas Clement for this.