node-mac-recorder 2.10.11 → 2.10.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/window_selector.mm +36 -4
package/package.json
CHANGED
package/src/window_selector.mm
CHANGED
|
@@ -499,9 +499,34 @@ void updateOverlay() {
|
|
|
499
499
|
NSDictionary *targetWindow = nil;
|
|
500
500
|
|
|
501
501
|
if (windowUnderCursor) {
|
|
502
|
-
if (
|
|
502
|
+
// Check if we're in lock mode (toggled window)
|
|
503
|
+
if (g_hasToggledWindow && g_currentWindowUnderCursor) {
|
|
504
|
+
// In lock mode - only track toggled window position, ignore cursor
|
|
505
|
+
int toggledWindowId = [[g_currentWindowUnderCursor objectForKey:@"id"] intValue];
|
|
506
|
+
NSArray *allWindows = getAllSelectableWindows();
|
|
507
|
+
NSDictionary *freshWindowData = allWindows ?
|
|
508
|
+
[[allWindows filteredArrayUsingPredicate:
|
|
509
|
+
[NSPredicate predicateWithFormat:@"id == %d", toggledWindowId]] firstObject] : nil;
|
|
510
|
+
|
|
511
|
+
if (freshWindowData && ![freshWindowData isEqualToDictionary:g_currentWindowUnderCursor]) {
|
|
512
|
+
// Toggled window position changed - update
|
|
513
|
+
needsUpdate = YES;
|
|
514
|
+
targetWindow = freshWindowData;
|
|
515
|
+
NSLog(@"📍 TOGGLED WINDOW MOVED: Updating overlay position");
|
|
516
|
+
} else {
|
|
517
|
+
// No change needed for toggled window
|
|
518
|
+
needsUpdate = NO;
|
|
519
|
+
targetWindow = g_currentWindowUnderCursor;
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
// Log cursor movement but don't act on it
|
|
523
|
+
int cursorWindowId = [[windowUnderCursor objectForKey:@"id"] intValue];
|
|
524
|
+
if (toggledWindowId != cursorWindowId) {
|
|
525
|
+
NSLog(@"🔒 LOCK ACTIVE: Cursor on different window but keeping toggle");
|
|
526
|
+
}
|
|
527
|
+
} else if (!g_currentWindowUnderCursor ||
|
|
503
528
|
![windowUnderCursor isEqualToDictionary:g_currentWindowUnderCursor]) {
|
|
504
|
-
//
|
|
529
|
+
// Normal mode - new window under cursor
|
|
505
530
|
needsUpdate = YES;
|
|
506
531
|
targetWindow = windowUnderCursor;
|
|
507
532
|
} else {
|
|
@@ -592,9 +617,16 @@ void updateOverlay() {
|
|
|
592
617
|
// Ensure overlay is on the correct screen
|
|
593
618
|
[g_overlayWindow setFrame:overlayFrame display:YES];
|
|
594
619
|
|
|
595
|
-
// Update overlay view window info
|
|
620
|
+
// Update overlay view window info
|
|
596
621
|
[(WindowSelectorOverlayView *)g_overlayView setWindowInfo:targetWindow];
|
|
597
|
-
|
|
622
|
+
|
|
623
|
+
// Only reset toggle state when switching to different window (not for position updates)
|
|
624
|
+
if (!g_hasToggledWindow) {
|
|
625
|
+
[(WindowSelectorOverlayView *)g_overlayView setIsToggled:NO];
|
|
626
|
+
} else {
|
|
627
|
+
// Keep toggle state for locked window
|
|
628
|
+
[(WindowSelectorOverlayView *)g_overlayView setIsToggled:YES];
|
|
629
|
+
}
|
|
598
630
|
|
|
599
631
|
// Add/update info label above button
|
|
600
632
|
NSTextField *infoLabel = nil;
|