static Class $CydgetController(objc_getClass("CydgetController"));
-static Class $UIWebBrowserView;
+MSClassHook(UIWebBrowserView)
+MSClassHook(SBAwayView)
+
static bool Wildcat_, iOS4;
@interface NSString (UIKit)
@end
+MSInstanceMessageHook0(UIView *, SBAwayView, inputView) {
+ return [[[UIView alloc] init] autorelease];
+}
+
@interface WebCydgetLockScreenView : UIView {
CydgetWebView *webview_;
UIScrollView *scroller_;
iOS4 = kCFCoreFoundationVersionNumber >= 550.32;
- $UIWebBrowserView = objc_getClass("UIWebBrowserView");
if ($UIWebBrowserView == nil) {
Wildcat_ = false;
$UIWebBrowserView = objc_getClass("UIWebDocumentView");
- (void) disableCydget:(SBAwayController *)away;
@end
+@interface UIPeripheralHost : NSObject
++ (UIPeripheralHost *) sharedInstance;
++ (void) _releaseSharedInstance;
+- (void) createAutomaticKeyboardIfNeeded;
+@end
+
+MSClassHook(UIPeripheralHost)
+
+@interface UITextEffectsWindow : UIWindow
++ (UIWindow *) sharedTextEffectsWindow;
+@end
+
@implementation NSDictionary (Cydgets)
- (void) enableCydget:(SBAwayController *)away {
if (NSString *plugin = [self objectForKey:@"CYPlugin"] ?: [self objectForKey:@"Plugin"]) {
+ UIKeyboardEnableAutomaticAppearance();
+ [[$UIPeripheralHost sharedInstance] createAutomaticKeyboardIfNeeded];
+ [[UITextEffectsWindow sharedTextEffectsWindow] setWindowLevel:1000];
+
[away enableLockScreenBundleWithName:plugin];
++online_;
}
if (NSString *plugin = [self objectForKey:@"CYPlugin"] ?: [self objectForKey:@"Plugin"]) {
--online_;
[away disableLockScreenBundleWithName:plugin];
+
+ [$UIPeripheralHost _releaseSharedInstance];
+ UIKeyboardDisableAutomaticAppearance();
}
}
@end
+MSInstanceMessageHook1(void, SpringBoard, handleKeyEvent, GSEventRef, event) {
+ MSSuperCall(event);
+}
+
MSInstanceMessageHook0(BOOL, SBAwayController, handleMenuButtonTap) {
if (!MSOldCall() && menu_) {
[[cydgets_ objectAtIndex:active_] disableCydget:self];