Skip to content

Commit fe1c09b

Browse files
committed
add isMainDisplay
1 parent b80b20c commit fe1c09b

File tree

3 files changed

+21
-2
lines changed

3 files changed

+21
-2
lines changed

src/robotjs.cc

+7
Original file line numberDiff line numberDiff line change
@@ -745,9 +745,16 @@ NAN_METHOD(getAllScreensSize)
745745
{
746746
Local<Object> obj = Nan::New<Object>();
747747
Nan::Set(obj, Nan::New("displayID").ToLocalChecked(), Nan::New<Number>(displaySizes[i].displayID));
748+
Nan::Set(obj, Nan::New("isMainDisplay").ToLocalChecked(), Nan::New<v8::Boolean>(displaySizes[i].isMainDisplay));
749+
748750
Nan::Set(obj, Nan::New("width").ToLocalChecked(), Nan::New<Number>(displaySizes[i].size.width));
749751
Nan::Set(obj, Nan::New("height").ToLocalChecked(), Nan::New<Number>(displaySizes[i].size.height));
750752

753+
Nan::Set(obj, Nan::New("x").ToLocalChecked(), Nan::New<Number>(displaySizes[i].bounds.origin.x));
754+
Nan::Set(obj, Nan::New("y").ToLocalChecked(), Nan::New<Number>(displaySizes[i].bounds.origin.y));
755+
Nan::Set(obj, Nan::New("w").ToLocalChecked(), Nan::New<Number>(displaySizes[i].bounds.size.width));
756+
Nan::Set(obj, Nan::New("h").ToLocalChecked(), Nan::New<Number>(displaySizes[i].bounds.size.height));
757+
751758
Nan::Set(list, i, obj);
752759
}
753760

src/screen.c

+6-1
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,19 @@ void getAllDisplaySize(uint32_t *_Nullable numDisplays, MMDisplaySize *_Nullable
1313
#if defined(IS_MACOSX)
1414

1515
CGDirectDisplayID displays[10];
16+
CGDirectDisplayID mainDisplayID = CGMainDisplayID();
1617

1718
CGGetOnlineDisplayList(10, displays, numDisplays);
1819
for (uint32_t i = 0; i < *numDisplays; i++)
1920
{
21+
CGRect bounds = CGDisplayBounds(displays[i]);
2022
displaySizes[i] = MMDisplaySizeMake(
2123
displays[i],
24+
mainDisplayID == displays[i],
2225
CGDisplayPixelsWide(displays[i]),
23-
CGDisplayPixelsHigh(displays[i]));
26+
CGDisplayPixelsHigh(displays[i]),
27+
MMRectMake(bounds.origin.x, bounds.origin.y, bounds.size.width, bounds.size.height)
28+
);
2429
}
2530

2631
#endif

src/types.h

+8-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ typedef struct _MMRect MMRect;
4141
struct _MMDisplaySize
4242
{
4343
int32_t displayID;
44+
int isMainDisplay;
4445
MMSize size;
46+
MMRect bounds;
4547
};
4648

4749
typedef struct _MMDisplaySize MMDisplaySize;
@@ -62,12 +64,17 @@ H_INLINE MMSignedPoint MMSignedPointMake(int32_t x, int32_t y)
6264
return point;
6365
}
6466

65-
H_INLINE MMDisplaySize MMDisplaySizeMake(int32_t displayID, size_t width, size_t height)
67+
H_INLINE MMDisplaySize MMDisplaySizeMake(int32_t displayID, int isMainDisplay, size_t width, size_t height, MMRect bounds)
6668
{
6769
MMDisplaySize diplaySize;
6870
diplaySize.displayID = displayID;
71+
diplaySize.isMainDisplay = isMainDisplay;
6972
diplaySize.size.width = width;
7073
diplaySize.size.height = height;
74+
diplaySize.bounds.origin.x = bounds.origin.x;
75+
diplaySize.bounds.origin.x = bounds.origin.x;
76+
diplaySize.bounds.size.width = bounds.size.width;
77+
diplaySize.bounds.size.height = bounds.size.height;
7178
return diplaySize;
7279
}
7380

0 commit comments

Comments
 (0)