more fuller suite of error mutes for vs2022
This commit is contained in:
parent
bde66f13a5
commit
6f976ae0ce
11 changed files with 186 additions and 41 deletions
|
|
@ -330,11 +330,13 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Windows" OR CMAKE_SYSTEM_NAME STREQUAL "MSYS")
|
|||
USE_GDI
|
||||
)
|
||||
list(APPEND LIBRARIES gdi32 ole32 winmm uuid)
|
||||
if(NOT MSVC)
|
||||
target_link_options(
|
||||
Mw
|
||||
PRIVATE
|
||||
-static-libgcc
|
||||
)
|
||||
endif()
|
||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||
# target_sources(
|
||||
# Mw
|
||||
|
|
|
|||
|
|
@ -19,15 +19,18 @@ typedef struct dir {
|
|||
|
||||
void* MwDirectoryOpen(const char* path) {
|
||||
dir_t* dir = malloc(sizeof(*dir));
|
||||
#ifdef _WIN32
|
||||
char* p = malloc(strlen(path) + 2 + 1);
|
||||
strcpy(p, path);
|
||||
if(strchr(path, '/') != NULL) {
|
||||
strcat(p, "/");
|
||||
} else {
|
||||
strcat(p, "\\");
|
||||
if(!dir) {
|
||||
printf("Out Of Memory\n");
|
||||
return NULL;
|
||||
}
|
||||
strcat(p, "*");
|
||||
#ifdef _WIN32
|
||||
char* p = MwStringDuplicate(path);
|
||||
if(strchr(path, '/') != NULL) {
|
||||
MwStringConcat(p, "/");
|
||||
} else {
|
||||
MwStringConcat(p, "\\");
|
||||
}
|
||||
MwStringConcat(p, "*");
|
||||
if((dir->hFind = FindFirstFile(p, &dir->ffd)) == INVALID_HANDLE_VALUE) {
|
||||
free(p);
|
||||
free(dir);
|
||||
|
|
@ -65,6 +68,10 @@ void MwDirectoryClose(void* handle) {
|
|||
MwDirectoryEntry* MwDirectoryRead(void* handle) {
|
||||
dir_t* dir = handle;
|
||||
MwDirectoryEntry* entry = malloc(sizeof(*entry));
|
||||
if(!entry) {
|
||||
printf("Out Of Memory\n");
|
||||
return NULL;
|
||||
}
|
||||
#ifdef _WIN32
|
||||
ULARGE_INTEGER* l;
|
||||
|
||||
|
|
@ -170,8 +177,8 @@ static void MwDirectoryJoinSingle(char* target, char* p) {
|
|||
b[0] = DIRSEP;
|
||||
b[1] = 0;
|
||||
|
||||
strcat(target, b);
|
||||
strcat(target, p);
|
||||
MwStringConcat(target, b);
|
||||
MwStringConcat(target, p);
|
||||
}
|
||||
|
||||
for(i = strlen(target) - 1; i >= 0; i--) {
|
||||
|
|
@ -187,17 +194,16 @@ static void MwDirectoryJoinSingle(char* target, char* p) {
|
|||
b[0] = DIRSEP;
|
||||
b[1] = 0;
|
||||
|
||||
strcat(target, b);
|
||||
MwStringConcat(target, b);
|
||||
}
|
||||
}
|
||||
|
||||
char* MwDirectoryJoin(char* a, char* b) {
|
||||
char* p = malloc(strlen(a) + 1 + strlen(b) + 1);
|
||||
char* p = MwStringDuplicate(a);
|
||||
char* bdup = MwStringDuplicate(b);
|
||||
char* b2 = bdup;
|
||||
int i;
|
||||
|
||||
strcpy(p, a);
|
||||
for(i = strlen(p) - 1; i >= 0; i--) {
|
||||
if(p[i] == DIRSEP) {
|
||||
p[i] = 0;
|
||||
|
|
|
|||
|
|
@ -397,6 +397,11 @@ static MwLL MwLLCreateImpl(MwLL parent, int x, int y, int width, int height) {
|
|||
userdata_t* u = malloc(sizeof(*u));
|
||||
WNDCLASSEX wc;
|
||||
|
||||
if(!r || !u) {
|
||||
printf("Out Of Memory\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
memset(&wc, 0, sizeof(wc));
|
||||
wc.cbSize = sizeof(WNDCLASSEX);
|
||||
wc.style = CS_HREDRAW | CS_VREDRAW;
|
||||
|
|
@ -482,6 +487,11 @@ static void MwLLPolygonImpl(MwLL handle, MwPoint* points, int points_count, MwLL
|
|||
HPEN pen = CreatePen(PS_NULL, 0, RGB(0, 0, 0));
|
||||
int i;
|
||||
|
||||
if(!p) {
|
||||
printf("Out Of Memory\n");
|
||||
return;
|
||||
}
|
||||
|
||||
for(i = 0; i < points_count; i++) {
|
||||
p[i].x = points[i].x;
|
||||
p[i].y = points[i].y;
|
||||
|
|
@ -516,6 +526,11 @@ static void MwLLLineImpl(MwLL handle, MwPoint* points, MwLLColor color) {
|
|||
static MwLLColor MwLLAllocColorImpl(MwLL handle, int r, int g, int b) {
|
||||
MwLLColor c = malloc(sizeof(*c));
|
||||
|
||||
if(!c) {
|
||||
printf("Out Of Memory\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
c->gdi.brush = NULL;
|
||||
|
||||
MwLLColorUpdate(handle, c, r, g, b);
|
||||
|
|
@ -593,10 +608,20 @@ static void MwLLNextEventImpl(MwLL handle) {
|
|||
if(handle->gdi.get_clipboard) {
|
||||
HGLOBAL hg;
|
||||
if(OpenClipboard(handle->gdi.hWnd) != 0 && (hg = GetClipboardData(CF_TEXT)) != NULL) {
|
||||
char* txt = malloc(GlobalSize(hg));
|
||||
int sz = GlobalSize(hg);
|
||||
char* txt = malloc(sz);
|
||||
char* clp = GlobalLock(hg);
|
||||
|
||||
if(!txt || !clp) {
|
||||
printf("Out of Memory\n");
|
||||
return;
|
||||
}
|
||||
|
||||
#if defined(_MSC_VER) && (_MSC_VER >= 1400)
|
||||
strcpy_s(txt, sz, clp);
|
||||
#else
|
||||
strcpy(txt, clp);
|
||||
#endif
|
||||
|
||||
GlobalUnlock(hg);
|
||||
CloseClipboard();
|
||||
|
|
@ -626,7 +651,17 @@ static MwLLPixmap MwLLCreatePixmapImpl(MwLL handle, unsigned char* data, int wid
|
|||
HDC dc = GetDC(handle->gdi.hWnd);
|
||||
BITMAPINFOHEADER bmih;
|
||||
|
||||
if(!r) {
|
||||
printf("Out Of Memory\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
r->common.raw = malloc(width * height * 4);
|
||||
if(!r->common.raw) {
|
||||
printf("Out Of Memory\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
memcpy(r->common.raw, data, 4 * width * height);
|
||||
|
||||
r->common.width = width;
|
||||
|
|
@ -666,6 +701,12 @@ static void MwLLPixmapUpdateImpl(MwLLPixmap r) {
|
|||
|
||||
words = malloc(w * r->common.height);
|
||||
words2 = malloc(w * r->common.height);
|
||||
|
||||
if(!words || !words2) {
|
||||
printf("Out Of Memory\n");
|
||||
return;
|
||||
}
|
||||
|
||||
memset(words, 0, w * r->common.height);
|
||||
memset(words2, 0, w * r->common.height);
|
||||
for(y = 0; y < r->common.height; y++) {
|
||||
|
|
@ -917,12 +958,30 @@ static void MwLLSetClipboardImpl(MwLL handle, const char* text, int clipboard_ty
|
|||
(void)clipboard_type;
|
||||
if(OpenClipboard(handle->gdi.hWnd) != 0) {
|
||||
char* lock;
|
||||
int sz = strlen(text) + 1;
|
||||
|
||||
EmptyClipboard();
|
||||
hg = GlobalAlloc(GHND | GMEM_SHARE, strlen(text) + 1);
|
||||
hg = GlobalAlloc(GHND | GMEM_SHARE, sz);
|
||||
|
||||
if(!hg) {
|
||||
printf("Out of Memory\n");
|
||||
return;
|
||||
}
|
||||
|
||||
lock = GlobalLock(hg);
|
||||
|
||||
if(!lock) {
|
||||
printf("Out Of Memory\n");
|
||||
GlobalUnlock(hg);
|
||||
CloseClipboard();
|
||||
return;
|
||||
}
|
||||
|
||||
#if defined(_MSC_VER) && (_MSC_VER >= 1400)
|
||||
strcpy_s(lock, sz, text);
|
||||
#else
|
||||
strcpy(lock, text);
|
||||
#endif
|
||||
GlobalUnlock(hg);
|
||||
|
||||
SetClipboardData(CF_TEXT, hg);
|
||||
|
|
|
|||
|
|
@ -110,9 +110,9 @@ static void color_picker_image_update(color_picker_t* picker) {
|
|||
picker->color_picker_image_data[i + 2] = 0;
|
||||
picker->color_picker_image_data[i + 3] = 0;
|
||||
} else if(dist >= 180.) {
|
||||
picker->color_picker_image_data[i] = dist;
|
||||
picker->color_picker_image_data[i + 1] = dist;
|
||||
picker->color_picker_image_data[i + 2] = dist;
|
||||
picker->color_picker_image_data[i] = (unsigned char)dist;
|
||||
picker->color_picker_image_data[i + 1] = (unsigned char)dist;
|
||||
picker->color_picker_image_data[i + 2] = (unsigned char)dist;
|
||||
picker->color_picker_image_data[i + 3] = 255;
|
||||
} else {
|
||||
MwHSV hsv_v;
|
||||
|
|
@ -121,26 +121,26 @@ static void color_picker_image_update(color_picker_t* picker) {
|
|||
double xd = (M_PI / 180.) * ((double)_x);
|
||||
double yd = (M_PI / 180.) * ((double)_y);
|
||||
|
||||
float angle = atan2(yd, xd) - M_PI;
|
||||
float hue = (angle * 180.) / M_PI;
|
||||
double angle = atan2(yd, xd) - M_PI;
|
||||
double hue = (angle * 180.) / M_PI;
|
||||
|
||||
if(hue < 0.0) {
|
||||
hue += 360;
|
||||
}
|
||||
hsv_v.h = (hue) * (HSV_HUE_STEPS / 360.);
|
||||
hsv_v.s = (dist) * (HSV_SAT_MAX / 180.);
|
||||
hsv_v.h = (MwU8)((hue) * (HSV_HUE_STEPS / 360.));
|
||||
hsv_v.s = (MwU8)((dist) * (HSV_SAT_MAX / 180.));
|
||||
picker->hue_table[n] = hsv_v;
|
||||
picker->hue_table[n].generated = 1;
|
||||
}
|
||||
|
||||
hsv_v = picker->hue_table[n];
|
||||
hsv_v.v = HSV_VAL_MAX - (picker->value * HSV_VAL_MAX);
|
||||
hsv_v.v = (MwU8)(HSV_VAL_MAX - (picker->value * HSV_VAL_MAX));
|
||||
|
||||
hsv2rgb(hsv_v.h, hsv_v.s, hsv_v.v, &color.red, &color.green, &color.blue);
|
||||
|
||||
picker->color_picker_image_data[i] = color.red;
|
||||
picker->color_picker_image_data[i + 1] = color.green;
|
||||
picker->color_picker_image_data[i + 2] = color.blue;
|
||||
picker->color_picker_image_data[i] = (unsigned char)color.red;
|
||||
picker->color_picker_image_data[i + 1] = (unsigned char)color.green;
|
||||
picker->color_picker_image_data[i + 2] = (unsigned char)color.blue;
|
||||
|
||||
picker->color_picker_image_data[i + 3] = 255;
|
||||
n++;
|
||||
|
|
|
|||
51
src/string.c
51
src/string.c
|
|
@ -1,21 +1,53 @@
|
|||
#include <Mw/Milsko.h>
|
||||
|
||||
char* MwStringDuplicate(const char* str) {
|
||||
char* r = malloc(strlen(str) + 1);
|
||||
int sz = strlen(str) + 1;
|
||||
char* r = malloc(sz);
|
||||
if(!r) {
|
||||
printf("Out Of Memory\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#if defined(_MSC_VER) && (_MSC_VER >= 1400)
|
||||
strcpy_s(r, sz, str);
|
||||
#else
|
||||
strcpy(r, str);
|
||||
#endif
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
char* MwStringConcat(const char* str1, const char* str2) {
|
||||
char* r = malloc(strlen(str1) + strlen(str2) + 1);
|
||||
int sz = strlen(str1) + strlen(str2) + 1;
|
||||
char* r = malloc(sz);
|
||||
if(!r) {
|
||||
printf("Out Of Memory\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#if defined(_MSC_VER) && (_MSC_VER >= 1400)
|
||||
strcpy_s(r, sz, str1);
|
||||
strcat_s(r, sz, str2);
|
||||
#else
|
||||
strcpy(r, str1);
|
||||
strcat(r, str2);
|
||||
#endif
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
void MwStringSize(char* out, MwOffset size) {
|
||||
#if defined(_MSC_VER) && (_MSC_VER >= 1400)
|
||||
if(size / 1024 == 0) {
|
||||
sprintf_s(out, 255, "%d", (int)size);
|
||||
} else if(size / 1024 / 1024 == 0) {
|
||||
sprintf_s(out, 255, "%.1fK", (double)size / 1024);
|
||||
} else if(size / 1024 / 1024 / 1024 == 0) {
|
||||
sprintf_s(out, 255, "%.1fM", (double)size / 1024 / 1024);
|
||||
} else {
|
||||
sprintf_s(out, 255, "%.1fG", (double)size / 1024 / 1024 / 1024);
|
||||
}
|
||||
#else
|
||||
if(size / 1024 == 0) {
|
||||
sprintf(out, "%d", (int)size);
|
||||
} else if(size / 1024 / 1024 == 0) {
|
||||
|
|
@ -25,16 +57,28 @@ void MwStringSize(char* out, MwOffset size) {
|
|||
} else {
|
||||
sprintf(out, "%.1fG", (double)size / 1024 / 1024 / 1024);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void MwStringTime(char* out, time_t t) {
|
||||
struct tm* tm = localtime(&t);
|
||||
const char* months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
|
||||
|
||||
|
||||
|
||||
if(tm == NULL) {
|
||||
#if defined(_MSC_VER) && (_MSC_VER >= 1400)
|
||||
sprintf_s(out, 255, "localtime error");
|
||||
#else
|
||||
sprintf(out, "localtime error");
|
||||
#endif
|
||||
|
||||
} else {
|
||||
#if defined(_MSC_VER) && (_MSC_VER >= 1400)
|
||||
sprintf_s(out, 255, "%s %2d %02d:%02d %d", months[tm->tm_mon], tm->tm_mday, tm->tm_hour, tm->tm_min, 1900 + tm->tm_year);
|
||||
#else
|
||||
sprintf(out, "%s %2d %02d:%02d %d", months[tm->tm_mon], tm->tm_mday, tm->tm_hour, tm->tm_min, 1900 + tm->tm_year);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
void MwStringPrintIntoBuffer(char* out, MwU32 size, const char* fmt, ...) {
|
||||
|
|
@ -43,6 +87,9 @@ void MwStringPrintIntoBuffer(char* out, MwU32 size, const char* fmt, ...) {
|
|||
|
||||
#if __STDC_VERSION__ >= 199901L
|
||||
vsnprintf(out, size, fmt, va);
|
||||
/* MSVC2022 reports the STDC_VERSION as fucking 1994. Thanks Bill Gates. */
|
||||
#elif defined(_MSC_VER) && (_MSC_VER >= 1400)
|
||||
vsprintf_s(out, size, fmt, va);
|
||||
#else
|
||||
vsprintf(out, fmt, va);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -88,9 +88,9 @@ void MwDrawText(MwWidget handle, MwFLFont ttf, MwPoint* point, const char* text,
|
|||
|
||||
if(c != NULL) {
|
||||
fadedColor = MwLLAllocColor(handle->lowlevel, color->common.red, color->common.blue, color->common.green);
|
||||
fadedColor->common.red = fadedColor->common.red + (c->common.red - fadedColor->common.red) * 0.5;
|
||||
fadedColor->common.green = fadedColor->common.green + (c->common.green - fadedColor->common.green) * 0.5;
|
||||
fadedColor->common.blue = fadedColor->common.blue + (c->common.blue - fadedColor->common.blue) * 0.5;
|
||||
fadedColor->common.red = (MwU8)(fadedColor->common.red + (c->common.red - fadedColor->common.red) * 0.5);
|
||||
fadedColor->common.green = (MwU8)(fadedColor->common.green + (c->common.green - fadedColor->common.green) * 0.5);
|
||||
fadedColor->common.blue = (MwU8)(fadedColor->common.blue + (c->common.blue - fadedColor->common.blue) * 0.5);
|
||||
MwLLColorUpdate(handle->lowlevel, fadedColor, fadedColor->common.red, fadedColor->common.green, fadedColor->common.blue);
|
||||
|
||||
MwLLFreeColor(c);
|
||||
|
|
@ -110,6 +110,11 @@ void MwDrawText(MwWidget handle, MwFLFont ttf, MwPoint* point, const char* text,
|
|||
char* line = malloc(input - last + 1);
|
||||
int i;
|
||||
|
||||
if(!line) {
|
||||
printf("Out Of Memory\n");
|
||||
return;
|
||||
}
|
||||
|
||||
memcpy(line, last, input - last);
|
||||
|
||||
line[input - last] = 0;
|
||||
|
|
@ -177,6 +182,11 @@ int MwTextWidth(MwWidget handle, MwFLFont ttf, const char* text) {
|
|||
char* line = malloc(input - last + 1);
|
||||
int i;
|
||||
|
||||
if(!line) {
|
||||
printf("Out Of Memory\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
memcpy(line, last, input - last);
|
||||
|
||||
line[input - last] = 0;
|
||||
|
|
@ -250,6 +260,11 @@ static void bitmap_MwDrawText(MwWidget handle, MwPoint* point, const char* text,
|
|||
th = MwTextHeight(handle, NULL, text);
|
||||
px = malloc(tw * th * 4);
|
||||
|
||||
if(!px) {
|
||||
printf("Out of Memory\n");
|
||||
return;
|
||||
}
|
||||
|
||||
memset(px, 0, tw * th * 4);
|
||||
|
||||
sx = 0;
|
||||
|
|
|
|||
|
|
@ -55,11 +55,11 @@ static void draw(MwWidget handle) {
|
|||
double sh = (double)oh / px->common.height;
|
||||
|
||||
if(sw < sh) {
|
||||
r.width = px->common.width * sw;
|
||||
r.height = px->common.height * sw;
|
||||
r.width = (int)(px->common.width * sw);
|
||||
r.height = (int)(px->common.height * sw);
|
||||
} else {
|
||||
r.width = px->common.width * sh;
|
||||
r.height = px->common.height * sh;
|
||||
r.width = (int)(px->common.width * sh);
|
||||
r.height = (int)(px->common.height * sh);
|
||||
}
|
||||
r.width -= MwGetInteger(handle, MwNpadding) * 2;
|
||||
r.height -= MwGetInteger(handle, MwNpadding) * 2;
|
||||
|
|
@ -68,8 +68,8 @@ static void draw(MwWidget handle) {
|
|||
r.height = px->common.height;
|
||||
}
|
||||
|
||||
r.x += (double)(ow - r.width) / 2;
|
||||
r.y += (double)(oh - r.height) / 2;
|
||||
r.x += (int)((double)(ow - r.width) / 2);
|
||||
r.y += (int)((double)(oh - r.height) / 2);
|
||||
|
||||
MwLLDrawPixmap(handle->lowlevel, &r, px);
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -203,11 +203,16 @@ static void frame_draw(MwWidget handle) {
|
|||
int seek = 0;
|
||||
int l = 0;
|
||||
char* old = str;
|
||||
int sz = strlen(old) + 5;
|
||||
|
||||
if(ind < 0) ind = 0;
|
||||
|
||||
str = malloc(strlen(old) + 5);
|
||||
str = malloc(sz);
|
||||
#if defined(_MSC_VER) && (_MSC_VER >= 1400)
|
||||
strcpy_s(str, sz, old);
|
||||
#else
|
||||
strcpy(str, old);
|
||||
#endif
|
||||
free(old);
|
||||
|
||||
while(str[seek] != 0) {
|
||||
|
|
@ -317,6 +322,11 @@ static void resize(MwWidget handle, int no_resize) {
|
|||
|
||||
static int wcreate(MwWidget handle) {
|
||||
MwListBox lb = malloc(sizeof(*lb));
|
||||
if(!lb) {
|
||||
printf("Out Of Memory\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
memset(lb, 0, sizeof(*lb));
|
||||
|
||||
handle->internal = lb;
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ static void draw(MwWidget handle) {
|
|||
r.width -= MwDefaultBorderWidth(handle) * 2;
|
||||
r.height -= MwDefaultBorderWidth(handle) * 2;
|
||||
|
||||
r.width = r.width * w;
|
||||
r.width = (int)(r.width * w);
|
||||
MwDrawRect(handle, &r, fill);
|
||||
|
||||
MwLLFreeColor(fill);
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ static int calc_length(MwWidget handle) {
|
|||
int area = MwGetInteger(handle, MwNareaShown);
|
||||
if(area > len) area = len;
|
||||
|
||||
return max * (double)area / len;
|
||||
return (int)(max * (double)area / len);
|
||||
}
|
||||
|
||||
static int calc_position(MwWidget handle) {
|
||||
|
|
@ -36,7 +36,7 @@ static int calc_position(MwWidget handle) {
|
|||
int len = MwGetInteger(handle, MwNmaxValue) - MwGetInteger(handle, MwNminValue);
|
||||
int val = MwGetInteger(handle, MwNvalue);
|
||||
|
||||
return (max - calc_length(handle)) * (double)val / len;
|
||||
return (int)((max - calc_length(handle)) * (double)val / len);
|
||||
}
|
||||
|
||||
static void add_value(MwWidget handle, int mul) {
|
||||
|
|
@ -54,7 +54,7 @@ static void add_value(MwWidget handle, int mul) {
|
|||
}
|
||||
|
||||
static void draw(MwWidget handle) {
|
||||
MwRect r, rt, rbar;
|
||||
MwRect r = {0}, rt = {0}, rbar = {0};
|
||||
MwLLColor base = MwParseColor(handle, MwGetText(handle, MwNbackground));
|
||||
MwLLColor dark = MwLightenColor(handle, base, -64, -64, -64);
|
||||
MwScrollBar scr = handle->internal;
|
||||
|
|
|
|||
|
|
@ -76,6 +76,12 @@ static void resize(MwWidget handle) {
|
|||
|
||||
static int wcreate(MwWidget handle) {
|
||||
MwViewport vp = malloc(sizeof(*vp));
|
||||
|
||||
if(!vp) {
|
||||
printf("Out Of Memory\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
memset(vp, 0, sizeof(*vp));
|
||||
|
||||
handle->internal = vp;
|
||||
|
|
@ -151,7 +157,7 @@ static void tick(MwWidget handle) {
|
|||
v = MwGetInteger(vp->vscroll, MwNvalue);
|
||||
mv = MwGetInteger(vp->vscroll, MwNmaxValue);
|
||||
l = MwGetInteger(vp->frame, MwNheight);
|
||||
v = (mv - l) * (double)v / mv;
|
||||
v = (int)((mv - l) * (double)v / mv);
|
||||
|
||||
if(v < 0) v = 0;
|
||||
MwVaApply(vp->inframe,
|
||||
|
|
@ -166,7 +172,7 @@ static void tick(MwWidget handle) {
|
|||
v = MwGetInteger(vp->hscroll, MwNvalue);
|
||||
mv = MwGetInteger(vp->hscroll, MwNmaxValue);
|
||||
l = MwGetInteger(vp->frame, MwNwidth);
|
||||
v = (mv - l) * (double)v / mv;
|
||||
v = (int)((mv - l) * (double)v / mv);
|
||||
|
||||
if(v < 0) v = 0;
|
||||
MwVaApply(vp->inframe,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue