node-mac-recorder 2.6.12 → 2.6.14
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 +65 -8
package/package.json
CHANGED
package/src/window_selector.mm
CHANGED
|
@@ -550,6 +550,13 @@ void updateOverlay() {
|
|
|
550
550
|
[infoLabel setFont:[NSFont systemFontOfSize:18 weight:NSFontWeightMedium]];
|
|
551
551
|
[infoLabel setTextColor:[NSColor whiteColor]];
|
|
552
552
|
|
|
553
|
+
// Force no borders on info label
|
|
554
|
+
[infoLabel setWantsLayer:YES];
|
|
555
|
+
infoLabel.layer.borderWidth = 0.0;
|
|
556
|
+
infoLabel.layer.borderColor = [[NSColor clearColor] CGColor];
|
|
557
|
+
infoLabel.layer.cornerRadius = 0.0;
|
|
558
|
+
infoLabel.layer.masksToBounds = YES;
|
|
559
|
+
|
|
553
560
|
[g_overlayWindow.contentView addSubview:infoLabel];
|
|
554
561
|
}
|
|
555
562
|
|
|
@@ -569,6 +576,14 @@ void updateOverlay() {
|
|
|
569
576
|
[appIconView.layer setCornerRadius:8.0];
|
|
570
577
|
[appIconView.layer setMasksToBounds:YES];
|
|
571
578
|
[appIconView.layer setBackgroundColor:[[NSColor colorWithRed:0.2 green:0.2 blue:0.2 alpha:0.3] CGColor]]; // Debug background
|
|
579
|
+
|
|
580
|
+
// Force no borders on app icon view
|
|
581
|
+
appIconView.layer.borderWidth = 0.0;
|
|
582
|
+
appIconView.layer.borderColor = [[NSColor clearColor] CGColor];
|
|
583
|
+
appIconView.layer.shadowOpacity = 0.0;
|
|
584
|
+
appIconView.layer.shadowRadius = 0.0;
|
|
585
|
+
appIconView.layer.shadowOffset = NSMakeSize(0, 0);
|
|
586
|
+
|
|
572
587
|
[g_overlayWindow.contentView addSubview:appIconView];
|
|
573
588
|
NSLog(@"🖼️ Created app icon view at frame: (%.0f, %.0f, %.0f, %.0f)",
|
|
574
589
|
appIconView.frame.origin.x, appIconView.frame.origin.y,
|
|
@@ -666,6 +681,22 @@ void updateOverlay() {
|
|
|
666
681
|
[g_overlayWindow orderFront:nil];
|
|
667
682
|
[g_overlayWindow makeKeyAndOrderFront:nil];
|
|
668
683
|
|
|
684
|
+
// Ensure all subviews have no borders after positioning
|
|
685
|
+
for (NSView *subview in [g_overlayWindow.contentView subviews]) {
|
|
686
|
+
if ([subview respondsToSelector:@selector(setWantsLayer:)]) {
|
|
687
|
+
[subview setWantsLayer:YES];
|
|
688
|
+
if (subview.layer) {
|
|
689
|
+
subview.layer.borderWidth = 0.0;
|
|
690
|
+
subview.layer.borderColor = [[NSColor clearColor] CGColor];
|
|
691
|
+
subview.layer.cornerRadius = 0.0;
|
|
692
|
+
subview.layer.masksToBounds = YES;
|
|
693
|
+
subview.layer.shadowOpacity = 0.0;
|
|
694
|
+
subview.layer.shadowRadius = 0.0;
|
|
695
|
+
subview.layer.shadowOffset = NSMakeSize(0, 0);
|
|
696
|
+
}
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
|
|
669
700
|
NSLog(@" ✅ Overlay Status: Level=%ld, Alpha=%.1f, Visible=%s, Frame Set=YES",
|
|
670
701
|
[g_overlayWindow level], [g_overlayWindow alphaValue],
|
|
671
702
|
[g_overlayWindow isVisible] ? "YES" : "NO");
|
|
@@ -857,12 +888,12 @@ void updateScreenOverlays() {
|
|
|
857
888
|
NSButton *button = (NSButton *)subview;
|
|
858
889
|
if ([button.title isEqualToString:@"Start Record"]) {
|
|
859
890
|
if (isActiveScreen) {
|
|
860
|
-
// Active screen: bright, prominent button
|
|
861
|
-
[button.layer setBackgroundColor:[[NSColor colorWithRed:0.
|
|
891
|
+
// Active screen: bright, prominent button with new RGB color
|
|
892
|
+
[button.layer setBackgroundColor:[[NSColor colorWithRed:77.0/255.0 green:30.0/255.0 blue:231.0/255.0 alpha:1.0] CGColor]];
|
|
862
893
|
[button setAlphaValue:1.0];
|
|
863
894
|
} else {
|
|
864
|
-
// Inactive screen: dimmer button
|
|
865
|
-
[button.layer setBackgroundColor:[[NSColor colorWithRed:0.
|
|
895
|
+
// Inactive screen: dimmer button with new RGB color
|
|
896
|
+
[button.layer setBackgroundColor:[[NSColor colorWithRed:77.0/255.0 green:30.0/255.0 blue:231.0/255.0 alpha:0.6] CGColor]];
|
|
866
897
|
[button setAlphaValue:0.7];
|
|
867
898
|
}
|
|
868
899
|
}
|
|
@@ -1070,9 +1101,9 @@ bool startScreenSelection() {
|
|
|
1070
1101
|
[selectButton setFont:[NSFont systemFontOfSize:16 weight:NSFontWeightRegular]];
|
|
1071
1102
|
[selectButton setTag:i]; // Set screen index as tag
|
|
1072
1103
|
|
|
1073
|
-
// Modern button styling with
|
|
1104
|
+
// Modern button styling with new RGB color
|
|
1074
1105
|
[selectButton setWantsLayer:YES];
|
|
1075
|
-
[selectButton.layer setBackgroundColor:[[NSColor colorWithRed:0.
|
|
1106
|
+
[selectButton.layer setBackgroundColor:[[NSColor colorWithRed:77.0/255.0 green:30.0/255.0 blue:231.0/255.0 alpha:0.95] CGColor]];
|
|
1076
1107
|
[selectButton.layer setCornerRadius:8.0];
|
|
1077
1108
|
[selectButton.layer setBorderWidth:0.0];
|
|
1078
1109
|
|
|
@@ -1408,6 +1439,9 @@ Napi::Value StartWindowSelection(const Napi::CallbackInfo& info) {
|
|
|
1408
1439
|
backing:NSBackingStoreBuffered
|
|
1409
1440
|
defer:NO];
|
|
1410
1441
|
|
|
1442
|
+
// Force completely borderless appearance
|
|
1443
|
+
[g_overlayWindow setStyleMask:NSWindowStyleMaskBorderless];
|
|
1444
|
+
|
|
1411
1445
|
[g_overlayWindow setLevel:CGWindowLevelForKey(kCGMaximumWindowLevelKey)]; // Absolute highest level
|
|
1412
1446
|
[g_overlayWindow setOpaque:NO];
|
|
1413
1447
|
[g_overlayWindow setBackgroundColor:[NSColor clearColor]];
|
|
@@ -1439,6 +1473,13 @@ Napi::Value StartWindowSelection(const Napi::CallbackInfo& info) {
|
|
|
1439
1473
|
g_overlayWindow.layer.cornerRadius = 0.0;
|
|
1440
1474
|
g_overlayWindow.layer.masksToBounds = YES;
|
|
1441
1475
|
|
|
1476
|
+
// Force content view to have no borders
|
|
1477
|
+
g_overlayWindow.contentView.wantsLayer = YES;
|
|
1478
|
+
g_overlayWindow.contentView.layer.borderWidth = 0.0;
|
|
1479
|
+
g_overlayWindow.contentView.layer.borderColor = [[NSColor clearColor] CGColor];
|
|
1480
|
+
g_overlayWindow.contentView.layer.cornerRadius = 0.0;
|
|
1481
|
+
g_overlayWindow.contentView.layer.masksToBounds = YES;
|
|
1482
|
+
|
|
1442
1483
|
// Additional window styling to ensure no borders or decorations
|
|
1443
1484
|
[g_overlayWindow setMovable:NO];
|
|
1444
1485
|
[g_overlayWindow setMovableByWindowBackground:NO];
|
|
@@ -1450,9 +1491,9 @@ Napi::Value StartWindowSelection(const Napi::CallbackInfo& info) {
|
|
|
1450
1491
|
[g_selectButton setBordered:NO];
|
|
1451
1492
|
[g_selectButton setFont:[NSFont systemFontOfSize:16 weight:NSFontWeightRegular]];
|
|
1452
1493
|
|
|
1453
|
-
// Modern button styling with
|
|
1494
|
+
// Modern button styling with new RGB color
|
|
1454
1495
|
[g_selectButton setWantsLayer:YES];
|
|
1455
|
-
[g_selectButton.layer setBackgroundColor:[[NSColor colorWithRed:0.
|
|
1496
|
+
[g_selectButton.layer setBackgroundColor:[[NSColor colorWithRed:77.0/255.0 green:30.0/255.0 blue:231.0/255.0 alpha:0.95] CGColor]];
|
|
1456
1497
|
[g_selectButton.layer setCornerRadius:8.0];
|
|
1457
1498
|
[g_selectButton.layer setBorderWidth:0.0];
|
|
1458
1499
|
|
|
@@ -1523,6 +1564,22 @@ Napi::Value StartWindowSelection(const Napi::CallbackInfo& info) {
|
|
|
1523
1564
|
// Add cancel button to window
|
|
1524
1565
|
[g_overlayWindow.contentView addSubview:cancelButton];
|
|
1525
1566
|
|
|
1567
|
+
// Force all subviews to have no borders
|
|
1568
|
+
for (NSView *subview in [g_overlayWindow.contentView subviews]) {
|
|
1569
|
+
if ([subview respondsToSelector:@selector(setWantsLayer:)]) {
|
|
1570
|
+
[subview setWantsLayer:YES];
|
|
1571
|
+
if (subview.layer) {
|
|
1572
|
+
subview.layer.borderWidth = 0.0;
|
|
1573
|
+
subview.layer.borderColor = [[NSColor clearColor] CGColor];
|
|
1574
|
+
subview.layer.cornerRadius = 0.0;
|
|
1575
|
+
subview.layer.masksToBounds = YES;
|
|
1576
|
+
subview.layer.shadowOpacity = 0.0;
|
|
1577
|
+
subview.layer.shadowRadius = 0.0;
|
|
1578
|
+
subview.layer.shadowOffset = NSMakeSize(0, 0);
|
|
1579
|
+
}
|
|
1580
|
+
}
|
|
1581
|
+
}
|
|
1582
|
+
|
|
1526
1583
|
// Cancel button reference will be found dynamically in positioning code
|
|
1527
1584
|
|
|
1528
1585
|
// Timer approach doesn't work well with Node.js
|