mirror of
https://github.com/kunkundi/crossdesk.git
synced 2026-10-18 09:53:05 +08:00
[fix] recognize macOS window resize cursors
This commit is contained in:
@@ -95,7 +95,7 @@ void AddKnownCursor(std::vector<KnownCursor>* cursors, NSCursor* cursor,
|
|||||||
|
|
||||||
std::vector<KnownCursor> BuildKnownCursors() {
|
std::vector<KnownCursor> BuildKnownCursors() {
|
||||||
std::vector<KnownCursor> cursors;
|
std::vector<KnownCursor> cursors;
|
||||||
cursors.reserve(16);
|
cursors.reserve(40);
|
||||||
|
|
||||||
#pragma clang diagnostic push
|
#pragma clang diagnostic push
|
||||||
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
|
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
|
||||||
@@ -129,6 +129,55 @@ std::vector<KnownCursor> BuildKnownCursors() {
|
|||||||
RemoteCursorShape::w_resize);
|
RemoteCursorShape::w_resize);
|
||||||
#pragma clang diagnostic pop
|
#pragma clang diagnostic pop
|
||||||
|
|
||||||
|
#if __MAC_OS_X_VERSION_MAX_ALLOWED >= 150000
|
||||||
|
if (@available(macOS 15.0, *)) {
|
||||||
|
// Window-frame resize artwork differs from the legacy divider cursors
|
||||||
|
// above. Include every edge/corner and both one-way variants. Inward
|
||||||
|
// arrows point toward the frame's center; outward arrows point away.
|
||||||
|
struct FrameResizeCursorMapping {
|
||||||
|
NSCursorFrameResizePosition position;
|
||||||
|
RemoteCursorShape bidirectional;
|
||||||
|
RemoteCursorShape inward;
|
||||||
|
RemoteCursorShape outward;
|
||||||
|
};
|
||||||
|
constexpr FrameResizeCursorMapping mappings[] = {
|
||||||
|
{NSCursorFrameResizePositionTop, RemoteCursorShape::ns_resize,
|
||||||
|
RemoteCursorShape::s_resize, RemoteCursorShape::n_resize},
|
||||||
|
{NSCursorFrameResizePositionLeft, RemoteCursorShape::ew_resize,
|
||||||
|
RemoteCursorShape::e_resize, RemoteCursorShape::w_resize},
|
||||||
|
{NSCursorFrameResizePositionBottom, RemoteCursorShape::ns_resize,
|
||||||
|
RemoteCursorShape::n_resize, RemoteCursorShape::s_resize},
|
||||||
|
{NSCursorFrameResizePositionRight, RemoteCursorShape::ew_resize,
|
||||||
|
RemoteCursorShape::w_resize, RemoteCursorShape::e_resize},
|
||||||
|
{NSCursorFrameResizePositionTopLeft, RemoteCursorShape::nwse_resize,
|
||||||
|
RemoteCursorShape::se_resize, RemoteCursorShape::nw_resize},
|
||||||
|
{NSCursorFrameResizePositionTopRight, RemoteCursorShape::nesw_resize,
|
||||||
|
RemoteCursorShape::sw_resize, RemoteCursorShape::ne_resize},
|
||||||
|
{NSCursorFrameResizePositionBottomLeft, RemoteCursorShape::nesw_resize,
|
||||||
|
RemoteCursorShape::ne_resize, RemoteCursorShape::sw_resize},
|
||||||
|
{NSCursorFrameResizePositionBottomRight, RemoteCursorShape::nwse_resize,
|
||||||
|
RemoteCursorShape::nw_resize, RemoteCursorShape::se_resize},
|
||||||
|
};
|
||||||
|
for (const FrameResizeCursorMapping& mapping : mappings) {
|
||||||
|
AddKnownCursor(
|
||||||
|
&cursors,
|
||||||
|
[NSCursor frameResizeCursorFromPosition:mapping.position
|
||||||
|
inDirections:NSCursorFrameResizeDirectionsAll],
|
||||||
|
mapping.bidirectional);
|
||||||
|
AddKnownCursor(
|
||||||
|
&cursors,
|
||||||
|
[NSCursor frameResizeCursorFromPosition:mapping.position
|
||||||
|
inDirections:NSCursorFrameResizeDirectionsInward],
|
||||||
|
mapping.inward);
|
||||||
|
AddKnownCursor(
|
||||||
|
&cursors,
|
||||||
|
[NSCursor frameResizeCursorFromPosition:mapping.position
|
||||||
|
inDirections:NSCursorFrameResizeDirectionsOutward],
|
||||||
|
mapping.outward);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return cursors;
|
return cursors;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user