]> git.saurik.com Git - cydia.git/commitdiff
Reloading the world should really just /un/load the world.
authorJay Freeman (saurik) <saurik@saurik.com>
Sun, 27 Feb 2011 07:55:33 +0000 (23:55 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Mon, 7 Mar 2011 10:41:25 +0000 (02:41 -0800)
MobileCydia.mm
UICaboodle/RVPage.h
UICaboodle/RVPage.mm

index 1eb6051bb932be4c1d969b142568c6bbbfde1642..9057ef74aec51a63c366a03afbd6243dd8ff30f8 100644 (file)
@@ -6828,7 +6828,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
 
 - (NSArray *) navigationURLCollection;
 - (id) initWithDatabase:(Database *)database;
-- (void) reloadData;
+- (void) unloadData:(BOOL)selected;
 
 @end
 /* }}} */
@@ -6856,6 +6856,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
 - (void) beginUpdate;
 - (void) raiseBar:(BOOL)animated;
 - (BOOL) updating;
+- (void) unloadData;
 
 @end
 
@@ -6905,11 +6906,13 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
     return items;
 }
 
-- (void) reloadData {
-    for (CYViewController *controller in [self viewControllers])
-        [controller reloadData];
+- (void) unloadData {
+    CYNavigationController *selected((CYNavigationController *) [self selectedViewController]);
+    for (CYNavigationController *controller in [self viewControllers])
+        [controller unloadData:(controller == selected)];
 
-    [(CYNavigationController *)[self unselectedViewController] reloadData];
+    if (CYNavigationController *unselected = (CYNavigationController *) [self unselectedViewController])
+        [unselected unloadData:YES];
 }
 
 - (void) dealloc {
@@ -7137,14 +7140,18 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
     return stack;
 }
 
-- (void) reloadData {
+- (void) unloadData:(BOOL)selected {
+    CYViewController *top((CYViewController *) [self topViewController]);
+    bool loaded([top hasLoaded]);
+
     for (CYViewController *page in [self viewControllers]) {
-        // Only reload controllers that have already loaded.
-        // This prevents a page from accidentally loading too
-        // early if it hasn't been shown on the screen yet.
-        if ([page hasLoaded])
-            [page reloadData];
+        NSLog(@"%@ %@", page, top);
+        if (!selected || page != top)
+            [page unloadData];
     }
+
+    if (selected && loaded)
+        [top reloadData];
 }
 
 - (void) setDelegate:(id<UINavigationControllerDelegate>)delegate {
@@ -9079,7 +9086,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
 - (void) _updateData {
     [self _saveConfig];
 
-    [tabbar_ reloadData];
+    [tabbar_ unloadData];
 
     CYNavigationController *navigation = [self queueNavigationController];
 
index 68b62833e78198b3e9ef826e080ece65bb618fd4..5dbccfdb2cd9b335fc032f74d3eb9d209f4ba87a 100644 (file)
@@ -15,6 +15,8 @@
 // but calling the superclass implementation is *required*.
 - (void) reloadData;
 
+- (void) unloadData;
+
 // This URL is used to save the state of the view controller. Return
 // nil if you cannot or should not save the URL for this page.
 - (NSURL *) navigationURL;
index 1f366c1b18e42aefc456e191b896ef43ac7dda9c..d4803f0fffc8864f976bc16ac8444aa25de3514a 100644 (file)
@@ -59,6 +59,10 @@ extern bool IsWildcat_;
     loaded_ = YES;
 }
 
+- (void) unloadData {
+    loaded_ = NO;
+}
+
 - (NSURL *) navigationURL {
     return nil;
 }