smart horizontal scrolling

This commit is contained in:
Konstantin Bulenkov
2011-03-30 22:10:34 +04:00
parent b8fb494f4a
commit 4669fc8a22
2 changed files with 9 additions and 2 deletions
@@ -22,6 +22,7 @@ import com.intellij.openapi.actionSystem.impl.PresentationFactory;
import com.intellij.openapi.keymap.Keymap;
import com.intellij.openapi.keymap.KeymapManager;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.openapi.wm.impl.IdeGlassPaneImpl;
import com.intellij.util.containers.HashMap;
import com.intellij.util.ui.UIUtil;
@@ -188,13 +189,18 @@ public final class IdeMouseEventDispatcher {
private static boolean doHorizontalScrolling(Component c, MouseWheelEvent me) {
final JScrollBar scrollBar = findHorizontalScrollBar(c);
if (scrollBar != null) {
int totalScrollAmount = me.getUnitsToScroll() * scrollBar.getUnitIncrement() * 3;
scrollBar.setValue(scrollBar.getValue() + totalScrollAmount);
scrollBar.setValue(scrollBar.getValue() + getScrollAmount(c, me, scrollBar));
return true;
}
return false;
}
private static int getScrollAmount(Component c, MouseWheelEvent me, JScrollBar scrollBar) {
final int ratio = Registry.is("ide.smart.horizontal.scrolling")
? Math.max((int)Math.pow(c.getWidth() / scrollBar.getWidth() , 2), 10) : 10; // do annoying scrolling faster if smart scrolling is on
return me.getUnitsToScroll() * scrollBar.getUnitIncrement() * ratio;
}
private static boolean isHorizontalScrolling(Component c, MouseEvent e) {
if ( c != null
&& e instanceof MouseWheelEvent
@@ -64,6 +64,7 @@ ide.tree.checkStructure=false
ide.tree.uiLockAttempt=250
ide.splitter.mouseZone=6
ide.smart.horizontal.scrolling=true
ide.tooltip.callout=true
ide.tooltip.mode=default