improve checkbox
All checks were successful
pyrite-dev/milsko/pipeline/head This commit looks good

This commit is contained in:
Nishi 2026-09-12 06:34:35 +09:00
commit 77e652cddc
5 changed files with 51 additions and 21 deletions

View file

@ -19,8 +19,8 @@ typedef struct dir {
void* MwDirectoryOpen(const char* path) { void* MwDirectoryOpen(const char* path) {
dir_t* dir = malloc(sizeof(*dir)); dir_t* dir = malloc(sizeof(*dir));
char * p; char* p;
if(!dir) { if(!dir) {
printf("Out Of Memory\n"); printf("Out Of Memory\n");
return NULL; return NULL;
} }
@ -70,15 +70,15 @@ MwDirectoryEntry* MwDirectoryRead(void* handle) {
dir_t* dir = handle; dir_t* dir = handle;
MwDirectoryEntry* entry = malloc(sizeof(*entry)); MwDirectoryEntry* entry = malloc(sizeof(*entry));
#ifdef _WIN32 #ifdef _WIN32
ULARGE_INTEGER* l; ULARGE_INTEGER* l;
#elif defined(CLASSIC_MAC_OS) #elif defined(CLASSIC_MAC_OS)
#else #else
struct dirent* d; struct dirent* d;
struct stat s; struct stat s;
char* p; char* p;
#endif #endif
if(!entry) { if(!entry) {
printf("Out Of Memory\n"); printf("Out Of Memory\n");
return NULL; return NULL;
} }

View file

@ -1090,14 +1090,14 @@ int MwLibraryInit(void) {
int i; int i;
#ifdef _WIN32 #ifdef _WIN32
/* /*
There's no Windows configuration that Milsko supports that doesn't have winmm. There's no Windows configuration that Milsko supports that doesn't have winmm.
However, uhh, Visual Studio 2022. For some fucking reason. However, uhh, Visual Studio 2022. For some fucking reason.
Thanks for coming to my TED Talk. Thanks for coming to my TED Talk.
*/ */
MwLL_winmmLib = LoadLibrary("winmm.dll"); MwLL_winmmLib = LoadLibrary("winmm.dll");
MwLL_PFN_timeGetTime = (void *)GetProcAddress(MwLL_winmmLib, "timeGetTime"); MwLL_PFN_timeGetTime = (void*)GetProcAddress(MwLL_winmmLib, "timeGetTime");
MwLL_PFN_timeBeginPeriod = (void *)GetProcAddress(MwLL_winmmLib, "timeBeginPeriod"); MwLL_PFN_timeBeginPeriod = (void*)GetProcAddress(MwLL_winmmLib, "timeBeginPeriod");
MwLL_PFN_timeBeginPeriod(10); MwLL_PFN_timeBeginPeriod(10);
#endif #endif

View file

@ -124,7 +124,7 @@ void MwDrawRectFading(MwWidget handle, MwRect* rect, MwLLColor color) {
int ColorDiff = get_color_diff(handle); int ColorDiff = get_color_diff(handle);
double darkenStep = (ColorDiff / 2.) / rect->height; double darkenStep = (ColorDiff / 2.) / rect->height;
unsigned long sz = 1 * rect->height * 4; unsigned long sz = 1 * rect->height * 4;
unsigned char* data = malloc(sz*2); unsigned char* data = malloc(sz * 2);
MwRect r = *rect; MwRect r = *rect;
if(!data) { if(!data) {
return; return;
@ -952,8 +952,8 @@ MwLLPixmap MwLoadXPM(MwWidget handle, char** data) {
} }
} }
rgb = malloc(row * col * 4); rgb = malloc(row * col * 4);
comp = malloc(cpp + 1); comp = malloc(cpp + 1);
if(!rgb || !comp) { if(!rgb || !comp) {
printf("Null malloc! Out of memory?"); printf("Null malloc! Out of memory?");
return NULL; return NULL;

View file

@ -2,7 +2,7 @@
char* MwStringDuplicate(const char* str) { char* MwStringDuplicate(const char* str) {
int sz = strlen(str) + 1; int sz = strlen(str) + 1;
char* r = malloc(sz); char* r = malloc(sz);
if(!r) { if(!r) {
printf("Out Of Memory\n"); printf("Out Of Memory\n");
return NULL; return NULL;
@ -19,7 +19,7 @@ char* MwStringDuplicate(const char* str) {
char* MwStringConcat(const char* str1, const char* str2) { char* MwStringConcat(const char* str1, const char* str2) {
int sz = strlen(str1) + strlen(str2) + 1; int sz = strlen(str1) + strlen(str2) + 1;
char* r = malloc(sz); char* r = malloc(sz);
if(!r) { if(!r) {
printf("Out Of Memory\n"); printf("Out Of Memory\n");
return NULL; return NULL;
@ -64,8 +64,6 @@ void MwStringTime(char* out, time_t t) {
struct tm* tm = localtime(&t); struct tm* tm = localtime(&t);
const char* months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; const char* months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
if(tm == NULL) { if(tm == NULL) {
#if defined(_MSC_VER) && (_MSC_VER >= 1400) #if defined(_MSC_VER) && (_MSC_VER >= 1400)
sprintf_s(out, 255, "localtime error"); sprintf_s(out, 255, "localtime error");

View file

@ -10,8 +10,10 @@ static int wcreate(MwWidget handle) {
static void draw(MwWidget handle) { static void draw(MwWidget handle) {
MwRect r; MwRect r;
MwLLColor base = MwParseColor(handle, MwGetText(handle, MwNbackground)); MwLLColor base = MwParseColor(handle, MwGetText(handle, MwNbackground));
MwLLPixmap bgpx = MwGetVoid(handle, MwNbackgroundPixmap); MwLLColor base2 = MwParseColor(handle, MwGetText(handle, MwNsubBackground));
MwLLColor text2 = MwParseColor(handle, MwGetText(handle, MwNsubForeground));
MwLLPixmap bgpx = MwGetVoid(handle, MwNbackgroundPixmap);
r.x = 0; r.x = 0;
r.y = 0; r.y = 0;
@ -27,12 +29,42 @@ static void draw(MwWidget handle) {
r.x = (MwGetInteger(handle, MwNwidth) - r.width) / 2; r.x = (MwGetInteger(handle, MwNwidth) - r.width) / 2;
r.y = (MwGetInteger(handle, MwNheight) - r.height) / 2; r.y = (MwGetInteger(handle, MwNheight) - r.height) / 2;
MwDrawWidgetBack(handle, &r, base, (handle->pressed || MwGetInteger(handle, MwNchecked)) ? 1 : 0, MwDEFAULT); MwDrawFrame(handle, &r, base, 1);
MwDrawRect(handle, &r, base2);
if(bgpx != NULL) MwLLDrawPixmap(handle->lowlevel, &r, bgpx); if(bgpx != NULL) MwLLDrawPixmap(handle->lowlevel, &r, bgpx);
if(handle->pressed || MwGetInteger(handle, MwNchecked)) { if(handle->pressed || MwGetInteger(handle, MwNchecked)) {
/* TODO: write check mark */ MwPoint p[6];
int gap_w = r.width / 4 / 3;
int gap_h = r.height / 4 / 3;
r.x += gap_w;
r.y += gap_h;
r.width -= gap_w * 2;
r.height -= gap_h * 2;
p[0].x = r.x;
p[0].y = r.y + r.height * 2 / 3;
p[1].x = r.x + r.width / 3;
p[1].y = r.y + r.height;
p[2].x = r.x + r.width;
p[2].y = r.y + r.height / 3;
p[3] = p[2];
p[3].y -= r.height / 3;
p[4] = p[1];
p[4].y -= r.height / 3;
p[5] = p[0];
p[5].y -= r.height / 3;
MwLLPolygon(handle->lowlevel, p, 6, text2);
} }
MwLLFreeColor(text2);
MwLLFreeColor(base2);
MwLLFreeColor(base); MwLLFreeColor(base);
} }