node-mac-recorder 2.5.5 → 2.5.7
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 +103 -0
package/package.json
CHANGED
package/src/window_selector.mm
CHANGED
|
@@ -59,6 +59,9 @@ bool hideScreenRecordingPreview();
|
|
|
59
59
|
if (self) {
|
|
60
60
|
self.wantsLayer = YES;
|
|
61
61
|
self.layer.backgroundColor = [[NSColor clearColor] CGColor];
|
|
62
|
+
// Ensure no borders or decorations
|
|
63
|
+
self.layer.borderWidth = 0.0;
|
|
64
|
+
self.layer.cornerRadius = 0.0;
|
|
62
65
|
}
|
|
63
66
|
return self;
|
|
64
67
|
}
|
|
@@ -72,6 +75,7 @@ bool hideScreenRecordingPreview();
|
|
|
72
75
|
[[NSColor colorWithRed:0.5 green:0.3 blue:0.8 alpha:0.25] setFill];
|
|
73
76
|
NSRectFill(self.bounds);
|
|
74
77
|
|
|
78
|
+
// Ensure no borders or frames are drawn
|
|
75
79
|
// Text will be handled by separate label above button
|
|
76
80
|
}
|
|
77
81
|
|
|
@@ -89,6 +93,9 @@ bool hideScreenRecordingPreview();
|
|
|
89
93
|
if (self) {
|
|
90
94
|
self.wantsLayer = YES;
|
|
91
95
|
self.layer.backgroundColor = [[NSColor clearColor] CGColor];
|
|
96
|
+
// Ensure no borders or decorations
|
|
97
|
+
self.layer.borderWidth = 0.0;
|
|
98
|
+
self.layer.cornerRadius = 0.0;
|
|
92
99
|
}
|
|
93
100
|
return self;
|
|
94
101
|
}
|
|
@@ -141,6 +148,9 @@ bool hideScreenRecordingPreview();
|
|
|
141
148
|
if (self) {
|
|
142
149
|
self.wantsLayer = YES;
|
|
143
150
|
self.layer.backgroundColor = [[NSColor clearColor] CGColor];
|
|
151
|
+
// Ensure no borders or decorations
|
|
152
|
+
self.layer.borderWidth = 0.0;
|
|
153
|
+
self.layer.cornerRadius = 0.0;
|
|
144
154
|
}
|
|
145
155
|
return self;
|
|
146
156
|
}
|
|
@@ -151,6 +161,7 @@ bool hideScreenRecordingPreview();
|
|
|
151
161
|
if (!self.screenInfo) return;
|
|
152
162
|
|
|
153
163
|
// Background with transparency - purple tone (no border)
|
|
164
|
+
// Ensure no borders or frames are drawn
|
|
154
165
|
[[NSColor colorWithRed:0.5 green:0.3 blue:0.8 alpha:0.3] setFill];
|
|
155
166
|
NSRectFill(self.bounds);
|
|
156
167
|
|
|
@@ -712,6 +723,17 @@ bool showRecordingPreview(NSDictionary *windowInfo) {
|
|
|
712
723
|
[g_recordingPreviewWindow setAlphaValue:1.0];
|
|
713
724
|
[g_recordingPreviewWindow setCollectionBehavior:NSWindowCollectionBehaviorStationary | NSWindowCollectionBehaviorCanJoinAllSpaces];
|
|
714
725
|
|
|
726
|
+
// Remove any default window decorations and borders
|
|
727
|
+
[g_recordingPreviewWindow setTitlebarAppearsTransparent:YES];
|
|
728
|
+
[g_recordingPreviewWindow setTitleVisibility:NSWindowTitleHidden];
|
|
729
|
+
[g_recordingPreviewWindow setMovable:NO];
|
|
730
|
+
[g_recordingPreviewWindow setMovableByWindowBackground:NO];
|
|
731
|
+
|
|
732
|
+
// Additional window styling to completely remove borders
|
|
733
|
+
[g_recordingPreviewWindow setToolbar:nil];
|
|
734
|
+
[g_recordingPreviewWindow setShowsResizeIndicator:NO];
|
|
735
|
+
[g_recordingPreviewWindow setShowsToolbarButton:NO];
|
|
736
|
+
|
|
715
737
|
// Create preview view
|
|
716
738
|
g_recordingPreviewView = [[RecordingPreviewView alloc] initWithFrame:screenFrame];
|
|
717
739
|
[(RecordingPreviewView *)g_recordingPreviewView setRecordingWindowInfo:windowInfo];
|
|
@@ -819,11 +841,24 @@ bool startScreenSelection() {
|
|
|
819
841
|
[overlayWindow setAlphaValue:1.0];
|
|
820
842
|
[overlayWindow setCollectionBehavior:NSWindowCollectionBehaviorStationary | NSWindowCollectionBehaviorCanJoinAllSpaces];
|
|
821
843
|
|
|
844
|
+
// Remove any default window decorations and borders
|
|
845
|
+
[overlayWindow setTitlebarAppearsTransparent:YES];
|
|
846
|
+
[overlayWindow setTitleVisibility:NSWindowTitleHidden];
|
|
847
|
+
[overlayWindow setMovable:NO];
|
|
848
|
+
[overlayWindow setMovableByWindowBackground:NO];
|
|
849
|
+
|
|
850
|
+
|
|
851
|
+
|
|
822
852
|
// Create overlay view
|
|
823
853
|
ScreenSelectorOverlayView *overlayView = [[ScreenSelectorOverlayView alloc] initWithFrame:screenFrame];
|
|
824
854
|
[overlayView setScreenInfo:screenInfo];
|
|
825
855
|
[overlayWindow setContentView:overlayView];
|
|
826
856
|
|
|
857
|
+
// Additional window styling to completely remove borders
|
|
858
|
+
[overlayWindow setToolbar:nil];
|
|
859
|
+
[overlayWindow setShowsResizeIndicator:NO];
|
|
860
|
+
[overlayWindow setShowsToolbarButton:NO];
|
|
861
|
+
|
|
827
862
|
// Create select button with more padding
|
|
828
863
|
NSButton *selectButton = [[NSButton alloc] initWithFrame:NSMakeRect(0, 0, 200, 60)];
|
|
829
864
|
[selectButton setTitle:@"Start Record"];
|
|
@@ -838,6 +873,12 @@ bool startScreenSelection() {
|
|
|
838
873
|
[selectButton.layer setCornerRadius:8.0];
|
|
839
874
|
[selectButton.layer setBorderWidth:0.0];
|
|
840
875
|
|
|
876
|
+
// Remove all button borders and decorations
|
|
877
|
+
[selectButton.layer setShadowOpacity:0.0];
|
|
878
|
+
[selectButton.layer setShadowRadius:0.0];
|
|
879
|
+
[selectButton.layer setShadowOffset:NSMakeSize(0, 0)];
|
|
880
|
+
[selectButton.layer setMasksToBounds:YES];
|
|
881
|
+
|
|
841
882
|
// Clean white text - normal weight
|
|
842
883
|
[selectButton setFont:[NSFont systemFontOfSize:16 weight:NSFontWeightRegular]];
|
|
843
884
|
[selectButton setTitle:@"Start Record"];
|
|
@@ -857,6 +898,10 @@ bool startScreenSelection() {
|
|
|
857
898
|
[selectButton setTarget:g_delegate];
|
|
858
899
|
[selectButton setAction:@selector(screenSelectButtonClicked:)];
|
|
859
900
|
|
|
901
|
+
// Remove focus ring and other default button behaviors
|
|
902
|
+
[selectButton setFocusRingType:NSFocusRingTypeNone];
|
|
903
|
+
[selectButton setShowsBorderOnlyWhileMouseInside:NO];
|
|
904
|
+
|
|
860
905
|
// Create cancel button for screen selection
|
|
861
906
|
NSButton *screenCancelButton = [[NSButton alloc] initWithFrame:NSMakeRect(0, 0, 120, 40)];
|
|
862
907
|
[screenCancelButton setTitle:@"Cancel"];
|
|
@@ -870,6 +915,12 @@ bool startScreenSelection() {
|
|
|
870
915
|
[screenCancelButton.layer setCornerRadius:8.0];
|
|
871
916
|
[screenCancelButton.layer setBorderWidth:0.0];
|
|
872
917
|
|
|
918
|
+
// Remove all button borders and decorations
|
|
919
|
+
[screenCancelButton.layer setShadowOpacity:0.0];
|
|
920
|
+
[screenCancelButton.layer setShadowRadius:0.0];
|
|
921
|
+
[screenCancelButton.layer setShadowOffset:NSMakeSize(0, 0)];
|
|
922
|
+
[screenCancelButton.layer setMasksToBounds:YES];
|
|
923
|
+
|
|
873
924
|
// Clean white text for cancel button
|
|
874
925
|
[screenCancelButton setFont:[NSFont systemFontOfSize:15 weight:NSFontWeightRegular]];
|
|
875
926
|
NSMutableAttributedString *screenCancelTitleString = [[NSMutableAttributedString alloc]
|
|
@@ -882,6 +933,10 @@ bool startScreenSelection() {
|
|
|
882
933
|
[screenCancelButton setTarget:g_delegate];
|
|
883
934
|
[screenCancelButton setAction:@selector(cancelButtonClicked:)];
|
|
884
935
|
|
|
936
|
+
// Remove focus ring and other default button behaviors
|
|
937
|
+
[screenCancelButton setFocusRingType:NSFocusRingTypeNone];
|
|
938
|
+
[screenCancelButton setShowsBorderOnlyWhileMouseInside:NO];
|
|
939
|
+
|
|
885
940
|
// Create info label for screen
|
|
886
941
|
NSTextField *screenInfoLabel = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, screenFrame.size.width - 40, 60)];
|
|
887
942
|
[screenInfoLabel setEditable:NO];
|
|
@@ -1042,6 +1097,17 @@ bool showScreenRecordingPreview(NSDictionary *screenInfo) {
|
|
|
1042
1097
|
[overlayWindow setAlphaValue:1.0];
|
|
1043
1098
|
[overlayWindow setCollectionBehavior:NSWindowCollectionBehaviorStationary | NSWindowCollectionBehaviorCanJoinAllSpaces];
|
|
1044
1099
|
|
|
1100
|
+
// Remove any default window decorations and borders
|
|
1101
|
+
[overlayWindow setTitlebarAppearsTransparent:YES];
|
|
1102
|
+
[overlayWindow setTitleVisibility:NSWindowTitleHidden];
|
|
1103
|
+
[overlayWindow setMovable:NO];
|
|
1104
|
+
[overlayWindow setMovableByWindowBackground:NO];
|
|
1105
|
+
|
|
1106
|
+
// Additional window styling to completely remove borders
|
|
1107
|
+
[overlayWindow setToolbar:nil];
|
|
1108
|
+
[overlayWindow setShowsResizeIndicator:NO];
|
|
1109
|
+
[overlayWindow setShowsToolbarButton:NO];
|
|
1110
|
+
|
|
1045
1111
|
[overlayWindow orderFront:nil];
|
|
1046
1112
|
[overlayWindow makeKeyAndOrderFront:nil];
|
|
1047
1113
|
|
|
@@ -1099,10 +1165,27 @@ Napi::Value StartWindowSelection(const Napi::CallbackInfo& info) {
|
|
|
1099
1165
|
[g_overlayWindow setAlphaValue:1.0];
|
|
1100
1166
|
[g_overlayWindow setCollectionBehavior:NSWindowCollectionBehaviorStationary | NSWindowCollectionBehaviorCanJoinAllSpaces];
|
|
1101
1167
|
|
|
1168
|
+
// Remove any default window decorations and borders
|
|
1169
|
+
[g_overlayWindow setTitlebarAppearsTransparent:YES];
|
|
1170
|
+
[g_overlayWindow setTitleVisibility:NSWindowTitleHidden];
|
|
1171
|
+
[g_overlayWindow setMovable:NO];
|
|
1172
|
+
[g_overlayWindow setMovableByWindowBackground:NO];
|
|
1173
|
+
|
|
1174
|
+
// Additional window styling to completely remove borders
|
|
1175
|
+
[g_overlayWindow setToolbar:nil];
|
|
1176
|
+
[g_overlayWindow setShowsResizeIndicator:NO];
|
|
1177
|
+
[g_overlayWindow setShowsToolbarButton:NO];
|
|
1178
|
+
|
|
1102
1179
|
// Create overlay view
|
|
1103
1180
|
g_overlayView = [[WindowSelectorOverlayView alloc] initWithFrame:initialFrame];
|
|
1104
1181
|
[g_overlayWindow setContentView:g_overlayView];
|
|
1105
1182
|
|
|
1183
|
+
// Ensure view layer has no borders
|
|
1184
|
+
[g_overlayView setWantsLayer:YES];
|
|
1185
|
+
[g_overlayView.layer setBorderWidth:0.0];
|
|
1186
|
+
[g_overlayView.layer setCornerRadius:0.0];
|
|
1187
|
+
[g_overlayView.layer setMasksToBounds:YES];
|
|
1188
|
+
|
|
1106
1189
|
// Create select button with purple theme
|
|
1107
1190
|
g_selectButton = [[NSButton alloc] initWithFrame:NSMakeRect(0, 0, 200, 60)];
|
|
1108
1191
|
[g_selectButton setTitle:@"Start Record"];
|
|
@@ -1116,6 +1199,12 @@ Napi::Value StartWindowSelection(const Napi::CallbackInfo& info) {
|
|
|
1116
1199
|
[g_selectButton.layer setCornerRadius:8.0];
|
|
1117
1200
|
[g_selectButton.layer setBorderWidth:0.0];
|
|
1118
1201
|
|
|
1202
|
+
// Remove all button borders and decorations
|
|
1203
|
+
[g_selectButton.layer setShadowOpacity:0.0];
|
|
1204
|
+
[g_selectButton.layer setShadowRadius:0.0];
|
|
1205
|
+
[g_selectButton.layer setShadowOffset:NSMakeSize(0, 0)];
|
|
1206
|
+
[g_selectButton.layer setMasksToBounds:YES];
|
|
1207
|
+
|
|
1119
1208
|
// Clean white text - normal weight
|
|
1120
1209
|
NSMutableAttributedString *titleString = [[NSMutableAttributedString alloc]
|
|
1121
1210
|
initWithString:[g_selectButton title]];
|
|
@@ -1129,6 +1218,10 @@ Napi::Value StartWindowSelection(const Napi::CallbackInfo& info) {
|
|
|
1129
1218
|
[g_selectButton setTarget:g_delegate];
|
|
1130
1219
|
[g_selectButton setAction:@selector(selectButtonClicked:)];
|
|
1131
1220
|
|
|
1221
|
+
// Remove focus ring and other default button behaviors
|
|
1222
|
+
[g_selectButton setFocusRingType:NSFocusRingTypeNone];
|
|
1223
|
+
[g_selectButton setShowsBorderOnlyWhileMouseInside:NO];
|
|
1224
|
+
|
|
1132
1225
|
// Add select button directly to window (not view) for proper layering
|
|
1133
1226
|
[g_overlayWindow.contentView addSubview:g_selectButton];
|
|
1134
1227
|
|
|
@@ -1145,6 +1238,12 @@ Napi::Value StartWindowSelection(const Napi::CallbackInfo& info) {
|
|
|
1145
1238
|
[cancelButton.layer setCornerRadius:8.0];
|
|
1146
1239
|
[cancelButton.layer setBorderWidth:0.0];
|
|
1147
1240
|
|
|
1241
|
+
// Remove all button borders and decorations
|
|
1242
|
+
[cancelButton.layer setShadowOpacity:0.0];
|
|
1243
|
+
[cancelButton.layer setShadowRadius:0.0];
|
|
1244
|
+
[cancelButton.layer setShadowOffset:NSMakeSize(0, 0)];
|
|
1245
|
+
[cancelButton.layer setMasksToBounds:YES];
|
|
1246
|
+
|
|
1148
1247
|
// Clean white text for cancel button
|
|
1149
1248
|
NSMutableAttributedString *cancelTitleString = [[NSMutableAttributedString alloc]
|
|
1150
1249
|
initWithString:[cancelButton title]];
|
|
@@ -1156,6 +1255,10 @@ Napi::Value StartWindowSelection(const Napi::CallbackInfo& info) {
|
|
|
1156
1255
|
[cancelButton setTarget:g_delegate];
|
|
1157
1256
|
[cancelButton setAction:@selector(cancelButtonClicked:)];
|
|
1158
1257
|
|
|
1258
|
+
// Remove focus ring and other default button behaviors
|
|
1259
|
+
[cancelButton setFocusRingType:NSFocusRingTypeNone];
|
|
1260
|
+
[cancelButton setShowsBorderOnlyWhileMouseInside:NO];
|
|
1261
|
+
|
|
1159
1262
|
// Add cancel button to window
|
|
1160
1263
|
[g_overlayWindow.contentView addSubview:cancelButton];
|
|
1161
1264
|
|