]> git.saurik.com Git - cydia.git/commitdiff
Use document.dispatchEvent() for UIViewController events.
authorJay Freeman (saurik) <saurik@saurik.com>
Thu, 17 Feb 2011 09:45:59 +0000 (01:45 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Thu, 17 Feb 2011 10:21:53 +0000 (02:21 -0800)
UICaboodle/BrowserView.h
UICaboodle/BrowserView.mm

index f6d689aa5c2524a72774be2bbb25b1debe285a47..692704a6562a82a398a0b9586930b8750fed3dfe 100644 (file)
 
 - (void) close;
 
+- (void) dispatchEvent:(NSString *)event;
+
 @end
index 956e359ad7a61fb5e4cfb8c93eb9c6471ab6cc49..bdb57531530a98445d65829591b405c7139830d5 100644 (file)
@@ -1174,4 +1174,47 @@ static void $UIWebViewWebViewDelegate$webViewClose$(UIWebViewWebViewDelegate *se
     return 980;
 }
 
+- (void) dispatchEvent:(NSString *)event {
+    WebThreadLocked lock;
+
+    NSString *script([NSString stringWithFormat:@
+        "(function() {"
+            "var event = this.document.createEvent('Events');"
+            "event.initEvent('%@', false, false);"
+            "this.document.dispatchEvent(event);"
+        "})();"
+    , event]);
+
+    NSMutableArray *frames([NSMutableArray arrayWithObjects:
+        [[[webview_ _documentView] webView] mainFrame]
+    , nil]);
+
+    while (WebFrame *frame = [frames lastObject]) {
+        WebScriptObject *object([frame windowObject]);
+        [object evaluateWebScript:script];
+        [frames removeLastObject];
+        [frames addObjectsFromArray:[frame childFrames]];
+    }
+}
+
+- (void) viewWillAppear:(BOOL)animated {
+    [self dispatchEvent:@"CydiaViewWillAppear"];
+    [super viewWillAppear:animated];
+}
+
+- (void) viewDidAppear:(BOOL)animated {
+    [self dispatchEvent:@"CydiaViewDidAppear"];
+    [super viewDidAppear:animated];
+}
+
+- (void) viewWillDisappear:(BOOL)animated {
+    [self dispatchEvent:@"CydiaViewWillDisappear"];
+    [super viewWillDisappear:animated];
+}
+
+- (void) viewDidDisappear:(BOOL)animated {
+    [self dispatchEvent:@"CydiaViewDidDisappear"];
+    [super viewDidDisappear:animated];
+}
+
 @end