details:
http://hg.adium.im/adium/rev/2bfcb17b7076
revision: 5995:2bfcb17b7076
branch: fix-autoscroll
author: <
kcoc...@trolans.net>
date: Sat Oct 19 17:34:22 2019 -0700
Adjust auto-scroll code to use more compatible APIs, adding support for macOS Catalina
Subject: adium 5996:1894c44cfd13: Merged in trolan/adium/fix-autoscroll (pull request #12)
details:
http://hg.adium.im/adium/rev/1894c44cfd13
revision: 5996:1894c44cfd13
branch: adium-1.5.10.5
author: Robbie <
rober...@fastmail.fm>
date: Mon Nov 04 10:23:55 2019 +0000
Merged in trolan/adium/fix-autoscroll (pull request #12)
Adjust auto-scroll code to use more compatible APIs, adding support for macOS Catalina
Unterschiede (172 Zeilen):
diff -r 1b816aafafdd -r 1894c44cfd13 Frameworks/AIUtilities Framework/Source/JVMarkedScroller.h
--- a/Frameworks/AIUtilities Framework/Source/JVMarkedScroller.h Wed Oct 16 20:22:26 2019 +0100
+++ b/Frameworks/AIUtilities Framework/Source/JVMarkedScroller.h Mon Nov 04 10:23:55 2019 +0000
@@ -23,6 +23,9 @@
NSUInteger _currentMark;
BOOL _jumpingToMark;
}
+
+@property (readonly) BOOL isHorizontalScroller;
+
- (void) setLocationOfCurrentMark:(NSUInteger) location;
- (unsigned long long) locationOfCurrentMark;
diff -r 1b816aafafdd -r 1894c44cfd13 Frameworks/AIUtilities Framework/Source/JVMarkedScroller.m
--- a/Frameworks/AIUtilities Framework/Source/JVMarkedScroller.m Wed Oct 16 20:22:26 2019 +0100
+++ b/Frameworks/AIUtilities Framework/Source/JVMarkedScroller.m Mon Nov 04 10:23:55 2019 +0000
@@ -53,6 +53,10 @@
#pragma mark -
+- (BOOL)isHorizontalScroller {
+ return self.enclosingScrollView.horizontalScroller == self;
+}
+
+ (BOOL)isCompatibleWithOverlayScrollers {
return self == [JVMarkedScroller class];
}
@@ -65,10 +69,10 @@
CGFloat width = [[self class] scrollerWidthForControlSize:[self controlSize]];
CGFloat scale = [self scaleToContentView];
- [transform scaleXBy:( sFlags.isHoriz ? scale : 1.f ) yBy:( sFlags.isHoriz ? 1.f : scale )];
+ [transform scaleXBy:( self.isHorizontalScroller ? scale : 1.f ) yBy:( self.isHorizontalScroller ? 1.f : scale )];
CGFloat offset = [self rectForPart:NSScrollerKnobSlot].origin.y;
- [transform translateXBy:( sFlags.isHoriz ? offset / scale : 0.f ) yBy:( sFlags.isHoriz ? 0.f : offset / scale )];
+ [transform translateXBy:( self.isHorizontalScroller ? offset / scale : 0.f ) yBy:( self.isHorizontalScroller ? 0.f : offset / scale )];
NSBezierPath *shades = [NSBezierPath bezierPath];
NSEnumerator *enumerator = [_shades objectEnumerator];
@@ -80,7 +84,7 @@
NSUInteger stop = [stopNum unsignedIntegerValue];
NSRect shadesRect = NSZeroRect;
- if( sFlags.isHoriz ) shadesRect = NSMakeRect( start, 0.f, ( stop - start ), width );
+ if( self.isHorizontalScroller ) shadesRect = NSMakeRect( start, 0.f, ( stop - start ), width );
else shadesRect = NSMakeRect( 0.f, start, width, ( stop - start ) );
shadesRect.origin = [transform transformPoint:shadesRect.origin];
@@ -94,7 +98,7 @@
NSUInteger start = [[_shades lastObject] unsignedIntegerValue];
CGFloat stop = [self contentViewLength];
- if( sFlags.isHoriz ) shadesRect = NSMakeRect( start, 0.f, ( stop - start ), width );
+ if( self.isHorizontalScroller ) shadesRect = NSMakeRect( start, 0.f, ( stop - start ), width );
else shadesRect = NSMakeRect( 0.f, start, width, ( stop - start ) );
shadesRect.origin = [transform transformPoint:shadesRect.origin];
@@ -134,17 +138,17 @@
foundNext = YES;
}
- NSPoint point = NSMakePoint( ( sFlags.isHoriz ? value : 0 ), ( sFlags.isHoriz ? 0 : value ) );
+ NSPoint point = NSMakePoint( ( self.isHorizontalScroller ? value : 0 ), ( self.isHorizontalScroller ? 0 : value ) );
point = [transform transformPoint:point];
- point.x = ( sFlags.isHoriz ? AIround( point.x ) + 0.5f : point.x );
- point.y = ( sFlags.isHoriz ? point.y : AIround( point.y ) + 0.5f );
+ point.x = ( self.isHorizontalScroller ? AIround( point.x ) + 0.5f : point.x );
+ point.y = ( self.isHorizontalScroller ? point.y : AIround( point.y ) + 0.5f );
if( ! NSPointInRect( point, knobRect ) ) {
if( mark.color ) {
NSBezierPath *line = [NSBezierPath bezierPath];
[line moveToPoint:point];
- point = NSMakePoint( ( sFlags.isHoriz ? 0.f : width ), ( sFlags.isHoriz ? width : 0.f ) );
+ point = NSMakePoint( ( self.isHorizontalScroller ? 0.f : width ), ( self.isHorizontalScroller ? width : 0.f ) );
[line relativeLineToPoint:point];
[line setLineWidth:2];
[lineArray addObject:mark.color];
@@ -152,7 +156,7 @@
} else {
[lines moveToPoint:point];
- point = NSMakePoint( ( sFlags.isHoriz ? 0.f : width ), ( sFlags.isHoriz ? width : 0.f ) );
+ point = NSMakePoint( ( self.isHorizontalScroller ? 0.f : width ), ( self.isHorizontalScroller ? width : 0.f ) );
[lines relativeLineToPoint:point];
}
}
@@ -204,7 +208,7 @@
[item setTarget:self];
[menu addItem:item];
- if( sFlags.isHoriz ) {
+ if( self.isHorizontalScroller ) {
item = [[[NSMenuItem alloc] initWithTitle:AILocalizedStringFromTableInBundle( @"Clear Marks from Here Left", nil, [NSBundle bundleWithIdentifier:AIUTILITIES_BUNDLE_ID], "clear marks from here left contextual menu")
action:@selector( clearMarksHereLess: )
keyEquivalent:@""] autorelease];
@@ -291,7 +295,7 @@
NSPoint where = [self convertPoint:[event locationInWindow] fromView:nil];
NSRect slotRect = [self rectForPart:NSScrollerKnobSlot];
CGFloat scale = [self scaleToContentView];
- [self removeMarksLessThan:( ( sFlags.isHoriz ? where.x - NSMinX( slotRect ) : where.y - NSMinY( slotRect ) ) / scale )];
+ [self removeMarksLessThan:( ( self.isHorizontalScroller ? where.x - NSMinX( slotRect ) : where.y - NSMinY( slotRect ) ) / scale )];
}
- (IBAction) clearMarksHereGreater:(id) sender {
@@ -299,7 +303,7 @@
NSPoint where = [self convertPoint:[event locationInWindow] fromView:nil];
NSRect slotRect = [self rectForPart:NSScrollerKnobSlot];
CGFloat scale = [self scaleToContentView];
- [self removeMarksGreaterThan:( ( sFlags.isHoriz ? where.x - NSMinX( slotRect ) : where.y - NSMinY( slotRect ) ) / scale )];
+ [self removeMarksGreaterThan:( ( self.isHorizontalScroller ? where.x - NSMinX( slotRect ) : where.y - NSMinY( slotRect ) ) / scale )];
}
#pragma mark -
@@ -589,18 +593,18 @@
#pragma mark -
- (CGFloat) contentViewLength {
- if( sFlags.isHoriz ) return ( NSWidth( [self frame] ) / [self knobProportion] );
+ if( self.isHorizontalScroller ) return ( NSWidth( [self frame] ) / [self knobProportion] );
else return ( NSHeight( [self frame] ) / [self knobProportion] );
}
- (CGFloat) scaleToContentView {
- if( sFlags.isHoriz ) return NSWidth( [self rectForPart:NSScrollerKnobSlot] ) / NSWidth( [[(NSScrollView *)[self superview] contentView] documentRect] );
+ if( self.isHorizontalScroller ) return NSWidth( [self rectForPart:NSScrollerKnobSlot] ) / NSWidth( [[(NSScrollView *)[self superview] contentView] documentRect] );
else return NSHeight( [self rectForPart:NSScrollerKnobSlot] ) / NSHeight( [[(NSScrollView *)[self superview] contentView] documentRect] );
}
- (CGFloat) shiftAmountToCenterAlign {
CGFloat scale = [self scaleToContentView];
- if( sFlags.isHoriz ) return ( ( NSWidth( [self rectForPart:NSScrollerKnobSlot] ) * [self knobProportion] ) / 2.f ) / scale;
+ if( self.isHorizontalScroller ) return ( ( NSWidth( [self rectForPart:NSScrollerKnobSlot] ) * [self knobProportion] ) / 2.f ) / scale;
else return ( ( NSHeight( [self rectForPart:NSScrollerKnobSlot] ) * [self knobProportion] ) / 2.f ) / scale;
}
@end
diff -r 1b816aafafdd -r 1894c44cfd13 Plugins/WebKit Message View/Template.html
--- a/Plugins/WebKit Message View/Template.html Wed Oct 16 20:22:26 2019 +0100
+++ b/Plugins/WebKit Message View/Template.html Mon Nov 04 10:23:55 2019 +0000
@@ -214,10 +214,10 @@
//Auto-scroll to bottom. Use nearBottom to determine if a scrollToBottom is desired.
function nearBottom() {
- return ( document.body.scrollTop >= ( document.body.offsetHeight - ( window.innerHeight * 1.2 ) ) );
+ return ( window.scrollY >= ( document.body.offsetHeight - ( window.innerHeight * 1.2 ) ) );
}
function scrollToBottom() {
- document.body.scrollTop = document.body.offsetHeight;
+ window.scrollTo(0, document.body.scrollHeight);
}
//Dynamically exchange the active stylesheet
diff -r 1b816aafafdd -r 1894c44cfd13 Resources/Message Styles/Renkoo.AdiumMessageStyle/Contents/Resources/Footer.html
--- a/Resources/Message Styles/Renkoo.AdiumMessageStyle/Contents/Resources/Footer.html Wed Oct 16 20:22:26 2019 +0100
+++ b/Resources/Message Styles/Renkoo.AdiumMessageStyle/Contents/Resources/Footer.html Mon Nov 04 10:23:55 2019 +0000
@@ -184,10 +184,10 @@
if ( intervall_scroll ) clearInterval( intervall_scroll );
intervall_scroll = setInterval( function() {
var target_scroll = (document.body.scrollHeight-window.innerHeight);
- var scrolldiff = target_scroll - document.body.scrollTop;
- if ( document.body.scrollTop != target_scroll ) {
- var saved_scroll = document.body.scrollTop;
- document.body.scrollTop += scrolldiff / 5 + ( scrolldiff >= 0 ? (scrolldiff != 0 ) : -1 );
+ var scrolldiff = target_scroll - window.scrollY;
+ if ( window.scrollY != target_scroll ) {
+ var saved_scroll = window.scrollY;
+ window.scrollTo(0, window.scrollY + scrolldiff / 5 + ( scrolldiff >= 0 ? (scrolldiff != 0 ) : -1 ));
} else {
saved_scroll = -1;
clearInterval( intervall_scroll );