| | |
| | | private var lastLayoutSize: NSSize = .zero |
| | | private var lastReportedBoundsOrigin: NSPoint? |
| | | private var scrollUnfreezeWorkItem: DispatchWorkItem? |
| | | private var scrollActivityIsActive = false |
| | | |
| | | override var isFlipped: Bool { true } |
| | | |
| | |
| | | } |
| | | |
| | | private func handleScrollActivity() { |
| | | if !scrollActivityIsActive { |
| | | scrollActivityIsActive = true |
| | | if coordinator?.setScrollBubbleDisabled(true) == true { |
| | | refreshVisibleRuntimeState() |
| | | } |
| | | coordinator?.onScrollActivity() |
| | | } |
| | | |
| | | scrollUnfreezeWorkItem?.cancel() |
| | | let workItem = DispatchWorkItem { [weak self] in |
| | | guard let self else { return } |
| | | self.scrollActivityIsActive = false |
| | | self.replayPointerHover() |
| | | if self.coordinator?.setScrollBubbleDisabled(false) == true { |
| | | self.refreshVisibleRuntimeState() |