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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-mac-recorder",
3
- "version": "2.10.11",
3
+ "version": "2.10.13",
4
4
  "description": "Native macOS screen recording package for Node.js applications",
5
5
  "main": "index.js",
6
6
  "keywords": [
@@ -499,9 +499,34 @@ void updateOverlay() {
499
499
  NSDictionary *targetWindow = nil;
500
500
 
501
501
  if (windowUnderCursor) {
502
- if (!g_currentWindowUnderCursor ||
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
- // New window under cursor
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 and reset toggle state for new window
620
+ // Update overlay view window info
596
621
  [(WindowSelectorOverlayView *)g_overlayView setWindowInfo:targetWindow];
597
- [(WindowSelectorOverlayView *)g_overlayView setIsToggled:NO];
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;