]> git.saurik.com Git - cydia.git/commitdiff
I cannot express how angry this mechanism makes me.
authorJay Freeman (saurik) <saurik@saurik.com>
Thu, 24 Feb 2011 01:55:56 +0000 (17:55 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Mon, 7 Mar 2011 10:41:12 +0000 (02:41 -0800)
MobileCydia.mm

index 83215cfab339e95e354b078dc12f593e397f60c2..999a708fcc28c74fbdf0f1e2e45c009ce8c97aa8 100644 (file)
@@ -8981,11 +8981,33 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
     }
 }
 
-- (void) presentModalViewController:(UIViewController *)controller {
+- (void) disemulate {
+    if (emulated_ == nil)
+        return;
+
+    [window_ addSubview:[tabbar_ view]];
+    [[emulated_ view] removeFromSuperview];
+    [emulated_ release];
+    emulated_ = nil;
+    [window_ setUserInteractionEnabled:YES];
+}
+
+- (void) presentModalViewController:(UIViewController *)controller force:(BOOL)force {
     UINavigationController *navigation([[[CYNavigationController alloc] initWithRootViewController:controller] autorelease]);
     if (IsWildcat_)
         [navigation setModalPresentationStyle:UIModalPresentationFormSheet];
-    [((UIViewController *) emulated_ ?: tabbar_) presentModalViewController:navigation animated:YES];
+
+    UIViewController *parent;
+    if (emulated_ == nil)
+        parent = tabbar_;
+    else if (!force)
+        parent = emulated_;
+    else {
+        [self disemulate];
+        parent = tabbar_;
+    }
+
+    [parent presentModalViewController:navigation animated:YES];
 }
 
 - (ProgressController *) invokeNewProgress:(NSInvocation *)invocation forController:(UINavigationController *)navigation withTitle:(NSString *)title {
@@ -8994,7 +9016,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
     if (navigation != nil)
         [navigation pushViewController:progress animated:YES];
     else
-        [self presentModalViewController:progress];
+        [self presentModalViewController:progress force:YES];
 
     [progress invoke:invocation withTitle:title];
     return progress;
@@ -9588,7 +9610,7 @@ _trace();
 _trace();
     if (Role_ == nil) {
         [window_ setUserInteractionEnabled:YES];
-        [self presentModalViewController:[[[SettingsController alloc] initWithDatabase:database_ delegate:self] autorelease]];
+        [self presentModalViewController:[[[SettingsController alloc] initWithDatabase:database_ delegate:self] autorelease] force:NO];
         return;
     } else {
         if ([emulated_ modalViewController] != nil)
@@ -9599,13 +9621,7 @@ _trace();
     [self reloadData];
     PrintTimes();
 
-    [window_ addSubview:[tabbar_ view]];
-
-    [[emulated_ view] removeFromSuperview];
-    [emulated_ release];
-    emulated_ = nil;
-
-    [window_ setUserInteractionEnabled:YES];
+    [self disemulate];
 
     int selectedIndex = 0;
     NSMutableArray *items = nil;