diff --git a/VisibilityTracker.swift b/VisibilityTracker.swift index 9e64acf..b98a0a0 100644 --- a/VisibilityTracker.swift +++ b/VisibilityTracker.swift @@ -95,7 +95,7 @@ public class VisibilityTracker: ObservableObject { } func sortViews() { - var sortedPairs = visibleViews.sorted(by: { Int($0.1) < Int($1.1) }) + var sortedPairs = visibleViews.sorted(by: { abs(Int($0.1)) < abs(Int($1.1)) }) // let sortedPairs = visibleViews.sorted(by: { Int($0.1) < Int($1.1) }) // let sortedPairs = visibleViews.sorted(by: { $0 < $1 }) sortedViewIDs = sortedPairs.map { $0.0 } diff --git a/gloss.xcodeproj/project.xcworkspace/xcuserdata/saint.xcuserdatad/UserInterfaceState.xcuserstate b/gloss.xcodeproj/project.xcworkspace/xcuserdata/saint.xcuserdatad/UserInterfaceState.xcuserstate index 0a370ba..2de6422 100644 Binary files a/gloss.xcodeproj/project.xcworkspace/xcuserdata/saint.xcuserdatad/UserInterfaceState.xcuserstate and b/gloss.xcodeproj/project.xcworkspace/xcuserdata/saint.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/gloss.xcodeproj/xcuserdata/saint.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/gloss.xcodeproj/xcuserdata/saint.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index 58c939a..6eb55e7 100644 --- a/gloss.xcodeproj/xcuserdata/saint.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/gloss.xcodeproj/xcuserdata/saint.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -4,59 +4,11 @@ type = "1" version = "2.0"> - - - - - - - - - - - - + + + + + + + + diff --git a/gloss/ContentView.swift b/gloss/ContentView.swift index 8302ce8..2ee5f51 100644 --- a/gloss/ContentView.swift +++ b/gloss/ContentView.swift @@ -421,8 +421,8 @@ struct ContentView: View { Task { DispatchQueue.main.async { - Print("first scroll to") - Print(scrollId) + + Print("scroll Id target: \(scrollId)") proxy.scrollTo(scrollId! , anchor: .top) @@ -432,10 +432,11 @@ struct ContentView: View { // if (currentId != scrollId!) { - DispatchQueue.main.asyncAfter(deadline: .now() + 2) { + DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { - Print(" scroll id target", currentId) - Print(" current id ", scrollId) + Print(" scroll id target", scrollId) + Print(" current id ", currentId) + Print(gTracker!.sortedViewIDs) if (currentId! != scrollId!) { Print("NO MATCH") } @@ -446,10 +447,20 @@ struct ContentView: View { var curOffset = gTracker!.visibleViews[scrollId!] Print(" stats", gTracker!.visibleViews) // // setScrollOffset = CGFloat(Int(currentOffset!) * -1 + Int(scrollOffset!)) - setScrollOffset = CGFloat(Int(scrollOffset!) - Int(curOffset!)) - // // setScrollOffset = CGFloat(Int(scrollOffset!)) - // Print("setting scroll offset", setScrollOffset) - refresh2.toggle() + if (curOffset != nil) { + setScrollOffset = CGFloat(Int(scrollOffset!) - Int(curOffset!)) + Print("applying scroll offset \(setScrollOffset)") + // // setScrollOffset = CGFloat(Int(scrollOffset!)) + // Print("setting scroll offset", setScrollOffset) + refresh2.toggle() + } else { + var adjust = (Int(scrollId!)! - Int(currentId!)!) * 200 + Print("adjusting \(adjust)") + + setScrollOffset = CGFloat(adjust) + refresh.toggle() + + } // // currentId = scrollId! // DispatchQueue.main.async { @@ -553,14 +564,15 @@ struct ContentView: View { return } - currentId = tracker.sortedViewIDs[tracker.sortedViewIDs.count - 1] + // currentId = tracker.sortedViewIDs[tracker.sortedViewIDs.count - 1] + currentId = tracker.sortedViewIDs[0] currentOffset = tracker.visibleViews[currentId!]! - if (Int(currentOffset!) < 0) { - if (tracker.sortedViewIDs.count > 1) { - currentId = tracker.sortedViewIDs[1] - currentOffset = tracker.visibleViews[currentId!]! - } - } + // if (Int(currentOffset!) != -1 && Int(currentOffset!) < 0) { + // if (tracker.sortedViewIDs.count > 1) { + // currentId = tracker.sortedViewIDs[1] + // currentOffset = tracker.visibleViews[currentId!]! + // } + // } // if (currentId != nil) { // // if (printCount % printRate == 0) { // // print(printCount)