record: always capture the VM window (#149)

This commit is contained in:
TastyHeadphones
2026-03-08 16:30:04 +09:00
committed by GitHub
parent bdbdf43414
commit c4cf6c2da6
4 changed files with 10 additions and 1 deletions

View File

@@ -128,6 +128,7 @@ class VPhoneAppDelegate: NSObject, NSApplicationDelegate {
let mc = VPhoneMenuController(keyHelper: keyHelper, control: control)
mc.vm = vm
mc.captureView = wc.captureView
mc.onFilesPressed = { [weak fileWC, weak control] in
guard let fileWC, let control else { return }
fileWC.showWindow(control: control)

View File

@@ -17,6 +17,7 @@ class VPhoneMenuController {
var locationReplayStopItem: NSMenuItem?
var screenRecorder: VPhoneScreenRecorder?
var recordingItem: NSMenuItem?
weak var captureView: VPhoneVirtualMachineView?
init(keyHelper: VPhoneKeyHelper, control: VPhoneControl) {
self.keyHelper = keyHelper

View File

@@ -71,6 +71,7 @@ extension VPhoneMenuController {
}
private func activeCaptureView() -> NSView? {
NSApp.keyWindow?.contentView ?? NSApp.mainWindow?.contentView
guard let captureView else { return nil }
return captureView.window == nil ? nil : captureView
}
}

View File

@@ -7,9 +7,14 @@ class VPhoneWindowController: NSObject, NSToolbarDelegate {
private var windowController: NSWindowController?
private var statusTimer: Timer?
private weak var control: VPhoneControl?
private weak var virtualMachineView: VPhoneVirtualMachineView?
private nonisolated static let homeItemID = NSToolbarItem.Identifier("home")
var captureView: VPhoneVirtualMachineView? {
virtualMachineView
}
func showWindow(
for vm: VZVirtualMachine, screenWidth: Int, screenHeight: Int, screenScale: Double,
keyHelper: VPhoneKeyHelper, control: VPhoneControl, ecid: String?
@@ -21,6 +26,7 @@ class VPhoneWindowController: NSObject, NSToolbarDelegate {
view.capturesSystemKeys = true
view.keyHelper = keyHelper
view.control = control
virtualMachineView = view
let vmView: NSView = view
let scale = CGFloat(screenScale)