X-Git-Url: https://git.saurik.com/fiveicondock.git/blobdiff_plain/1714f15af4dd98c7f39d1d6aedc8230622c54803..ece3fb524651229027f66cee8025a4325b079f23:/Tweak.mm diff --git a/Tweak.mm b/Tweak.mm index abe8c3a..9f492cb 100644 --- a/Tweak.mm +++ b/Tweak.mm @@ -3,14 +3,22 @@ #import <Foundation/NSArray.h> #import <Foundation/NSNull.h> #import <CoreGraphics/CGGeometry.h> + #import <SpringBoard/SBButtonBar.h> #import <SpringBoard/SBIcon.h> #import <SpringBoard/SBIconModel.h> +@interface SBDockIconListView : NSObject { +} +- (NSArray *) icons; +@end + MSClassHook(SBButtonBar) +MSClassHook(SBDockIconListView) MSClassHook(SBIcon) MSClassHook(SBIconModel) +MSMetaClassHook(SBDockIconListView) MSMetaClassHook(SBIconModel) MSInstanceMessageHook1(float, SBButtonBar, leftMarginForIconRowArray, NSArray *, row) { @@ -21,6 +29,10 @@ MSInstanceMessageHook0(int, SBButtonBar, maxIconColumns) { return 5; } +MSClassMessageHook1(int, SBDockIconListView, iconColumnsForInterfaceOrientation, int, orientation) { + return 5; +} + static unsigned $SBButtonBar$count(SBButtonBar *self) { MSIvarHook(NSArray *, _iconMatrix); NSArray *row([_iconMatrix objectAtIndex:0]); @@ -71,6 +83,25 @@ MSInstanceMessageHook2(CGPoint, SBButtonBar, originForIconAtX,Y, int, x, int, y) return origin; } +// XXX: merge with previous function if possible, but not until after iPhone 4 +MSInstanceMessageHook2(CGPoint, SBDockIconListView, originForIconAtX,Y, int, x, int, y) { + CGPoint origin;//(MSOldCall(x, y, )); + //NSLog(@"f:%u,%u=(%f,%f)", x, y, origin.x, origin.y); + origin.y = 11; + + unsigned count([[self icons] count]), gap; + unsigned space(320 - 60 * count); + + if (count >= 4) + gap = space / (count + 1); + else // I hate people who love Apple. + gap = 16; + + origin.x = (space - gap * (count - 1)) / 2 + (60 + gap) * x; + + return origin; +} + /*MSClassMessageHook0(int, SBIconModel, maxIconListCount) { return 16; }*/