summaryrefslogtreecommitdiffstats
path: root/bundles/org.eclipse.swt/Eclipse SWT
diff options
context:
space:
mode:
authorSilenio Quarti <silenio_quarti@ca.ibm.com>2011-08-05 11:42:17 -0400
committerSilenio Quarti <silenio_quarti@ca.ibm.com>2011-08-05 11:42:17 -0400
commitbeb3230a14d718993438b762d3e460dbe17629f9 (patch)
tree8adddadb420302df4962178ed33bbbfaf361f763 /bundles/org.eclipse.swt/Eclipse SWT
parent73e7ebb78e8b14959b40e5cd6db2f06802b80702 (diff)
downloadeclipse.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')
-rwxr-xr-xbundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Display.java5
-rwxr-xr-xbundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/ScrollBar.java10
-rwxr-xr-xbundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Slider.java3
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);
}