From efdfd0db1025cfc6d2d0b99f4ead93cd0e0d74eb Mon Sep 17 00:00:00 2001 From: Antoine Mercadal Date: Tue, 4 Oct 2011 16:21:24 +0200 Subject: [PATCH] fix some bugs and update arts --- AppKit/CPScrollView.j | 75 ++++--- AppKit/CPScroller.j | 199 +++++++++++------- .../scroller-horizontal-knob-center.png | Bin 997 -> 115 bytes .../scroller-horizontal-knob-left.png | Bin 1028 -> 146 bytes .../scroller-horizontal-knob-right.png | Bin 1028 -> 146 bytes .../scroller-horizontal-track-center.png | Bin 148 -> 139 bytes .../scroller-horizontal-track-left.png | Bin 176 -> 169 bytes .../scroller-horizontal-track-right.png | Bin 175 -> 171 bytes ...scroller-legacy-horizontal-knob-center.png | Bin 1297 -> 123 bytes .../scroller-legacy-horizontal-knob-left.png | Bin 1347 -> 158 bytes .../scroller-legacy-horizontal-knob-right.png | Bin 1332 -> 157 bytes ...croller-legacy-horizontal-track-center.png | Bin 1323 -> 145 bytes .../scroller-legacy-horizontal-track-left.png | Bin 1530 -> 285 bytes ...scroller-legacy-horizontal-track-right.png | Bin 1531 -> 301 bytes .../scroller-legacy-vertical-knob-bottom.png | Bin 1338 -> 157 bytes .../scroller-legacy-vertical-knob-center.png | Bin 1296 -> 123 bytes .../scroller-legacy-vertical-knob-top.png | Bin 1336 -> 157 bytes .../scroller-legacy-vertical-track-bottom.png | Bin 1552 -> 310 bytes .../scroller-legacy-vertical-track-center.png | Bin 1320 -> 139 bytes .../scroller-legacy-vertical-track-top.png | Bin 1536 -> 302 bytes .../scroller-vertical-knob-bottom.png | Bin 1024 -> 142 bytes .../scroller-vertical-knob-center.png | Bin 994 -> 112 bytes ...scroller-vertical-knob-disabled-bottom.png | Bin 421 -> 0 bytes ...scroller-vertical-knob-disabled-center.png | Bin 143 -> 0 bytes .../scroller-vertical-knob-disabled-top.png | Bin 424 -> 0 bytes .../Resources/scroller-vertical-knob-top.png | Bin 1023 -> 141 bytes .../scroller-vertical-track-bottom.png | Bin 173 -> 172 bytes .../scroller-vertical-track-center.png | Bin 144 -> 133 bytes .../Resources/scroller-vertical-track-top.png | Bin 177 -> 171 bytes 29 files changed, 169 insertions(+), 105 deletions(-) delete mode 100644 AppKit/Themes/Aristo/Resources/scroller-vertical-knob-disabled-bottom.png delete mode 100644 AppKit/Themes/Aristo/Resources/scroller-vertical-knob-disabled-center.png delete mode 100644 AppKit/Themes/Aristo/Resources/scroller-vertical-knob-disabled-top.png diff --git a/AppKit/CPScrollView.j b/AppKit/CPScrollView.j index 06d45eca3..57fb8a23b 100644 --- a/AppKit/CPScrollView.j +++ b/AppKit/CPScrollView.j @@ -605,7 +605,7 @@ var TIMER_INTERVAL = 0.2, #pragma mark - -#pragma mark Utilities +#pragma mark Privates /* @ignore */ - (void)_updateScrollerStyle @@ -621,6 +621,13 @@ var TIMER_INTERVAL = 0.2, [_verticalScroller unsetThemeState:CPThemeStateSelected]; } + if (_scrollerStyle == CPScrollerStyleOverlay) + { + if (_timerScrollersHide) + [_timerScrollersHide invalidate]; + _timerScrollersHide = [CPTimer scheduledTimerWithTimeInterval:1.2 target:self selector:@selector(_hideScrollers:) userInfo:nil repeats:NO]; + } + [self reflectScrolledClipView:_contentView]; } @@ -719,24 +726,30 @@ var TIMER_INTERVAL = 0.2, documentFrame = [[_contentView documentView] frame], contentBounds = [_contentView bounds]; + switch ([_verticalScroller hitPart]) { - case CPScrollerDecrementLine: contentBounds.origin.y -= _verticalLineScroll; - break; + case CPScrollerDecrementLine: + contentBounds.origin.y -= _verticalLineScroll; + break; - case CPScrollerIncrementLine: contentBounds.origin.y += _verticalLineScroll; - break; + case CPScrollerIncrementLine: + contentBounds.origin.y += _verticalLineScroll; + break; - case CPScrollerDecrementPage: contentBounds.origin.y -= _CGRectGetHeight(contentBounds) - _verticalPageScroll; - break; + case CPScrollerDecrementPage: + contentBounds.origin.y -= _CGRectGetHeight(contentBounds) - _verticalPageScroll; + break; - case CPScrollerIncrementPage: contentBounds.origin.y += _CGRectGetHeight(contentBounds) - _verticalPageScroll; - break; + case CPScrollerIncrementPage: + contentBounds.origin.y += _CGRectGetHeight(contentBounds) - _verticalPageScroll; + break; + // We want integral bounds! case CPScrollerKnobSlot: case CPScrollerKnob: - // We want integral bounds! - default: contentBounds.origin.y = ROUND(value * (_CGRectGetHeight(documentFrame) - _CGRectGetHeight(contentBounds))); + default: + contentBounds.origin.y = ROUND(value * (_CGRectGetHeight(documentFrame) - _CGRectGetHeight(contentBounds))); } [self _sendDelegateMessages]; @@ -753,22 +766,27 @@ var TIMER_INTERVAL = 0.2, switch ([_horizontalScroller hitPart]) { - case CPScrollerDecrementLine: contentBounds.origin.x -= _horizontalLineScroll; - break; + case CPScrollerDecrementLine: + contentBounds.origin.x -= _horizontalLineScroll; + break; - case CPScrollerIncrementLine: contentBounds.origin.x += _horizontalLineScroll; - break; + case CPScrollerIncrementLine: + contentBounds.origin.x += _horizontalLineScroll; + break; - case CPScrollerDecrementPage: contentBounds.origin.x -= _CGRectGetWidth(contentBounds) - _horizontalPageScroll; - break; + case CPScrollerDecrementPage: + contentBounds.origin.x -= _CGRectGetWidth(contentBounds) - _horizontalPageScroll; + break; - case CPScrollerIncrementPage: contentBounds.origin.x += _CGRectGetWidth(contentBounds) - _horizontalPageScroll; - break; + case CPScrollerIncrementPage: + contentBounds.origin.x += _CGRectGetWidth(contentBounds) - _horizontalPageScroll; + break; + // We want integral bounds! case CPScrollerKnobSlot: case CPScrollerKnob: - // We want integral bounds! - default: contentBounds.origin.x = ROUND(value * (_CGRectGetWidth(documentFrame) - _CGRectGetWidth(contentBounds))); + default: + contentBounds.origin.x = ROUND(value * (_CGRectGetWidth(documentFrame) - _CGRectGetWidth(contentBounds))); } [self _sendDelegateMessages]; @@ -844,6 +862,10 @@ var TIMER_INTERVAL = 0.2, [_delegate scrollViewDidScroll:self]; } + +#pragma mark - +#pragma mark Utilities + /*! Lays out the scroll view's components. */ @@ -925,7 +947,7 @@ var TIMER_INTERVAL = 0.2, [_horizontalScroller setHidden:!shouldShowHorizontalScroller]; [_horizontalScroller setEnabled:hasHorizontalScroll]; - var overlay = 0; + var overlay = [CPScroller scrollerOverlay]; if (_scrollerStyle === CPScrollerStyleLegacy) { // We can thus appropriately account for them changing the content size. @@ -934,10 +956,7 @@ var TIMER_INTERVAL = 0.2, if (shouldShowHorizontalScroller) contentFrame.size.height -= horizontalScrollerHeight; - } - else - { - overlay = [CPScroller scrollerOffset]; + overlay = 0; } var scrollPoint = [_contentView bounds].origin, @@ -1002,9 +1021,7 @@ var TIMER_INTERVAL = 0.2, _timerScrollersHide = [CPTimer scheduledTimerWithTimeInterval:1.2 target:self selector:@selector(_hideScrollers:) userInfo:nil repeats:NO]; } -/* - @ignore -*/ +/* @ignore */ - (void)resizeSubviewsWithOldSize:(CGSize)aSize { [self reflectScrolledClipView:_contentView]; diff --git a/AppKit/CPScroller.j b/AppKit/CPScroller.j index eb114121b..797883c56 100644 --- a/AppKit/CPScroller.j +++ b/AppKit/CPScroller.j @@ -83,6 +83,10 @@ CPThemeStateScrollViewLegacy = CPThemeState("scroller-style-legacy"); int _style; } + +#pragma mark - +#pragma mark Class methods + + (CPString)defaultThemeClass { return "scroller"; @@ -105,8 +109,44 @@ CPThemeStateScrollViewLegacy = CPThemeState("scroller-style-legacy"); }] } ++ (float)scrollerWidth +{ + return [CPScroller scrollerWidthInStyle:CPScrollerStyleLegacy]; +} -// Calculating Layout +/*! + Returns the CPScroller's width for a CPRegularControlSize. +*/ ++ (float)scrollerWidthInStyle:(int)aStyle +{ + var scroller = [[CPScroller alloc] init]; + + if (aStyle == CPScrollerStyleLegacy) + return [scroller valueForThemeAttribute:@"scroller-width" inState:CPThemeStateScrollViewLegacy]; + return [scroller currentValueForThemeAttribute:@"scroller-width"]; +} + +/*! + Returns the CPScroller's overlay value. +*/ ++ (float)scrollerOverlay +{ + return [[[CPScroller alloc] init] currentValueForThemeAttribute:@"track-border-overlay"]; +} + +/*! + Returns the width of a CPScroller for the specified CPControlSize. + @param aControlSize the size of a controller to return the width for +*/ ++ (float)scrollerWidthForControlSize:(CPControlSize)aControlSize +{ + // ?? a class method using self? + return nil//[self scrollerWidth]; +} + + +#pragma mark - +#pragma mark Initialization - (id)initWithFrame:(CGRect)aFrame { @@ -136,20 +176,22 @@ CPThemeStateScrollViewLegacy = CPThemeState("scroller-style-legacy"); return self; } -- (void)_adjustScrollerSize + +#pragma mark - +#pragma mark Getters / Setters + +/*! + Returns the scroller's style +*/ +- (void)style { - var frame = [self frame], - scrollerWidth = [self currentValueForThemeAttribute:@"scroller-width"]; - - if ([self isVertical] && CGRectGetWidth(frame) !== scrollerWidth) - frame.size.width = scrollerWidth; - - if (![self isVertical] && CGRectGetHeight(frame) !== scrollerWidth) - frame.size.height = scrollerWidth; - - [self setFrame:frame]; + return _style } +/*! + Set the scroller's control size + @param aStyle the scroller style: CPScrollerStyleLegacy or CPScrollerStyleOverlay +*/ - (void)setStyle:(id)aStyle { if (_style != nil && _style === aStyle) @@ -171,41 +213,17 @@ CPThemeStateScrollViewLegacy = CPThemeState("scroller-style-legacy"); [self _adjustScrollerSize]; } -// Determining CPScroller Size - -+ (float)scrollerWidth +- (void)setObjectValue:(id)aValue { - return [CPScroller scrollerWidthInStyle:CPScrollerStyleLegacy]; + [super setObjectValue:MIN(1.0, MAX(0.0, +aValue))]; } /*! - Returns the CPScroller's width for a CPRegularControlSize. + Returns the scroller's control size */ -+ (float)scrollerWidthInStyle:(int)aStyle +- (CPControlSize)controlSize { - var scroller = [[CPScroller alloc] init]; - - if (aStyle == CPScrollerStyleLegacy) - return [scroller valueForThemeAttribute:@"scroller-width" inState:CPThemeStateScrollViewLegacy]; - return [scroller currentValueForThemeAttribute:@"scroller-width"]; -} - -/*! - Returns the CPScroller's offset. -*/ -+ (float)scrollerOffset -{ - return [[[CPScroller alloc] init] currentValueForThemeAttribute:@"track-border-overlay"]; -} - -/*! - Returns the width of a CPScroller for the specified CPControlSize. - @param aControlSize the size of a controller to return the width for -*/ -+ (float)scrollerWidthForControlSize:(CPControlSize)aControlSize -{ - // ?? a class method using self? - return nil//[self scrollerWidth]; + return _controlSize; } /*! @@ -224,18 +242,17 @@ CPThemeStateScrollViewLegacy = CPThemeState("scroller-style-legacy"); } /*! - Returns the scroller's control size + Return's the knob's proportion */ -- (CPControlSize)controlSize +- (float)knobProportion { - return _controlSize; -} - -- (void)setObjectValue:(id)aValue -{ - [super setObjectValue:MIN(1.0, MAX(0.0, +aValue))]; + return _knobProportion; } +/*! + Set the knob's proportion + @param aProportion the desired proportion +*/ - (void)setKnobProportion:(float)aProportion { _knobProportion = MIN(1.0, MAX(0.0001, aProportion)); @@ -244,25 +261,28 @@ CPThemeStateScrollViewLegacy = CPThemeState("scroller-style-legacy"); [self setNeedsLayout]; } -/*! - Return's the knob's proportion -*/ -- (float)knobProportion + +#pragma mark - +#pragma mark Privates + +/*! @ignore */ +- (void)_adjustScrollerSize { - return _knobProportion; + var frame = [self frame], + scrollerWidth = [self currentValueForThemeAttribute:@"scroller-width"]; + + if ([self isVertical] && CGRectGetWidth(frame) !== scrollerWidth) + frame.size.width = scrollerWidth; + + if (![self isVertical] && CGRectGetHeight(frame) !== scrollerWidth) + frame.size.height = scrollerWidth; + + [self setFrame:frame]; } -- (id)currentValueForThemeAttribute:(CPString)anAttributeName -{ - var themeState = _themeState; - if (NAMES_FOR_PARTS[_hitPart] + "-color" !== anAttributeName) - themeState &= ~CPThemeStateHighlighted; - - return [self valueForThemeAttribute:anAttributeName inState:themeState]; -} - -// Calculating Layout +#pragma mark - +#pragma mark Utilities - (CGRect)rectForPart:(CPScrollerPart)aPart { @@ -406,7 +426,29 @@ CPThemeStateScrollViewLegacy = CPThemeState("scroller-style-legacy"); return _usableParts; } -// Drawing the Parts +/*! + Display the scroller +*/ +- (void)fadeIn +{ + [self setAlphaValue:1.0]; +} + +/*! + Start the fade out anination +*/ +- (void)fadeOut +{ + if ([self hasThemeState:CPThemeStateScrollViewLegacy]) + return; + + [_animationScroller startAnimation]; +} + + +#pragma mark - +#pragma mark Drawing + /*! Draws the specified arrow and sets the highlight. @param anArrow the arrow to draw @@ -641,6 +683,20 @@ CPThemeStateScrollViewLegacy = CPThemeState("scroller-style-legacy"); [self setNeedsLayout]; } + +#pragma mark - +#pragma mark Overrides + +- (id)currentValueForThemeAttribute:(CPString)anAttributeName +{ + var themeState = _themeState; + + if (NAMES_FOR_PARTS[_hitPart] + "-color" !== anAttributeName) + themeState &= ~CPThemeStateHighlighted; + + return [self valueForThemeAttribute:anAttributeName inState:themeState]; +} + - (void)mouseDown:(CPEvent)anEvent { if (![self isEnabled]) @@ -672,18 +728,9 @@ CPThemeStateScrollViewLegacy = CPThemeState("scroller-style-legacy"); [self fadeOut]; } -- (void)fadeIn -{ - [self setAlphaValue:1.0]; -} -- (void)fadeOut -{ - if ([self hasThemeState:CPThemeStateScrollViewLegacy]) - return; - - [_animationScroller startAnimation]; -} +#pragma mark - +#pragma mark Delegates - (void)animationDidEnd:(CPAnimation)animation { diff --git a/AppKit/Themes/Aristo/Resources/scroller-horizontal-knob-center.png b/AppKit/Themes/Aristo/Resources/scroller-horizontal-knob-center.png index 025c57615d32e9752eeff53c8dfa0f3c4611e0ff..de67709ae1b0a5a608faac91ce6fce77b1b82263 100644 GIT binary patch delta 9 QcmaFLUOd5L@-Aj=02Jl}vj6}9 literal 997 zcmbVL%Wl&^6g5=hQPBlREU1Juau;lfJ>w*HZPipxY&VhW5~Y!dSY={Q8Y{8Kj3>nH z3bBJV-@y;CV4Yv!C*Ttpr*QzO>HPMgI2e9*&w`{g=QolzXC^vB?uD2 zF({IGnp=e}uX!!8FRxV@tWEgLmam-}20hTGjDV&BYa!Gj(2;`b4Z|>A0u3UlLQO?l z4H;HlvmgYUM;2-wT-4J1 zpki=I90A|Wa7y0$F-C{Y|)5FJ8o_&teyMia2kuNB{* z4;%l+-O^3dX==XSf@a6hFqJ(dZYs`{dE#!w=GqwA+#1qSazr4qn$gbHBDmAAbYv5LZ7*1QUrBDyO>1jyu)=g%z*`x_gYj(4-3#OLsqU+6UGP@hvWYWphO?wa# z5xk2C{s9H?t{yz}qM(1ktKe075^qkno2pQHFp$hgp67YLpKNVjUzoo#F9^ayYr|>t zb%wvQa~Jvd%iEu?_;Q&wyKI~E*~q6@utUSmKZOA4Cv^mUz47K`(9KVYG2b@%G_nCpg>*j8I%( z1FN~o1!By6kjJ}8X6BYS);0OQxRymQhOiw=JaMY)ZGi@%7}O+K37`gnh9p!~bzNTu z3Pezbij0&B(#@)3LI@_0$gR<^Z?+wGVvC>y!&UP-d0Qo+GlK%T6G`fdF zmy#Ha^J_+D*oW%Bao07&uxpB|)uB=45s4FS_&+(5xifOn9Dg-SdBr=h*q*jNKb#H^ zPWZ%7J{lhzPXQk*wdL5I{A(|KAY28v!l^}i?e)T&ilrhfO~Z^iLD5&!@I diff --git a/AppKit/Themes/Aristo/Resources/scroller-horizontal-knob-right.png b/AppKit/Themes/Aristo/Resources/scroller-horizontal-knob-right.png index 6c5361615b55661ff7dee485125e8c8280cea451..d1ad107dc69f050fd4ed77952d2bbe0ddf6c8cd4 100644 GIT binary patch delta 10 RcmZqSn8Y~2WAZL$F8~vx1Cjs$ literal 1028 zcmbVLJ#W)M7`FImQKcdzBve>9xoczJIgVXhF^v=3Gy<0@jUXF!>`P;{_8I%qxE(uz z;1BQv7+8=Pfq|I;egGp2BNYrR2so#40jcVMCHp@7KF{-hK3ZS9IX`!8j^nub_Nvuk z>sj{BUYKFu_piP`XUkP;_vi*0(6N_d&J0K&gLdR?;STnKy$A1boq+~nw?}*KZQUo4 z;1xDP9wiLTarKov@%(K}K_730vB7_N^Ogr;VDR^9E_9O?9)_#?Dc;y$>-ziKz83H+ zH$Xkt89{`p2l8kq&h*^iC%ih_7uO;WCMI;-;E$Z@x$B@sQVePWtoTrYKtTek%Brd^ z0SO`~LPKKW?08optvTEOu~4Myb#0F<30YEO)016^6_k{Z1OPqIf$N@kbGkY1=Y*_D2Z9 zK!<1xVO*Sx@*G8L;WXUE zfs>L5O!BLTC+I`@-?*EKrkOR#QJPSzsh{aWR)|d(C>$+&uUVYZ5#g diff --git a/AppKit/Themes/Aristo/Resources/scroller-horizontal-track-center.png b/AppKit/Themes/Aristo/Resources/scroller-horizontal-track-center.png index 3c645b28ede57cb8052170d1e5b16ac21e9fb9ce..7b9720ec82c9e180a751469fe3dd1c0bec36f376 100644 GIT binary patch delta 110 zcmV-!0FnQc0gC~UBxf0PMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0000j zNkl%d;>8OF<{v+P2m=Hd0BF1k^5wd3 QG5`Po07*qoM6N<$f=rw%{r~^~ delta 119 zcmeBXoWeLkrGT@*BeIx*fm;}a85w5Hkzin8P)PO&@?~Jiox#9R+{eK1y_JEX z{TT*^A7>dD^nWuj2wvDJ&>jd>E9L3p7*cU7DIp;tARR;=@C1r7{Qu9)z`BmXWDnyh PKM>#3)z4*}Q$iB}P{|>Q diff --git a/AppKit/Themes/Aristo/Resources/scroller-horizontal-track-left.png b/AppKit/Themes/Aristo/Resources/scroller-horizontal-track-left.png index c8b6c441e61bd90e1cd11d0c9ace4e334a0c2dde..c659f3e551cdb38e6984bb4647b59ea82f416d31 100644 GIT binary patch delta 141 zcmV;80CNAZ0jU9yB!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0000> zNklKM55WKKcpgj<%*38qzF{I*_&q+tF1_cp^gD2OY77(xcpR6Xh#be=i z>3a`XFH8;L@p$pttHb_X?}6sxbP0l+XkK0gW+# diff --git a/AppKit/Themes/Aristo/Resources/scroller-horizontal-track-right.png b/AppKit/Themes/Aristo/Resources/scroller-horizontal-track-right.png index 1a2fce89bfbc4b56032cb775b465a5251c58ff83..18849cea2024a0cd4c08cc2cef7613c82ee181b8 100644 GIT binary patch delta 143 zcmV;A0C4}W0jmL!B!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0000@ zNklu|)&hwLS6pKZAyvhX x5;LPMb}}=#dxvciab{-6+jEykzkLD>0JGi{%Lzi_v;Y7A00>D%PDHLkV1iO!GhzS$ delta 147 zcmZ3@xSnx>NKM55WKKcpgj<%*3{F*F{I*_&+(014GJO*2Of(`Y_V!>{{KJspF`6X ym8#paD8+e41B$-um-G$Ahf@8Gcl;7PcRM6~+TJfx*+&&t;ucLK6TQZ!`7) diff --git a/AppKit/Themes/Aristo/Resources/scroller-legacy-horizontal-knob-center.png b/AppKit/Themes/Aristo/Resources/scroller-legacy-horizontal-knob-center.png index 1dc443e42273d76c21971b9d73bcf618757c45e7..b2112661b8a30e1ab0fab55f6554641b1317bb77 100644 GIT binary patch delta 94 zcmbQpRXssDfL7=A<$( zR4}%N+|RxoAoA~4>f8+vyRFg%Iqfng=A{IeIM3OZ9lq;q)GM>?iXO9<<;Ki9rt-FK z1N+VHe5<47AKC4Gvh&<*&aa-tdrTzp$C?f$pKnT==gl_pRS#y~`F;2OpYJTypFfFP z@Ut-LvWPyvNNBMC(L;ZZJQ2D7i7`&bS^H0hZ+DxRmzui+|K&}U?>B$ulRK7E@-F}W z>VL^sXHDf1{2-&SZ;I&=rH7FVGGnfk2tT;i`F^gU>7lbe#SzO{IOWqV@{=1M_Vg-G zOEWQbn8kUB{iu_b_YMb(8JQ10^WHeuDDp&IZRI4rZkyGvLHbWqTsQH2`ygN3{3(9J ziYYH=uYE4in>$O=?_y2YJ$cL8f}Up#R}b39OYC*rF}EPX?D1mLI;XQL>jc&IK7Ut| zIpb~Wtm%=OLaH($fLPW`AsIw_NjDy~Dq~-@g`hJ*}Md;q?}|-m71tCs~EvzWwCvGUdZZ$^-40 zJ)D~QWKuL9OmyN&oRxfJ)ej#rNhPl(moiI2DmPhNv(}hA?X8S^#mRWS9dTk`qc`pN z_TcxtyQ!oJTCInCaQ_6kbXv#a)GNA~bU28tX{m{zc@^2MCG=2Y-6X))&6+GQgsAIQ! zUhvstZ&WY&TzZ|dV}I9Ir(+U7Cm1?M&E2QsJEzO?)2#q*b++=R*Uuis=wD}_xBE=& z!(Tf&*6I~0_Z<@d>RO}tVW06nyZG(-9f`|t@4KAxda+^D>)n?p?pn05YD)iY^>4O) ztAr&tZQQr9E{sEa%cA5gugxX?49u#ze$zj*PJS=g!d=s`PPemvbyD~Qe{HV(nLKgR zc|6y9+|=7(-T#((Tky5mXPNQEmY=l>UP}Kx{94aElr2v3z{O%c@dd`EPdGQ!#Ob^i zy)ADuZ+pW;>)Xj|ZF3WMb=!rlzFndhEyuWQ&?x097+E*i={n znYpPYi3%0DIeEoa6}C!X6;?ntNLXJ<0j#7X+g2&UH$cHTzbI9~M9)OeK*^3vK|#T$ zC?(A*$i)q+9mum)$|xx*u+rBrFE7_CH`dE9O4m2Ew6xSWFw!?N(gmu}Ew0QfNvzP# zD^`XW0yD=YwK%ybv!En1KTiQKgZ4y6bK3d8Tlpo#Toep3eLf%3ciWSnRy_-jXt_^ zsQotjAV(oN5)uMnQD6|*aRGJ0g42#m<)j5DMr1r)978x{lYjjGZ_g~uETF(4a9;f2 e(PK#tSJ@btUD)DY@6c}pMTMuUpUXO@geCwn@*VmB diff --git a/AppKit/Themes/Aristo/Resources/scroller-legacy-horizontal-knob-left.png b/AppKit/Themes/Aristo/Resources/scroller-legacy-horizontal-knob-left.png index 047e47c967e988b0c9cd00903de7982c5575f150..7c324534778b7f4db191296bf5b6fb8476555b39 100644 GIT binary patch delta 130 zcmV-|0Db?%3Z4OwBYOZDbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy zKuJVFRCwBA{Qv(y0}L=RAOYMQMkuWW#EL9HLJo+vVaha-^{^pxzQZ`oK>Q1cC1IRT kK>PuSxfqFa4nTkb0L8!x$yBR_7XSbN07*qoM6N<$f=~i5qyPW_ literal 1347 zcmeAS@N?(olHy`uVBq!ia0vp^%s|Y?!3HE>ZCjQIxlq%ts6 zFt&!=&%PWW^6ysa+zk)At_gV^0saR z`_1lrtE1%~+3kL^^W1FCub#wvOeFEgnhqtOZ%Uiz%{K8>4`$x^efRyJ?=01yKZ#rL zvoPwih(5naXt4j$Lw}Au5xM_~F;2!=`%i{%cbk}(n!5x4 zDKBTQeJ;?OJ4@2~-8Rw;;mo@nX|Dr?V>S1l9IFe^-(@ z<8A7!>5-a3sxm5jl0w!Q=VU(PX6~Hz?DE?$0h2b&H`#Au9Qpb2+kmMouMLlW{pRiV zW!K*8wET=QDJ!@s@XzZP{pt(^4X^%l9_t6!ogS%uxc{p9R2<-zm3(B?4<9i}C9fryGD|`#H(6Y>)|fo)t&Drc$#}jUabjPiH|_ZL z;PdxO8#eL-U|e*Y$LxM_lSD z|E9p}rDo421W*4{%6;Bw$~)CEp$MK`Yd*yN(8}TRZxuf@egBmc=kBc)Jl#;JW4C%< z@Y!Q;R4@5ldY!Ukf7e&1V-i0n7&=GI-KXL^r_1uwtpILyw(_Re&mP6-UuU1U`%LV^ zUpqP0>J=&X9TNZQTBG=3pYcAs`0e=}iOX;AyPWcRv0>Ef-IpisTC}lhO8;&3Z?=7_ zge5m^+_$kVj6-|NqU0>E%_aT}%&NJ5(?7FLelOUl#bQ121;(XMI5*V9>AV)b zEpIb#d&5NQ+sSKfa}#%U+l8&ZU7{B)$GDq+_0{?3S6#jP{7F4`#o|9~E0wvf9a&l1AfjnEKjFOT9D}DX)@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTK zVr7USFmqf|i<65o3raHc^AtelCMM;Vme?vOfh>Xps5^5D;1=Z-LwyDGpMFJRfxe-h zfj-=1phg>@AFZ5=QWHz^i$e1AbL<>JfuInOkzbNuoRMFk;2dnK;G3A7nFr$A=%Xu# z+Ha!|aukvyAt3-31qOi~7f>fGIPJJpPFjFs#Lv^kF@!@l`Op9V_RKs62PG7w%-dO2 z&Yn1-!MNm#WFt#QBG-`wTP+1Pjs_k9mdy+1d^g}Tp74>oW2qxkkAgUZ?_`!uR}aWc e(BODb#>l|e$s;@U#uXb-ZCjQIxlq%ts6 zFt&!=&%PWW^6ysa+zk)At_gV^0saR z`_1lrtE1%~+3kL^^W1FCub#wvOeFEgnhqtOZ%Uiz%{K8>4`$x^efRyJ?=01yKZ#rL zvoPwih(5naXt4j$Lw}Au5xM_~F;2!=`%i{%cbk}(n!5x4 zDKBTQeJ;?OJ4@2~-8Rw;;mo@nX|Dr?V>S1l9IFe^-(@ z<8A7!>5-a3sxm5jl0w!Q=VU(PX6~Hz?DE?$0h2b&H`#Au9Qpb2+kmMouMLlW{pRiV zW!K*8wET=QDJ!@s@XzZP{pt(^4X^%l9_t6!ogS%uxc{p9R2<-zm3(B?4<9i}C9fryGD|`#H(6Y>)|fo)t&Drc$#}jUabjPiH|_ZL z;PdxO8#eL-U|e*Y$LxM_lSD z|E9p}rDo421W*4{%6;Bw$~)CEp$MK`Yd*yN(8}TRZxuf@egBmc=kBc)Jl#;JW4C%< z@Y!Q;R4@5ldY!Ukf7e&1V-i0n7&=GI-KXL^r_1uwtpILyw(_Re&mP6-UuU1U`%LV^ zUpqP0>J=&X9TNZQTBG=3pYcAs`0e=}iOX;AyPWcRv0>Ef-IpisTC}lhO8;&3Z?=7_ zge5m^+_$kVj6-|NqU0>E%_aT}%&NJ5(?7FLelOUl#bQ121;(XMI5*V9>AV)b zEpIb#d&5NQ+sSKfa}#%U+l8&ZU7{B)$GDq+_0{?3S6#jP{7F4`#o|9~E0wvf9a&l1AfjnEKjFOT9D}DX)@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTK zVr7USFmqf|i<65o3raHc^AtelCMM;Vme?vOfh>Xps5^5D;1=Z-LwyDGpMFJRfxe-h zfj-=1phg>@AFZ5=QWHz^i$e1AbL<>JfuInOkzbNuoRMFk;2dnK;G3A7nFr$A=%Xu# z+Ha!|aukvyAt3-31qOi~7f>fGIPJJpPFjFs#NN}zF@!@l`Op9V_RKs62PG7w%-L14 z`HwtO*sG9Q*>Ps)QKl<@I6LwgeXEap%qeErt0-6@Aa?W) PD7HLZ{an^LB{Ts5dfYI5 diff --git a/AppKit/Themes/Aristo/Resources/scroller-legacy-horizontal-track-center.png b/AppKit/Themes/Aristo/Resources/scroller-legacy-horizontal-track-center.png index b83295f890275922e4123fc357845773365b4278..cd48f051376f7be411ee7e380e83478ab1703483 100644 GIT binary patch delta 127 zcmZ3@HIZ?GWCarg14E+XLvA1?S>hT|5}cn_Ql40p%HWuipOmWLnVXoN8kCxtQdxL1 z)dr}@*we)^q~exLha)e81IOWMjt7|kP4$tub8vBHut!p;q0)?*&yU{COnZ@chKEt+ e_J3POHU`cAd_NDl9J>nC&fw|l=d#Wzp$PziT`i{o literal 1323 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrC!3HGXIhVySFfhwyIy(n=Iy)-_6y>L7=A<$( zR4}%N+|RxoAoA~4>f8+vyRFg%Iqfng=A{IeIM3OZ9lq;q)GM>?iXO9<<;Ki9rt-FK z1N+VHe5<47AKC4Gvh&<*&aa-tdrTzp$C?f$pKnT==gl_pRS#y~`F;2OpYJTypFfFP z@Ut-LvWPyvNNBMC(L;ZZJQ2D7i7`&bS^H0hZ+DxRmzui+|K&}U?>B$ulRK7E@-F}W z>VL^sXHDf1{2-&SZ;I&=rH7FVGGnfk2tT;i`F^gU>7lbe#SzO{IOWqV@{=1M_Vg-G zOEWQbn8kUB{iu_b_YMb(8JQ10^WHeuDDp&IZRI4rZkyGvLHbWqTsQH2`ygN3{3(9J ziYYH=uYE4in>$O=?_y2YJ$cL8f}Up#R}b39OYC*rF}EPX?D1mLI;XQL>jc&IK7Ut| zIpb~Wtm%=OLaH($fLPW`AsIw_NjDy~Dq~-@g`hJ*}Md;q?}|-m71tCs~EvzWwCvGUdZZ$^-40 zJ)D~QWKuL9OmyN&oRxfJ)ej#rNhPl(moiI2DmPhNv(}hA?X8S^#mRWS9dTk`qc`pN z_TcxtyQ!oJTCInCaQ_6kbXv#a)GNA~bU28tX{m{zc@^2MCG=2Y-6X))&6+GQgsAIQ! zUhvstZ&WY&TzZ|dV}I9Ir(+U7Cm1?M&E2QsJEzO?)2#q*b++=R*Uuis=wD}_xBE=& z!(Tf&*6I~0_Z<@d>RO}tVW06nyZG(-9f`|t@4KAxda+^D>)n?p?pn05YD)iY^>4O) ztAr&tZQQr9E{sEa%cA5gugxX?49u#ze$zj*PJS=g!d=s`PPemvbyD~Qe{HV(nLKgR zc|6y9+|=7(-T#((Tky5mXPNQEmY=l>UP}Kx{94aElr2v3z{O%c@dd`EPdGQ!#Ob^i zy)ADuZ+pW;>)Xj|ZF3WMb=!rlzFndhEyuWQ&?x097+E*i={n znYpPYi3%0DIeEoa6}C!X6;?ntNLXJ<0j#7X+g2&UH$cHTzbI9~M9)OeK*^3vK|#T$ zC?(A*$i)q+9mum)$|xx*u+rBrFE7_CH`dE9O4m2Ew6xSWFw!?N(gmu}Ew0QfNvzP# zD^`XW0yD=YwK%ybv!En1KTiQKgZ4y6bK3d8Tlpo#Toep3eLf%3ciWSnRy_-jXt_^ zsQotjAV(oN5)uMnQD6|*aRGJ0g42#m<)j5DM$9~2978x{b-PY-G8ph2mU+M5FO6HV zJv!s7Ko!S3y^yIJb}yRQxWmSiDV^<2-iNw`v^v)#tC^>`D=m1#`LPQWNuI8LF6*2U FngBf^D--|# diff --git a/AppKit/Themes/Aristo/Resources/scroller-legacy-horizontal-track-left.png b/AppKit/Themes/Aristo/Resources/scroller-legacy-horizontal-track-left.png index 050e7206bd0fa9d128a0ff545c585586b9d9c8d1..b2f76be0227f11b001423a5ea5d4f0021eca4f53 100644 GIT binary patch delta 269 zcmV+o0rLL(3!MUx8Gix*004Faal!xq02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM006&9L_t(|+I)~X4umiaMF$8G5o?i(g8QF?BTyoG1c-tLL_xw=JQEg0 z^D4`Jw&QqpU4Q=K9mnxXZQItiE%H$man6}i>Q!!2pt8 zI*dHemu0c@D0moYn&QW%Y0`$Tp`VmxISfPJ_qL5$m%s^CRl&gJQcAq+6kq@-n5NU~ T6{*Pp0000FgZf>Flf!P?VpRnUl)E zP{G(5azFcWfXKgFsdG0x?6yi5# zEzQK#VHW2h_M=W#-a8yDW@JA2%zNWpqsS9=wUv|fx@}gw2I)Udaoxo8?Sp)A^QZU? zE2g}hz4p04Z|*Efzl$|p_v9^W3woY0Ts>$XFR|Bg$J~Mlv&V}~>zvN2tP@n*`}|!= z=8U(gv!+LC3aQGd>`4k)XPlGyjGMW0*0alRzXVL$FyCaqiE-rT$8Q6svb;7t`t_T) z+m~H?uiu_HnfhB$d3DT*@p7soZ37&01sfw6`+u6({5QcEpK&jo!55 z+k@Zp?y6qz+aua~bo=5Pfp51qzTCA*c$Rd1Y2wnwc@NEZKAkO{yPBIL@L$){jUI8S zr~I1&ua}xVn-DzxPbv3#qbcuH%Y-6$cCGmk_d_d(%fD6p(DeORPMo{9R`7H~p^n|^ zdBJCoy-~g7bLn-;j{RL2nPqzZN)!E9MUO#&jqko-!-tIH8 z4}b0CSgTj0+;>R)t80zohkeHT?BciQcO)*qz3+0$>&1pquXkUbxNFhIsww@q)xX*H ztrC{pv~l0Yx-bsyEsK(~yf&BkGcc>>`c41LI{Cd|3wKS&I^E9x)k)zK{I$9AXY#~N z=kZ+caZ_)Db^lxDZNb-KpJm1uTYlCmcq#q&@M}HuP_{V90~d?+#1|NsKH=O@6Q}c9 z^tQasyzLDWt#2ofAZ{?%9KpI>$L?(--0+!c%eu&q?)x^`$` zyb&10_2y1qB70 zqLehNAQv~Nb|BAIDWjyMz)D}gyu4hm+*mKaC|%#s($Z4jz)0W7NEfI=x41H|B(Xv_ zuUHvk2+SOp)Z*l#%z~24{5%Daxrs^nr6smXN+65i0P4=%0=Pwa#ZX@X{ik1%SfFpH zXP^%^8K}_)=tnE(qSVBa{GyQj{2V(+P#`D-WaO9R7iZ)bC^!e3D)=TQXXb(UHu~tw zq4wM8gB*qANJt2PMS($J#|6|03r;&Om6I007-3}fba4#P5bd3Kx~s)Nz%^fv!_HwN zd&$BF|KI;*o&K*;p=oz!Oh?muzojS7cvKm(P7?5cw|8n%YGmAx^o{FY+Z}qn%jvJP z0E@?Ekw6j0qI0@;b8lZT;oYR;94Im&sA)%k!Ts+ZlUOR}Wp_9zwlp1$t(0IhIG49z z`{xZ&aukR-8Dv@DVN&Ol9dtdg1Fy$i> zmpiU1l=_`_Q%GHIG*RcN0gqvya!ZYM+;eN|*lklX8FFtQ`W%|aDi!*6iOyQiYo)xW zWR8D)?+{|Mj8C^BQY<8t^?Iq}#*)QZaz3`*tii#bZJK2=zU+H{xKL&f!w#jo)lo{3 Qppu=z)78&qol`;+0HI5dS^xk5 diff --git a/AppKit/Themes/Aristo/Resources/scroller-legacy-horizontal-track-right.png b/AppKit/Themes/Aristo/Resources/scroller-legacy-horizontal-track-right.png index bb3667ac4fc2106cb1b77c10a396893e7d1d0a20..7c338ed9e2f773cbdb7a7e0a0d806fae1cbd4d38 100644 GIT binary patch delta 285 zcmV+&0pkAq3#|f>8Gix*004Faal!xq02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM007TPL_t(|+I*2s4n#l@Mn|K?PlARs_Xg>0z>R#S}szEGdeo$`<{t@6O^f{3eRzzJ0Z@w%d+gcE{@|(l|k8I7FgZf>Flf!P?VpRnUl)E zP{G(5azFcWfXKgFsdG0x?6yi5# zEzQK#VHW2h_M=W#-a8yDW@JA2%zNWpqsS9=wUv|fx@}gw2I)Udaoxo8?Sp)A^QZU? zE2g}hz4p04Z|*Efzl$|p_v9^W3woY0Ts>$XFR|Bg$J~Mlv&V}~>zvN2tP@n*`}|!= z=8U(gv!+LC3aQGd>`4k)XPlGyjGMW0*0alRzXVL$FyCaqiE-rT$8Q6svb;7t`t_T) z+m~H?uiu_HnfhB$d3DT*@p7soZ37&01sfw6`+u6({5QcEpK&jo!55 z+k@Zp?y6qz+aua~bo=5Pfp51qzTCA*c$Rd1Y2wnwc@NEZKAkO{yPBIL@L$){jUI8S zr~I1&ua}xVn-DzxPbv3#qbcuH%Y-6$cCGmk_d_d(%fD6p(DeORPMo{9R`7H~p^n|^ zdBJCoy-~g7bLn-;j{RL2nPqzZN)!E9MUO#&jqko-!-tIH8 z4}b0CSgTj0+;>R)t80zohkeHT?BciQcO)*qz3+0$>&1pquXkUbxNFhIsww@q)xX*H ztrC{pv~l0Yx-bsyEsK(~yf&BkGcc>>`c41LI{Cd|3wKS&I^E9x)k)zK{I$9AXY#~N z=kZ+caZ_)Db^lxDZNb-KpJm1uTYlCmcq#q&@M}HuP_{V90~d?+#1|NsKH=O@6Q}c9 z^tQasyzLDWt#2ofAZ{?%9KpI>$L?(--0+!c%eu&q?)x^`$` zyb&10_2y1qB70 zqLehNAQv~Nb|BAIDWjyMz)D}gyu4hm+*mKaC|%#s($Z4jz)0W7NEfI=x41H|B(Xv_ zuUHvk2+SOp)Z*l#%z~24{5%Daxrs^nr6smXN+65i0P4=%0=Pwa#ZX@X{ik1%SfFpH zXP^%^8K}_)=tnE(qSVBa{GyQj{2V(+P#`D-WaO9R7iZ)bC^!e3D)=TQXXb(UHu~tw zq4wM8gB*qANJt2PMS($J#|6|03r;&Om6I007-3}dba4#P5bd3Cx~s)Nz%^ga%&ddE zT(4x|1O6Q!kN=e|RNf)sc=Y&>GZB25%RKef0zy{IsV)|t_I&3dd-2!5%t(fgP(0o;(1xb^HnvQ*i8RynLlIM%YB}+1E;gRIJ4_A z<5O{`3*WY?@S1LUdz)AHG}Gx#KIv8p<-e?iCN=!KT^f72GB%v~-7daDnffxd@VEC& zcx8?^zW=>`O_lQV_ma;){?2{kvGJ0LX^f}B^Gr5Z$>SgELZ+o|$c>)8_p7{w%%ORw Sqtxbt5}l{3pUXO@geCxUzLB5+ diff --git a/AppKit/Themes/Aristo/Resources/scroller-legacy-vertical-knob-bottom.png b/AppKit/Themes/Aristo/Resources/scroller-legacy-vertical-knob-bottom.png index 1715d2dcfcf887b1b7744748ec72fd1615098aff..0d925df8106f2c3535bba0128d96c4af69e6f965 100644 GIT binary patch delta 129 zcmV-{0Dk|v3Y`IvBYFTCbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUy zKS@MERCwBA{Qv(y12SM_WV8oTd<>Z26Hx6z7>5aqf}0H3!7UUEu-FKqB!E~2hy{W8 jJrLgk;upwj0RjvF{NNI@H9)y@00000NkvXXu0mjf6}~To literal 1338 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_1!3HE3U$f%}vgI~=rdd2Tl6S5M+SCX)DLO^1@tH>J(p+85Sh}{3g7$@Vb{U^h>yG_hX&E0|j@}|o7n?Li(9m^?smw$it zzvQd4rt%1WkWtt-#q@~M!^j1hF;_~2A6)BvKiAOo&{?12h~+Gt^63`&$&C+tdX=Z8 znV34v;ylED)XBfJqzXo9s6+j{N-iZNOBP*M>*Ge)D$w zvTN`4+Y=|VKQ^^nu6eEA;osixUyHh)R!;ixdW&4|)i2SLtio>JesXr1^5G-pf%eQE zPECC>DH;zZI`JgVNr;JWIW%FII*wMn|6GA z@O$1})$4tGL|cz;Uwk9*?bgPZyEX~WlCCdJT)H^#q500Iv!!!ab8`g#>w3D;BQEun ze^cP~QnP0hf~Wr}UJbNAK?o^B}Av0FVa z`0TMas+W8&y-wM&zw4{hF^QiO44tFq?o;ud(`EVTRsgp;TY1y#XOCj^ud~nFeJ1wd zubmug^@^1H4vBwttx^22&v>6*{Pz5g#O1g5T~2wu*f8q#?#mN*E!tQ$rT@12H`~5d z!jhXd?%P-w#-Y7sQF4~o<`RDfX4PE3>7Q9AzZY!buIX5(+u6T5DSU#zHdp>kp1A2e zp6fks>TR&@f6Kfr_*(3<%=lu<&sqg9rT-p&t!Ey}7AJY&VzHk10^`yroEvK5bY6?z zmbaO=yv0i>ry1t>MrKP@sk-m|UE>MMTab;dfVufyA zu`tKo-FP)SbBnaEtPap}qq8Pro9uK;KZ$ zKp$>0P@@gdk5zopr07kno5C8xG diff --git a/AppKit/Themes/Aristo/Resources/scroller-legacy-vertical-knob-center.png b/AppKit/Themes/Aristo/Resources/scroller-legacy-vertical-knob-center.png index 5bf0395692c6fa457154bc9797b85139f875b7cc..8e9272da955179f2e9edba38e4c177507af11b6b 100644 GIT binary patch delta 94 zcmbQhRXssDfWn zs9z&x-*5iRCwDBT>i?CDjW zmS$q=FpKjL`%xz=?;Q>nGcq51=Dl&QQRIob+R90K-8QRTgY=)KxNhS4_Cdb5`BVIc z6;oc$Ui)02H+Pn#-^H4)d-9gG1wGFgt{$|Hm)PsLV{So&+2h5gbxvnh)(NWZeg3W_ zbH>}$S<@pmg;Zr!_9TU@GtS9;#?9P0>)GYEUjim=m~XP*#5nTvLNaZn@^QdWU~|zke<2dRjT@!|N?_y;r|PPqGTTef!DTWy*(-ln2@~ zdpI@q$)spJnCQflI4k+csvkaLl1g4nE@hU4RBp1kX00)K+FKd-ij(ntJL1H?MsM2j z?ZNMPcU7TKmrub(}N(Z9|fdbp zRtZaP+PH6HT^NVoo;9U>ZI@q{@PsmGkM~s z^LVcJxT&|ny8kWnw%}{A&obkSEkA1&yp;ZX__dySC|jK5fs4g@;tPyRpKxxdiPL#4 zdRyLR-u8xx*0+<_+U6$i>b478eY-?2T8?oy|LUvr&#$_A_xY20?ux~K*j6fYT|2Ze z-UygsI14-?iy0WWg+Z8+Vb&Z8U{)&342dX-@b$4u&d=3LOvz75)vL%Y0IFtSu&J;D zGILW)5)~?PbMlI0ooeue djalZ0e=uC{W&6KVr_TZu6P~VqF6*2UngG?QAlU!_ diff --git a/AppKit/Themes/Aristo/Resources/scroller-legacy-vertical-knob-top.png b/AppKit/Themes/Aristo/Resources/scroller-legacy-vertical-knob-top.png index f7947c66ebb96fbefab4e73da24cda3761aa6dda..d34e638b87c9a500b43eccfd61d5bdb9f73c541d 100644 GIT binary patch delta 129 zcmdnNHJ5RMautJQiEBhjaDG}zd16s2gJVj5QmTSyZen_BP-3)dm>D_m^F>rd~=rdd2Tl6S5M+SCX)DLO^1@tH>J(p+85Sh}{3g7$@Vb{U^h>yG_hX&E0|j@}|o7n?Li(9m^?smw$it zzvQd4rt%1WkWtt-#q@~M!^j1hF;_~2A6)BvKiAOo&{?12h~+Gt^63`&$&C+tdX=Z8 znV34v;ylED)XBfJqzXo9s6+j{N-iZNOBP*M>*Ge)D$w zvTN`4+Y=|VKQ^^nu6eEA;osixUyHh)R!;ixdW&4|)i2SLtio>JesXr1^5G-pf%eQE zPECC>DH;zZI`JgVNr;JWIW%FII*wMn|6GA z@O$1})$4tGL|cz;Uwk9*?bgPZyEX~WlCCdJT)H^#q500Iv!!!ab8`g#>w3D;BQEun ze^cP~QnP0hf~Wr}UJbNAK?o^B}Av0FVa z`0TMas+W8&y-wM&zw4{hF^QiO44tFq?o;ud(`EVTRsgp;TY1y#XOCj^ud~nFeJ1wd zubmug^@^1H4vBwttx^22&v>6*{Pz5g#O1g5T~2wu*f8q#?#mN*E!tQ$rT@12H`~5d z!jhXd?%P-w#-Y7sQF4~o<`RDfX4PE3>7Q9AzZY!buIX5(+u6T5DSU#zHdp>kp1A2e zp6fks>TR&@f6Kfr_*(3<%=lu<&sqg9rT-p&t!Ey}7AJY&VzHk10^`yroEvK5bY6?z zmbaO=yv0i>ry1t>MrKP@sk-m|UE>MMTab;dfVufyA zu`tKo-FP)SbBnaEtPap}qq8Pro9uK;KZ$ zKp$>0P@@gdk5u9b|2 z_5$@RkD?t)*Eg8R7%a+W$r55eHS1ugf<$^l*8Iaed<@ux);1n-OKXZ@U}xAXC+Pbu S@U}Q8#ynm9T-G@yGywnvHY`;D diff --git a/AppKit/Themes/Aristo/Resources/scroller-legacy-vertical-track-bottom.png b/AppKit/Themes/Aristo/Resources/scroller-legacy-vertical-track-bottom.png index 61d1eb3e4216380c89f8206ea3b68c5a7a91d74e..7f53deda98143538bc000c1331c3f97a7fe9539f 100644 GIT binary patch literal 310 zcmV-60m=S}P)-*<`| z=NzKrIOGfC1pw;1LSU+|ssf z*L76}d7dN6IF3TYHP5B4>#pmPBvG!|sVIu7s`|bUg24BEM8`Ykr)h#~nx^=H-odeT zmSqS8b<;GkL@F#0MG=OP6$A9WX&lGs$uI7%Y5dH8q?Z5#0Q+Z~fEt`eQ~&?~07*qo IM6N<$f{L|)`2YX_ literal 1552 zcmZ8g3pCVO82?LNGb4#Y#27?j#ybWRhEN_OLH#4O`KX8tmEl_HKu$Rji!iIz&< zEh1y{s&-dG9yME7uVZID3KOl>j#6jO-gCZtzwbN0@Ap0Ky(t72dr8p!u_V)fX<-iM>h#u|3i6#Bdv8h*t^V580BvvZVF< z$tWj2skOA71s##-8DFr~4|@ zy1Jv?jte{3#AhgxwI;G`5F~bR_q}ze0}7~si2_7UF?5 zzlIk6#NQ=vG)6NX?N97!E+2DS`04U|Yl941F)oVqV|m2nv4=B-inJ=YxZ76hOuYk< z@{4P{+h~-@>^1lN%_w-kLGGf)`F-Aq*89uE^`qf1*F?F_{EnATpTDh^{`FF%4z8-i zy|4E#jX|eD9=W9>be?p%~=_Wm^it|=NF&zt?jA2TXe()Qcg$&U}k ztI-U#j83^VyI9p_jv)sZ&PDE zjJWoLvf%GdHbSm|um;T~e?=r`N%{&rHn~POC9^8X>zb=J47`CL<|7b+TpaH;wg%zkY3PeJ(XyFk|EXxx08G#k(+inaB z`56L*S)#n12}nH1pdgLVMrb`04u(V`Eg0l;*weNrcESagB`Oqx=vWLUIyxF1ZHNXL zAsBr#Gc$~y0mi^USAfuE#za6QmTm-7?F-3Q9$N}Cm_emOR4@X$%}WXbqaaHZYCF-l zwNodJ{w+}ibEhjoe;5{tj?qW!VZJd70xbkRV(|HO$#NV4C3{GN}3Nyq9NBV4{m}Ef1@e+NljwwQ^~y;StMC`C#5QQ<|d}62BjvZR2H60 zwE-&9^>lFzskkL`kdc?cfP;BM|HOxk|Gfmv=3Pii+Z7!Y`Z7iBWCz2CbMJ2bW8z`x X4CMHh`gesCP$PqWn zs9z&x-*5iRCwDBT>i?CDjW zmS$q=FpKjL`%xz=?;Q>nGcq51=Dl&QQRIob+R90K-8QRTgY=)KxNhS4_Cdb5`BVIc z6;oc$Ui)02H+Pn#-^H4)d-9gG1wGFgt{$|Hm)PsLV{So&+2h5gbxvnh)(NWZeg3W_ zbH>}$S<@pmg;Zr!_9TU@GtS9;#?9P0>)GYEUjim=m~XP*#5nTvLNaZn@^QdWU~|zke<2dRjT@!|N?_y;r|PPqGTTef!DTWy*(-ln2@~ zdpI@q$)spJnCQflI4k+csvkaLl1g4nE@hU4RBp1kX00)K+FKd-ij(ntJL1H?MsM2j z?ZNMPcU7TKmrub(}N(Z9|fdbp zRtZaP+PH6HT^NVoo;9U>ZI@q{@PsmGkM~s z^LVcJxT&|ny8kWnw%}{A&obkSEkA1&yp;ZX__dySC|jK5fs4g@;tPyRpKxxdiPL#4 zdRyLR-u8xx*0+<_+U6$i>b478eY-?2T8?oy|LUvr&#$_A_xY20?ux~K*j6fYT|2Ze z-UygsI14-?iy0WWg+Z8+Vb&Z8U{)&342dX-@b$4u&d=3LOvz75)vL%Y0IFtSu&J;D zGILW)5)~?PbMlI0oKG(BLdS>UUs(bw$JFL&}sC=BVQB02y>eSaefwW^{L9a%BKPWN%_+AW3auXJt}l zVPtu6$z?nM007WQL_t(|+O&|n3WGopMYFE&w;~o|9vNTPP<9L1*0O9eo{)3A5pl#cxX@+6g_kW#Is_VMzx~6Hqq06$A zWjW8YVHj~7OOiwgnWm}l`>yN4FhnO?0I59B;S>acZQF{X$g-@es^@u0lEAyFs&!qN zYf%&^IF2Kpf+b$z6udD6VO`e@-L}p5eT)!qx=>s+ilT8G8LDX-FVLHKhW`W&*o~o> k$T{Id*KsV%dKU>W0K|D@a_afuS^xk507*qoM6N<$f)QPWk^lez literal 1536 zcmeAS@N?(olHy`uVBq!ia0vp^d_c_2!3HG#TlXX}FfhwyIy(n=Iy)-_6y>L7=A<$( zR4}%N+|RxoAoA~4>f8+vyRFg%Iqfng=A{IeIM3OZ9lq;q)GM>?iXO9<<;Ki9rt-FK z1N+VHe5<47AKC4Gvh&<*&aa-tdrTzp$C?f$pKnT==gl_pRS#y~`F;2OpYJTypFfFP z@Ut-LvWPyvNNBMC(L;ZZJQ2D7i7`&bS^H0hZ+DxRmzui+|K&}U?>B$ulRK7E@-F}W z>VL^sXHDf1{2-&SZ;I&=rH7FVGGnfk2tT;i`F^gU>7lbe#SzO{IOWqV@{=1M_Vg-G zOEWQbn8kUB{iu_b_YMb(8JQ10^WHeuDDp&IZRI4rZkyGvLHbWqTsQH2`ygN3{3(9J ziYYH=uYE4in>$O=?_y2YJ$cL8f}Up#R}b39OYC*rF}EPX?D1mLI;XQL>jc&IK7Ut| zIpb~Wtm%=OLaH($fLPW`AsIw_NjDy~Dq~-@g`hJ*}Md;q?}|-m71tCs~EvzWwCvGUdZZ$^-40 zJ)D~QWKuL9OmyN&oRxfJ)ej#rNhPl(moiI2DmPhNv(}hA?X8S^#mRWS9dTk`qc`pN z_TcxtyQ!oJTCInCaQ_6kbXv#a)GNA~bU28tX{m{zc@^2MCG=2Y-6X))&6+GQgsAIQ! zUhvstZ&WY&TzZ|dV}I9Ir(+U7Cm1?M&E2QsJEzO?)2#q*b++=R*Uuis=wD}_xBE=& z!(Tf&*6I~0_Z<@d>RO}tVW06nyZG(-9f`|t@4KAxda+^D>)n?p?pn05YD)iY^>4O) ztAr&tZQQr9E{sEa%cA5gugxX?49u#ze$zj*PJS=g!d=s`PPemvbyD~Qe{HV(nLKgR zc|6y9+|=7(-T#((Tky5mXPNQEmY=l>UP}Kx{94aElr2v3z{O%c@dd`EPdGQ!#Ob^i zy)ADuZ+pW;>)Xj|ZF3WMb=!rlzFndhEyuWQ&?x097+E*i={n znYpPYi3%0DIeEoa6}C!X6;?ntNLXJ<0j#7X+g2&UH$cHTzbI9~M9)OeK*^3vK|#T$ zC?(A*$i)q+9mum)$|xx*u+rBrFE7_CH`dE9O4m2Ew6xSWFw!?N(gmu}Ew0QfNvzP# zD^`XW0yD=YwK%ybv!En1KTiQKgZ4y6bK3d8Tlpo#Toep3eLf%3ciWSnRy_-jXt_^ zsQotjAV(oN5)uMnQD6|*aRGJ0g42#m<)j5LMi{w0T^vI+ME6eInb+dL(^mh^+WQ7~ zCtJp*^@o^0b4@WRnG&Lq8h$H@v%HCYqtogT&7_yp-IMFT-8g)-@Qd&A*KQ{9Wty*RJA9jeJzMKUspUV-d$;gAMj?Hdf!Zy*xkR_O=t7cziD( z*rdba$PhX0V4=*b^-|k!^Iku%ZF9a^f#Y=1t6grBRMs56X?wVC`@&UPBCd_=UR%iZ z?Wl=Kn5Fi~#{GI}g6w6J)@7LmGVGHy3{Q5Qu~~iY^Mmx(L=MkM0U}44zSZ_$etG2C zLIz>c8Rw%X{5$`>)<&+Mb;-k(N}ba-Ugf$Jrs22Y^)7A??+2}{QQQI>oStk?yKPp- Yz*L{HF`4Jp3{cARboFyt=akR{0HHROQ~&?~ diff --git a/AppKit/Themes/Aristo/Resources/scroller-vertical-knob-bottom.png b/AppKit/Themes/Aristo/Resources/scroller-vertical-knob-bottom.png index c2b5d135edff6096026aa56a91e3c24ec10a0462..6bb0e9a69f91aef382fedc382ca383d812408603 100644 GIT binary patch delta 10 RcmZqR=wqDVF?koW8vqkm1BL(q literal 1024 zcmbVLJ#W)M7`9Z=LQ&ZmU_d8#CH9?@*tJ!+b>f&t!lg=s2orVeOJlY68T(4yPKb$a zj0`ZcAz)_!2^f&rU_$%{KukysyiVf+Qq=)V_I>z$p6C5MSYNv`H+ykb5QMq*s@;Kg z2HvUD)9}6Z=KMQYF7Q^5Z?FL$c_|gFfb}VAN8T3gP%qfK{hlrYU=VhDyyspud=^Pw zVI$>H0%$>4T+S2E-=-Y(=~ft<;@6k2L=*<5c%$xOH)+ygxVoRxjs3N*zrXG4fw;Vc z7IOm#BFa6KM>}z5ggeV>Ee0P)mb>(XpM07Mx6R$a!MO@@O=YMpcQWTQbpgz2H!k3RqOK zy_kD>CC=tc2AgJn8YVnsF)A3nKHKG{2%a8>5GAgAL>y<6L_x~r+)HF4VL6J5xW?8Q z@6bPP9BZ9*_Yx|1XvTI^AL=ofFTs$zlZ6UH@W!~7hENo5$7cR+L}T8zO%eV`K^PdA zEMP*k8rBr7E)b#BRa+@Jj>Bp#$HuC<&{8oVTi9w<>$X#C5DQzHrPNDo zJI=Tl`?S;zL3e`HPQ)6`lzN<{UB-6G4p<*D&axp(P;;Y>T+a{V;#`#HFj||Y;T;+{ zDT~lJzeaeBKCb;6cSF^6tFAa|1M5}rN}OPW|H+vQ&d5b`{M9Vw6?9;+J!*Y891RbR zVPaAkjVGUeK83NuZQJVRpZme)=8KvB()87D2WM8l1h3Dah*H=EAdi!YQ*QNW< eh3{wY3RA+z2Q!bSZ$A7{%w)T@WdMy7^a$7Q|+aRhZ+wPdUat27ARz~VRyi8B5kwX#P!x$nC+4-48qiR@jB(^;)KsLk zkmcx_10h&FvQR7Hi8H{#N=uwvdCGb2sOo$^SLV9Hic=NYwq0{*T1!~8%8QJXs+E;H z4FjfSR3tf1SO#iFGG^!8m4&BQA*6X2UK3~KDp4Y3YDIDtDNs$*I@;AJyW53oL*b2cSR|q-WQJLEp3;o>u`7!|N}R+FM7t0ns|_s; zn!56=g>edzhRfrEAzdC;>w&1kUwtmGt%Xrr45 z-4)ij73=g0N;oTqjLn)3IGQrf$|=i1@7Mq#iIS{7*X6m27SkemL*t-eDOl#$Np8@G z?SJF$nzrp3T3~jety{h+udwm|ee4aZALIDs#6Je2l!+6^q3BM#j{%sHzGq z%i3GK*=#7hF;!)hs+RvFCcfZ&Y##J_ixbB=HyJyk0`w+CRITAQA~w)qyG97Z5LT;r z{^UO1G0%Ihl4L!MqHtZ71u(|`yfKbrLi+vnc}oqLwr$I~>qheR7z~I*R@0-qSJyWejG03vI?apXuq?|&8MG{l{9!ho zj1;F(D5-8MZVOP)9gVJnsn3vphy)5k19vT!nt(c4X`!KWxC7e5j{pMz+Xv87014kE P00000NkvXXu0mjf4qCHR diff --git a/AppKit/Themes/Aristo/Resources/scroller-vertical-knob-disabled-center.png b/AppKit/Themes/Aristo/Resources/scroller-vertical-knob-disabled-center.png deleted file mode 100644 index 2756a41caf48223caedd31fc5c418b0c4ef3b47f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 143 zcmeAS@N?(olHy`uVBq!ia0vp^{6Nge!2~4x_9f>6DajJoh?3y^w370~qErUQl>DSr z1<%~X^wgl##FWaylc_d9MTVX(jv*DdlJ4w&->_=ctM-2R|Ns8}{{8*Eef_^bzrITI qIDC;;VB!Av^Y`;tSF;%y*%)%pX{4VG-@Y2CnZeW5&t;ucLK6UXG&P(6 diff --git a/AppKit/Themes/Aristo/Resources/scroller-vertical-knob-disabled-top.png b/AppKit/Themes/Aristo/Resources/scroller-vertical-knob-disabled-top.png deleted file mode 100644 index 6ca32cb884164f357160dd5282202ae210e94149..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 424 zcmV;Z0ayNsP)pmJa)55b~6b{ zER>*VA(}!&)N*UF@_`sjOP`gW;8)n%TiB_j_Xotnko5}^*svq}nDLHm5kxUwILw{l zo|!u{#P@yp76hR=BuD3{9Fqh8K{9I=Vk2x!&X5>Mkko9#$3&CcC#Po}#`sno$8Gr` z7ote^rIfEyM&0hy;~mySIWfVuzr@2%XRg(ny(yN8zET>pOaY}7!chpLFoeNy2*bhP zx!-%c3W9zQozR@d&Mz)kJkNU&)oP7%3-DAVfh0+w=s3U_gL2sg&iH1UX7?KO{(BI- z(50ni2c6qybE;MdMy7$&J{nv?ldnCiLpU3@lJ+v0)dmB&9anjc($hvM{?#S{Q_Bm-b*9 z4<@~N^jCQG;K74>@DF(KN7SnaV;r_i)uib`5||I(=Xu`G^WB|?iwk!bIF4KNw(JgD z=h!|d9ORg@BGSjeOM)Tp;2=7A{snI^z##7SXwTm^LXrqU zWh0bH#?TzMu~}w8cz`MB<6)ed{P*`Cco0V>|3vYjpSAHQ-a5_k-sw&^JUs~Yh~Inw zHcEpLB$x)EOb*k+C{2FCYp{KFE%IPuLJv&-(y5-m3)&>dKoMXggen9o5|G@~H0?f+ zAc7*4L?ktkX2_BOA(%cqQ_G`)(XrjB7CV{zh|hA<2CIia0H%iDD@e%ODex0L3J!;+j|& zw1fY+ajkXHJ;|`x!38}nhHx~x yT5IUNBQvr0X2K&?1rhlVCmpoN+22oq0RRWb8ZBS*GFbos00{s|MNUMnLSTZ|dN^tT delta 145 zcmZ3(xR!B(NKM55WKKcpgj<%*4Wd(?0o0t^6G*a>h@7%xu%0000< KMNUMnLSTX*WGCYQ delta 115 zcmZo=oWM9iC5N-XBeIx*fm;}a85w5Hkzin8P)PO&@?~Jiox#9R+{eK1y_JEX z{TT*^A7>dD^nWuj2wvDJ&>jd>E9U9q7*cU7DJ3BxApHO%P=w+Ce`W?2P6kcQ9iNgx Nd{0+Dmvv4FO#rLJA7KCh diff --git a/AppKit/Themes/Aristo/Resources/scroller-vertical-track-top.png b/AppKit/Themes/Aristo/Resources/scroller-vertical-track-top.png index f0534175f0d9d2fff6da028031afe9e132aa5995..7ffd824d22842d0ad9c3470c47a0713bbff61199 100644 GIT binary patch delta 143 zcmV;A0C4}Y0jmL!B!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0000@ zNklY$sG?f-vUr;Z&Ij%zOPBqT=GS`ZNf5JX9lm-#0&ySVuP xRYg@{52)whxy)>2CL#jvjyWf~`}_qM0IGo&;>hs=RR91000>D%PDHLkV1i&#HKM55WKKcpgj<%*4)#@F{I*F&PheC0}2cb2PSv&Y`OX6fBa@$F1O~3 zv3nn!SW&U@Ln50<$@Y&66#u2%0_yqypPAw5Q5JJ%cfPzTAfLh0)z4*}Q$iB}bU-sX