diff options
author | Silenio Quarti <silenio_quarti@ca.ibm.com> | 2011-08-05 11:42:17 -0400 |
---|---|---|
committer | Silenio Quarti <silenio_quarti@ca.ibm.com> | 2011-08-05 11:42:17 -0400 |
commit | beb3230a14d718993438b762d3e460dbe17629f9 (patch) | |
tree | 8adddadb420302df4962178ed33bbbfaf361f763 /bundles/org.eclipse.swt/Eclipse SWT | |
parent | 73e7ebb78e8b14959b40e5cd6db2f06802b80702 (diff) | |
download | eclipse.platform.swt-beb3230a14d718993438b762d3e460dbe17629f9.tar.gz eclipse.platform.swt-beb3230a14d718993438b762d3e460dbe17629f9.tar.xz eclipse.platform.swt-beb3230a14d718993438b762d3e460dbe17629f9.zip |
Bug 348309 - [10.7]Awkward Scroll Bars
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT')
3 files changed, 13 insertions, 5 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java index a374930374..27458990b1 100755 --- a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java @@ -2596,7 +2596,6 @@ void initClasses () { OS.class_addMethod(cls, OS.sel_collapseItem_collapseChildren_, proc4, "@:@Z"); OS.class_addMethod(cls, OS.sel_drawBackgroundInClipRect_, drawBackgroundInClipRectProc, "@:{NSRect}"); addEventMethods(cls, proc2, proc3, drawRectProc, hitTestProc, setNeedsDisplayInRectProc); - addFrameMethods(cls, setFrameOriginProc, setFrameSizeProc); addAccessibilityMethods(cls, proc2, proc3, proc4, accessibilityHitTestProc); OS.objc_registerClassPair(cls); @@ -2645,6 +2644,9 @@ void initClasses () { addFrameMethods(cls, setFrameOriginProc, setFrameSizeProc); addAccessibilityMethods(cls, proc2, proc3, proc4, accessibilityHitTestProc); OS.objc_registerClassPair(cls); + /* Note that isFlippedProc is used for performance and convenience */ + int /*long*/ metaClass = OS.objc_getMetaClass(className); + OS.class_addMethod(metaClass, OS.sel_isCompatibleWithOverlayScrollers, isFlippedProc, "@:"); className = "SWTScrollView"; cls = OS.objc_allocateClassPair(OS.class_NSScrollView, className, 0); @@ -2770,7 +2772,6 @@ void initClasses () { OS.class_addMethod(cls, OS.sel_tableView_writeRowsWithIndexes_toPasteboard_, proc5, "@:@@@"); OS.class_addMethod(cls, OS.sel_drawBackgroundInClipRect_, drawBackgroundInClipRectProc, "@:{NSRect}"); addEventMethods(cls, proc2, proc3, drawRectProc, hitTestProc, setNeedsDisplayInRectProc); - addFrameMethods(cls, setFrameOriginProc, setFrameSizeProc); addAccessibilityMethods(cls, proc2, proc3, proc4, accessibilityHitTestProc); OS.objc_registerClassPair(cls); diff --git a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ScrollBar.java b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ScrollBar.java index 1dcd9042c1..f18a8c0b21 100755 --- a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ScrollBar.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ScrollBar.java @@ -729,8 +729,14 @@ void updateBar (int selection, int minimum, int maximum, int thumb) { int range = maximum - thumb - minimum; float fraction = range <= 0 ? 1 : (float) (selection - minimum) / range; float knob = range <= 0 ? 1 : (float) thumb / (maximum - minimum); - widget.setFloatValue (fraction, knob); - widget.setEnabled (range > 0); + double oldFraction = widget.doubleValue(); + float /*double*/ oldKnob = widget.knobProportion(); + widget.setDoubleValue(fraction); + widget.setKnobProportion(knob); + widget.setEnabled (range > 0); + if (target == null && (knob != oldKnob || fraction != oldFraction)) { + OS.objc_msgSend(parent.scrollView.id, OS.sel_flashScrollers); + } } } diff --git a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Slider.java b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Slider.java index 502957e5b1..1d61979f14 100755 --- a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Slider.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Slider.java @@ -469,7 +469,8 @@ void updateBar (int selection, int minimum, int maximum, int thumb) { int range = maximum - thumb - minimum; float fraction = range <= 0 ? 1 : (float)(selection - minimum) / range; float knob = range <= 0 ? 1 : (float)thumb / (maximum - minimum); - widget.setFloatValue (fraction, knob); + widget.setDoubleValue(fraction); + widget.setKnobProportion(knob); widget.setEnabled (range > 0); } |