node-mac-recorder 2.10.21 → 2.10.22
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 +14 -13
package/package.json
CHANGED
package/src/window_selector.mm
CHANGED
|
@@ -114,12 +114,12 @@ void updateScreenOverlays();
|
|
|
114
114
|
CGFloat lineWidth;
|
|
115
115
|
|
|
116
116
|
if (self.isToggled) {
|
|
117
|
-
// Locked state:
|
|
117
|
+
// Locked state: same 1px border but different color
|
|
118
118
|
fillColor = [NSColor colorWithRed:0.6 green:0.4 blue:0.9 alpha:0.4];
|
|
119
119
|
strokeColor = [NSColor colorWithRed:0.45 green:0.25 blue:0.75 alpha:0.9];
|
|
120
|
-
lineWidth =
|
|
120
|
+
lineWidth = 1.0;
|
|
121
121
|
} else {
|
|
122
|
-
// Normal state:
|
|
122
|
+
// Normal state: 1px border
|
|
123
123
|
fillColor = [NSColor colorWithRed:0.6 green:0.4 blue:0.9 alpha:0.4];
|
|
124
124
|
strokeColor = [NSColor whiteColor];
|
|
125
125
|
lineWidth = 1.0;
|
|
@@ -933,7 +933,8 @@ void updateOverlay() {
|
|
|
933
933
|
}
|
|
934
934
|
|
|
935
935
|
[g_overlayWindow orderFront:nil];
|
|
936
|
-
|
|
936
|
+
// DON'T make key - prevents focus ring
|
|
937
|
+
// [g_overlayWindow makeKeyAndOrderFront:nil];
|
|
937
938
|
|
|
938
939
|
// Ensure subviews (except overlay view itself) have no borders after positioning
|
|
939
940
|
for (NSView *subview in [g_overlayWindow.contentView subviews]) {
|
|
@@ -1054,7 +1055,7 @@ bool showRecordingPreview(NSDictionary *windowInfo) {
|
|
|
1054
1055
|
[g_recordingPreviewWindow setAcceptsMouseMovedEvents:NO];
|
|
1055
1056
|
[g_recordingPreviewWindow setHasShadow:NO];
|
|
1056
1057
|
[g_recordingPreviewWindow setAlphaValue:1.0];
|
|
1057
|
-
[g_recordingPreviewWindow setCollectionBehavior:
|
|
1058
|
+
[g_recordingPreviewWindow setCollectionBehavior:NSWindowCollectionBehaviorTransient | NSWindowCollectionBehaviorIgnoresCycle];
|
|
1058
1059
|
|
|
1059
1060
|
// Remove any default window decorations and borders
|
|
1060
1061
|
[g_recordingPreviewWindow setTitlebarAppearsTransparent:YES];
|
|
@@ -1183,7 +1184,7 @@ void updateScreenOverlays() {
|
|
|
1183
1184
|
// Ensure ALL overlays are visible, but active one is on top
|
|
1184
1185
|
[overlayWindow orderFront:nil];
|
|
1185
1186
|
if (isActiveScreen) {
|
|
1186
|
-
[overlayWindow
|
|
1187
|
+
[overlayWindow orderFront:nil]; // Don't make key
|
|
1187
1188
|
} else {
|
|
1188
1189
|
[overlayWindow orderFront:nil]; // Keep inactive screens visible too
|
|
1189
1190
|
}
|
|
@@ -1328,7 +1329,7 @@ bool startScreenSelection() {
|
|
|
1328
1329
|
[overlayWindow setHasShadow:NO];
|
|
1329
1330
|
[overlayWindow setAlphaValue:1.0];
|
|
1330
1331
|
// Ensure window appears on all spaces and stays put - match g_overlayWindow
|
|
1331
|
-
[overlayWindow setCollectionBehavior:
|
|
1332
|
+
[overlayWindow setCollectionBehavior:NSWindowCollectionBehaviorTransient | NSWindowCollectionBehaviorIgnoresCycle];
|
|
1332
1333
|
|
|
1333
1334
|
// Remove any default window decorations and borders
|
|
1334
1335
|
[overlayWindow setTitlebarAppearsTransparent:YES];
|
|
@@ -1501,12 +1502,12 @@ bool startScreenSelection() {
|
|
|
1501
1502
|
// Show overlay - different strategy for secondary screens
|
|
1502
1503
|
if (i == 0) {
|
|
1503
1504
|
// Primary screen
|
|
1504
|
-
[overlayWindow
|
|
1505
|
+
[overlayWindow orderFront:nil]; // Don't make key
|
|
1505
1506
|
// Primary screen overlay shown
|
|
1506
1507
|
} else {
|
|
1507
1508
|
// Secondary screens - more aggressive approach
|
|
1508
1509
|
[overlayWindow orderFront:nil];
|
|
1509
|
-
[overlayWindow
|
|
1510
|
+
[overlayWindow orderFront:nil]; // Don't make key // Try makeKey too
|
|
1510
1511
|
[overlayWindow setLevel:CGWindowLevelForKey(kCGMaximumWindowLevelKey)]; // Match g_overlayWindow level
|
|
1511
1512
|
|
|
1512
1513
|
// Secondary screen overlay shown
|
|
@@ -1514,7 +1515,7 @@ bool startScreenSelection() {
|
|
|
1514
1515
|
// Double-check with delayed re-show
|
|
1515
1516
|
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
|
1516
1517
|
[overlayWindow orderFront:nil];
|
|
1517
|
-
[overlayWindow
|
|
1518
|
+
[overlayWindow orderFront:nil]; // Don't make key
|
|
1518
1519
|
});
|
|
1519
1520
|
}
|
|
1520
1521
|
|
|
@@ -1628,7 +1629,7 @@ bool showScreenRecordingPreview(NSDictionary *screenInfo) {
|
|
|
1628
1629
|
// no border
|
|
1629
1630
|
[overlayWindow setStyleMask:NSWindowStyleMaskBorderless];
|
|
1630
1631
|
[overlayWindow setAlphaValue:1.0];
|
|
1631
|
-
[overlayWindow setCollectionBehavior:
|
|
1632
|
+
[overlayWindow setCollectionBehavior:NSWindowCollectionBehaviorTransient | NSWindowCollectionBehaviorIgnoresCycle];
|
|
1632
1633
|
|
|
1633
1634
|
|
|
1634
1635
|
// Force content view to have no borders
|
|
@@ -1651,7 +1652,7 @@ bool showScreenRecordingPreview(NSDictionary *screenInfo) {
|
|
|
1651
1652
|
|
|
1652
1653
|
|
|
1653
1654
|
[overlayWindow orderFront:nil];
|
|
1654
|
-
[overlayWindow makeKeyAndOrderFront:nil];
|
|
1655
|
+
// [overlayWindow makeKeyAndOrderFront:nil];
|
|
1655
1656
|
|
|
1656
1657
|
// Note: NSWindow doesn't have setWantsLayer method, only NSView does
|
|
1657
1658
|
|
|
@@ -1724,7 +1725,7 @@ Napi::Value StartWindowSelection(const Napi::CallbackInfo& info) {
|
|
|
1724
1725
|
[g_overlayWindow setAcceptsMouseMovedEvents:YES];
|
|
1725
1726
|
[g_overlayWindow setHasShadow:NO];
|
|
1726
1727
|
[g_overlayWindow setAlphaValue:1.0];
|
|
1727
|
-
[g_overlayWindow setCollectionBehavior:
|
|
1728
|
+
[g_overlayWindow setCollectionBehavior:NSWindowCollectionBehaviorTransient | NSWindowCollectionBehaviorIgnoresCycle];
|
|
1728
1729
|
|
|
1729
1730
|
// Remove any default window decorations and borders
|
|
1730
1731
|
[g_overlayWindow setTitlebarAppearsTransparent:YES];
|