-
Notifications
You must be signed in to change notification settings - Fork 41
Open
Description
Reason why is mouse pointer off is retina display. Correcting getMotionEvent helps:
MAEvent *getMotionEvent(int type, const SDL_Event *event) {
auto *result = new MAEvent();
result->type = type;
// 1) vytáhnout x/y podle typu SDL eventu
float x = 0.0f, y = 0.0f;
SDL_WindowID wid = 0;
switch (event->type) {
case SDL_EVENT_MOUSE_MOTION:
x = event->motion.x;
y = event->motion.y;
wid = event->motion.windowID;
break;
case SDL_EVENT_MOUSE_BUTTON_DOWN:
case SDL_EVENT_MOUSE_BUTTON_UP:
x = event->button.x;
y = event->button.y;
wid = event->button.windowID;
break;
default:
// fallback (kdyby se sem dostalo něco neočekávaného)
x = event->motion.x;
y = event->motion.y;
wid = event->motion.windowID;
break;
}
// 2) spočítat scale (points -> pixels)
float sx = 1.0f, sy = 1.0f;
SDL_Window *win = nullptr;
if (wid) win = SDL_GetWindowFromID(wid);
if (!win) win = SDL_GetMouseFocus();
if (!win) win = SDL_GetKeyboardFocus();
if (win) {
int ww = 0, wh = 0, pw = 0, ph = 0;
SDL_GetWindowSize(win, &ww, &wh);
SDL_GetWindowSizeInPixels(win, &pw, &ph);
if (ww > 0 && wh > 0 && pw > 0 && ph > 0) {
sx = (float)pw / (float)ww;
sy = (float)ph / (float)wh;
}
}
// 3) uložit do MAEvent (už v "pixel" souřadnicích pro hit-test)
result->point.x = (int)lroundf(x * sx);
result->point.y = (int)lroundf(y * sy);
return result;
}
Project is also missing icon.h, so I made one:
#pragma once
#include <cstddef>
#include <cstdint>
// Minimal stub for macOS build: no embedded PNG icon.
// lodepng_decode32() will fail and the app will run without a custom window icon.
static const unsigned char sb_desktop_128x128_png[] = { 0 };
static const unsigned int sb_desktop_128x128_png_len = 0;
Also ui/image_codec.cpp is using #include <malloc.h> which doesn't exist on Mac.
so it's best to change it to:
#if defined(__APPLE__)
#include <stdlib.h>
// nebo pokud by někde bylo potřeba něco z malloc headeru:
// #include <malloc/malloc.h>
#else
#include <malloc.h>
#endif
It's also necessary to ad symlinks to fonts:
sudo ln -s "/System/Library/Fonts/Supplemental/Courier New.ttf" "/Library/Fonts/Courier New.ttf"
sudo ln -s "/System/Library/Fonts/Supplemental/Courier New Bold.ttf" "/Library/Fonts/Courier New Bold.ttf"
And last but not least, run it with opengl:
SDL_RENDER_DRIVER=opengl ./src/platform/sdl/sbasicg
Metadata
Metadata
Assignees
Labels
No labels