fix menu bug

git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@665 b9cfdab3-6d41-4d17-bbe4-086880011989
This commit is contained in:
NishiOwO
2025-11-11 12:27:04 +00:00
parent d95939b23c
commit 8e8bc2e740

View File

@@ -64,6 +64,7 @@ static void destroy(MwWidget handle) {
MwMenu m = handle->internal; \ MwMenu m = handle->internal; \
MwPoint p; \ MwPoint p; \
MwRect r; \ MwRect r; \
int rx; \
\ \
p.x = 10; \ p.x = 10; \
p.y = MwGetInteger(handle, MwNheight) / 2; \ p.y = MwGetInteger(handle, MwNheight) / 2; \
@@ -71,18 +72,20 @@ static void destroy(MwWidget handle) {
r.x = 0; \ r.x = 0; \
r.y = 0; \ r.y = 0; \
r.width = MwGetInteger(handle, MwNwidth); \ r.width = MwGetInteger(handle, MwNwidth); \
r.height = MwGetInteger(handle, MwNheight); r.height = MwGetInteger(handle, MwNheight); \
\
rx = r.width - 10;
#define BEGIN_MENU_LOOP \ #define BEGIN_MENU_LOOP \
for(i = 0; i < arrlen(m->sub); i++) { \ for(i = 0; i < arrlen(m->sub); i++) { \
int incr = m->sub[i]->name[0] == '?' ? 1 : 0; \ int incr = m->sub[i]->name[0] == '?' ? 1 : 0; \
int tw = MwTextWidth(handle, m->sub[i]->name + incr); \ int tw = MwTextWidth(handle, m->sub[i]->name + incr); \
int th = MwTextHeight(handle, m->sub[i]->name + incr); \ int th = MwTextHeight(handle, m->sub[i]->name + incr); \
int oldx = p.x; \
int in_area; \ int in_area; \
\ \
if(incr) { \ if(incr) { \
p.x = MwGetInteger(handle, MwNwidth) - tw - 10; \ p.x = rx -= tw; \
rx -= 20; \
} \ } \
\ \
r.x = p.x - 5; \ r.x = p.x - 5; \
@@ -93,8 +96,7 @@ static void destroy(MwWidget handle) {
in_area = (r.x <= handle->mouse_point.x && r.y <= handle->mouse_point.y && handle->mouse_point.x <= (int)(r.x + r.width) && handle->mouse_point.y <= (int)(r.y + r.height)) ? 1 : 0; in_area = (r.x <= handle->mouse_point.x && r.y <= handle->mouse_point.y && handle->mouse_point.x <= (int)(r.x + r.width) && handle->mouse_point.y <= (int)(r.y + r.height)) ? 1 : 0;
#define END_MENU_LOOP \ #define END_MENU_LOOP \
p.x += tw / 2 + 30; \ p.x += tw + 20; \
if(incr) p.x = oldx; \
} }
static void draw(MwWidget handle) { static void draw(MwWidget handle) {