|
|
| version 1.3, 2003/12/19 15:53:52 | version 1.7, 2005/02/07 14:46:09 |
|---|---|
| Line 39 typedef struct { | Line 39 typedef struct { |
| short minval; | short minval; |
| short maxval; | short maxval; |
| int pos; | int pos; |
| BYTE type; | UINT8 type; |
| BYTE moving; | UINT8 moving; |
| BYTE sldh; | UINT8 sldh; |
| BYTE sldv; | UINT8 sldv; |
| } DLGSLD; | } DLGSLD; |
| typedef struct { | typedef struct { |
| Line 123 static DLGPRM resappend(MENUDLG dlg, con | Line 123 static DLGPRM resappend(MENUDLG dlg, con |
| prm->icon = NULL; | prm->icon = NULL; |
| prm->str[0] = '\0'; | prm->str[0] = '\0'; |
| if (str) { | if (str) { |
| milstr_ncpy(prm->str, str, sizeof(prm->str)); | milsjis_ncpy(prm->str, str, sizeof(prm->str)); |
| } | } |
| } | } |
| return(prm); | return(prm); |
| Line 156 static DLGPRM ressea(DLGHDL hdl, int pos | Line 156 static DLGPRM ressea(DLGHDL hdl, int pos |
| return(NULL); | return(NULL); |
| } | } |
| static BOOL dsbyid(void *vpItem, void *vpArg) { | static BOOL dsbyid(void *vpItem, void *vpArg) { |
| if (((DLGHDL)vpItem)->id == (MENUID)(unsigned long)vpArg) { | if (((DLGHDL)vpItem)->id == (MENUID)(unsigned long)vpArg) { |
| Line 165 static BOOL dsbyid(void *vpItem, void *v | Line 164 static BOOL dsbyid(void *vpItem, void *v |
| return(FALSE); | return(FALSE); |
| } | } |
| static DLGHDL dlghdlsea(MENUDLG dlg, MENUID id) { | static DLGHDL dlghdlsea(MENUDLG dlg, MENUID id) { |
| return((DLGHDL)listarray_enum(dlg->dlg, dsbyid, (void *)(long)id)); | return((DLGHDL)listarray_enum(dlg->dlg, dsbyid, (void *)(long)id)); |
| Line 293 static BOOL dlgbase_create(MENUDLG dlg, | Line 291 static BOOL dlgbase_create(MENUDLG dlg, |
| rct.right = hdl->rect.right - hdl->rect.left - | rct.right = hdl->rect.right - hdl->rect.left - |
| ((MENU_FBORDER + MENU_BORDER) * 2); | ((MENU_FBORDER + MENU_BORDER) * 2); |
| hdl->vram = vram_create(rct.right, MENUDLG_CYCAPTION, FALSE, DEFAULT_BPP); | hdl->vram = vram_create(rct.right, MENUDLG_CYCAPTION, FALSE, menubase.bpp); |
| if (hdl->vram == NULL) { | if (hdl->vram == NULL) { |
| goto dbcre_err; | goto dbcre_err; |
| } | } |
| Line 381 static void dlgclose_move(MENUDLG dlg, D | Line 379 static void dlgclose_move(MENUDLG dlg, D |
| } | } |
| static void dlgclose_rel(MENUDLG dlg, DLGHDL hdl, int x, int y, int focus) { | static void dlgclose_rel(MENUDLG dlg, DLGHDL hdl, int focus) { |
| if (focus) { | if (focus) { |
| dlg->proc(DLGMSG_CLOSE, 0, 0); | dlg->proc(DLGMSG_CLOSE, 0, 0); |
| } | } |
| (void)hdl; | (void)hdl; |
| (void)x; | |
| (void)y; | |
| } | } |
| Line 428 static void dlgbtn_onclick(MENUDLG dlg, | Line 424 static void dlgbtn_onclick(MENUDLG dlg, |
| (void)y; | (void)y; |
| } | } |
| static void dlgbtn_move(MENUDLG dlg, DLGHDL hdl, int x, int y, int focus) { | static void dlgbtn_move(MENUDLG dlg, DLGHDL hdl, int x, int y, int focus) { |
| if (hdl->val != focus) { | if (hdl->val != focus) { |
| Line 439 static void dlgbtn_move(MENUDLG dlg, DLG | Line 434 static void dlgbtn_move(MENUDLG dlg, DLG |
| (void)y; | (void)y; |
| } | } |
| static void dlgbtn_rel(MENUDLG dlg, DLGHDL hdl, int focus) { | |
| static void dlgbtn_rel(MENUDLG dlg, DLGHDL hdl, int x, int y, int focus) { | if (hdl->val != 0) { |
| if (focus) { | |
| hdl->val = 0; | hdl->val = 0; |
| drawctrls(dlg, hdl); | drawctrls(dlg, hdl); |
| } | |
| if (focus) { | |
| dlg->proc(DLGMSG_COMMAND, hdl->id, 0); | dlg->proc(DLGMSG_COMMAND, hdl->id, 0); |
| } | } |
| (void)x; | |
| (void)y; | |
| } | } |
| Line 476 static void dlglist_reset(MENUDLG dlg, D | Line 470 static void dlglist_reset(MENUDLG dlg, D |
| DLGPRM next; | DLGPRM next; |
| vram_filldat(hdl->vram, NULL, 0xffffff); | vram_filldat(hdl->vram, NULL, 0xffffff); |
| dp = hdl->prm; | dp = hdl->prm; |
| while(dp) { | while(dp) { |
| next = dp->next; | next = dp->next; |
| Line 488 static void dlglist_reset(MENUDLG dlg, D | Line 481 static void dlglist_reset(MENUDLG dlg, D |
| hdl->val = -1; | hdl->val = -1; |
| hdl->c.dl.scrollbar = 0; | hdl->c.dl.scrollbar = 0; |
| hdl->c.dl.basepos = 0; | hdl->c.dl.basepos = 0; |
| (void)dlg; | |
| } | } |
| static BOOL dlglist_create(MENUDLG dlg, DLGHDL hdl, const void *arg) { | static BOOL dlglist_create(MENUDLG dlg, DLGHDL hdl, const void *arg) { |
| Line 498 static BOOL dlglist_create(MENUDLG dlg, | Line 490 static BOOL dlglist_create(MENUDLG dlg, |
| width = hdl->rect.right - hdl->rect.left - (MENU_LINE * 4); | width = hdl->rect.right - hdl->rect.left - (MENU_LINE * 4); |
| height = hdl->rect.bottom - hdl->rect.top - (MENU_LINE * 4); | height = hdl->rect.bottom - hdl->rect.top - (MENU_LINE * 4); |
| hdl->vram = vram_create(width, height, FALSE, DEFAULT_BPP); | hdl->vram = vram_create(width, height, FALSE, menubase.bpp); |
| if (hdl->vram == NULL) { | if (hdl->vram == NULL) { |
| goto dlcre_err; | goto dlcre_err; |
| } | } |
| Line 733 static BOOL dlglist_setex(MENUDLG dlg, D | Line 725 static BOOL dlglist_setex(MENUDLG dlg, D |
| } | } |
| resattachicon(dlg, dp, arg->icon, hdl->c.dl.fontsize, | resattachicon(dlg, dp, arg->icon, hdl->c.dl.fontsize, |
| hdl->c.dl.fontsize); | hdl->c.dl.fontsize); |
| milstr_ncpy(dp->str, arg->str, sizeof(dp->str)); | milsjis_ncpy(dp->str, arg->str, sizeof(dp->str)); |
| return(dlglist_drawsub(hdl, arg->pos, (arg->pos == hdl->val))); | return(dlglist_drawsub(hdl, arg->pos, (arg->pos == hdl->val))); |
| } | } |
| static int dlglist_getpos(DLGHDL hdl, int y) { | |
| int val; | |
| val = (y / hdl->c.dl.fontsize) + hdl->c.dl.basepos; | |
| if ((unsigned int)val < (unsigned int)hdl->prmcnt) { | |
| return(val); | |
| } | |
| else { | |
| return(-1); | |
| } | |
| } | |
| enum { | |
| DLCUR_OUT = -1, | |
| DLCUR_INLIST = 0, | |
| DLCUR_UP = 1, | |
| DLCUR_INBAR = 2, | |
| DLCUR_DOWN = 3, | |
| DLCUR_PGUP = 4, | |
| DLCUR_PGDN = 5 | |
| }; | |
| static int dlglist_getpc(DLGHDL hdl, int x, int y) { | static int dlglist_getpc(DLGHDL hdl, int x, int y) { |
| x -= (MENU_LINE * 2); | |
| if ((unsigned int)x >= (unsigned int)hdl->vram->width) { | if ((unsigned int)x >= (unsigned int)hdl->vram->width) { |
| goto dlgp_out; | goto dlgp_out; |
| } | } |
| y -= (MENU_LINE * 2); | |
| if ((unsigned int)y >= (unsigned int)hdl->vram->height) { | if ((unsigned int)y >= (unsigned int)hdl->vram->height) { |
| goto dlgp_out; | goto dlgp_out; |
| } | } |
| if ((hdl->prmcnt < hdl->c.dl.dispmax) || | if ((hdl->prmcnt < hdl->c.dl.dispmax) || |
| (x < (hdl->vram->width - MENUDLG_CXVSCR))) { | (x < (hdl->vram->width - MENUDLG_CXVSCR))) { |
| return(0); | return(DLCUR_INLIST); |
| } | } |
| else if (y < MENUDLG_CYVSCR) { | else if (y < MENUDLG_CYVSCR) { |
| return(1); | return(DLCUR_UP); |
| } | } |
| else if (y >= (hdl->vram->height - MENUDLG_CYVSCR)) { | else if (y >= (hdl->vram->height - MENUDLG_CYVSCR)) { |
| return(3); | return(DLCUR_DOWN); |
| } | |
| y -= MENUDLG_CYVSCR; | |
| y -= dlglist_barpos(hdl); | |
| if (y < 0) { | |
| return(DLCUR_PGUP); | |
| } | } |
| else if (hdl->c.dl.scrollbar) { | else if (y < (int)hdl->c.dl.scrollbar) { |
| return(2); | return(DLCUR_INBAR); |
| } | |
| else { | |
| return(DLCUR_PGDN); | |
| } | } |
| dlgp_out: | dlgp_out: |
| return(-1); | return(DLCUR_OUT); |
| } | } |
| static void dlglist_setval(MENUDLG dlg, DLGHDL hdl, int val) { | static void dlglist_setval(MENUDLG dlg, DLGHDL hdl, int val) { |
| Line 809 static void dlglist_setbasepos(MENUDLG d | Line 831 static void dlglist_setbasepos(MENUDLG d |
| static void dlglist_onclick(MENUDLG dlg, DLGHDL hdl, int x, int y) { | static void dlglist_onclick(MENUDLG dlg, DLGHDL hdl, int x, int y) { |
| int flg; | int flg; |
| int val; | |
| flg = dlglist_getpc(hdl, x, y); | x -= (MENU_LINE * 2); |
| y -= (MENU_LINE * 2); | y -= (MENU_LINE * 2); |
| flg = dlglist_getpc(hdl, x, y); | |
| dlg->dragflg = flg; | dlg->dragflg = flg; |
| switch(flg) { | switch(flg) { |
| case 0: | case DLCUR_INLIST: |
| dlglist_setval(dlg, hdl, (y / hdl->c.dl.fontsize) + | val = dlglist_getpos(hdl, y); |
| hdl->c.dl.basepos); | if ((val == hdl->val) && (val != -1)) { |
| dlg->proc(DLGMSG_COMMAND, hdl->id, 0); | dlg->proc(DLGMSG_COMMAND, hdl->id, 1); |
| } | |
| else { | |
| dlglist_setval(dlg, hdl, val); | |
| dlg->proc(DLGMSG_COMMAND, hdl->id, 0); | |
| } | |
| break; | break; |
| case 1: | case 1: |
| Line 827 static void dlglist_onclick(MENUDLG dlg, | Line 856 static void dlglist_onclick(MENUDLG dlg, |
| drawctrls(dlg, hdl); | drawctrls(dlg, hdl); |
| break; | break; |
| case 2: | case DLCUR_INBAR: |
| y -= MENUDLG_CYVSCR; | y -= MENUDLG_CYVSCR; |
| y -= dlglist_barpos(hdl); | y -= dlglist_barpos(hdl); |
| if ((unsigned int)y < (unsigned int)hdl->c.dl.scrollbar) { | if ((unsigned int)y < (unsigned int)hdl->c.dl.scrollbar) { |
| Line 837 static void dlglist_onclick(MENUDLG dlg, | Line 866 static void dlglist_onclick(MENUDLG dlg, |
| dlg->lasty = -1; | dlg->lasty = -1; |
| } | } |
| break; | break; |
| case DLCUR_PGUP: | |
| dlglist_setbasepos(dlg, hdl, hdl->c.dl.basepos | |
| - hdl->c.dl.dispmax); | |
| drawctrls(dlg, hdl); | |
| break; | |
| case DLCUR_PGDN: | |
| dlglist_setbasepos(dlg, hdl, hdl->c.dl.basepos | |
| + hdl->c.dl.dispmax); | |
| drawctrls(dlg, hdl); | |
| break; | |
| } | } |
| } | } |
| Line 845 static void dlglist_move(MENUDLG dlg, DL | Line 886 static void dlglist_move(MENUDLG dlg, DL |
| int flg; | int flg; |
| int height; | int height; |
| flg = dlglist_getpc(hdl, x, y); | x -= (MENU_LINE * 2); |
| y -= (MENU_LINE * 2); | y -= (MENU_LINE * 2); |
| flg = dlglist_getpc(hdl, x, y); | |
| switch(dlg->dragflg) { | switch(dlg->dragflg) { |
| case 0: | case DLCUR_INLIST: |
| if (flg == 0) { | if (flg == 0) { |
| dlglist_setval(dlg, hdl, (y / hdl->c.dl.fontsize) + | dlglist_setval(dlg, hdl, dlglist_getpos(hdl, y)); |
| hdl->c.dl.basepos); | |
| dlg->proc(DLGMSG_COMMAND, hdl->id, 0); | dlg->proc(DLGMSG_COMMAND, hdl->id, 0); |
| } | } |
| break; | break; |
| Line 862 static void dlglist_move(MENUDLG dlg, DL | Line 903 static void dlglist_move(MENUDLG dlg, DL |
| drawctrls(dlg, hdl); | drawctrls(dlg, hdl); |
| break; | break; |
| case 2: | case DLCUR_INBAR: |
| if (dlg->lasty >= 0) { | if (dlg->lasty >= 0) { |
| y -= MENUDLG_CYVSCR; | y -= MENUDLG_CYVSCR; |
| y -= dlg->lasty; | y -= dlg->lasty; |
| Line 884 static void dlglist_move(MENUDLG dlg, DL | Line 925 static void dlglist_move(MENUDLG dlg, DL |
| (void)focus; | (void)focus; |
| } | } |
| static void dlglist_rel(MENUDLG dlg, DLGHDL hdl, int x, int y, int focus) { | static void dlglist_rel(MENUDLG dlg, DLGHDL hdl, int focus) { |
| switch(dlg->dragflg) { | switch(dlg->dragflg) { |
| case 1: | case 1: |
| Line 893 static void dlglist_rel(MENUDLG dlg, DLG | Line 934 static void dlglist_rel(MENUDLG dlg, DLG |
| drawctrls(dlg, hdl); | drawctrls(dlg, hdl); |
| break; | break; |
| } | } |
| (void)x; | |
| (void)y; | |
| (void)focus; | (void)focus; |
| } | } |
| Line 1038 static void dlgslider_paint(MENUDLG dlg, | Line 1077 static void dlgslider_paint(MENUDLG dlg, |
| menuvram_res2put(dlg->vram, &src, &pt); | menuvram_res2put(dlg->vram, &src, &pt); |
| } | } |
| static void dlgslider_setval(MENUDLG dlg, DLGHDL hdl, int val) { | static void dlgslider_setval(MENUDLG dlg, DLGHDL hdl, int val) { |
| int pos; | int pos; |
| Line 1050 static void dlgslider_setval(MENUDLG dlg | Line 1088 static void dlgslider_setval(MENUDLG dlg |
| } | } |
| } | } |
| static void dlgslider_onclick(MENUDLG dlg, DLGHDL hdl, int x, int y) { | static void dlgslider_onclick(MENUDLG dlg, DLGHDL hdl, int x, int y) { |
| int width; | int width; |
| Line 1090 static void dlgslider_onclick(MENUDLG dl | Line 1127 static void dlgslider_onclick(MENUDLG dl |
| } | } |
| } | } |
| static void dlgslider_move(MENUDLG dlg, DLGHDL hdl, int x, int y, int focus) { | static void dlgslider_move(MENUDLG dlg, DLGHDL hdl, int x, int y, int focus) { |
| int range; | int range; |
| Line 1132 static void dlgslider_move(MENUDLG dlg, | Line 1168 static void dlgslider_move(MENUDLG dlg, |
| } | } |
| static void dlgslider_rel(MENUDLG dlg, DLGHDL hdl, int x, int y, int focus) { | static void dlgslider_rel(MENUDLG dlg, DLGHDL hdl, int focus) { |
| if (hdl->c.ds.moving) { | if (hdl->c.ds.moving) { |
| hdl->c.ds.moving = 0; | hdl->c.ds.moving = 0; |
| drawctrls(dlg, hdl); | drawctrls(dlg, hdl); |
| } | } |
| (void)x; | |
| (void)y; | |
| (void)focus; | (void)focus; |
| } | } |
| Line 1179 static BOOL dlgtablist_create(MENUDLG dl | Line 1213 static BOOL dlgtablist_create(MENUDLG dl |
| return(SUCCESS); | return(SUCCESS); |
| } | } |
| static void dlgtablist_paint(MENUDLG dlg, DLGHDL hdl) { | static void dlgtablist_paint(MENUDLG dlg, DLGHDL hdl) { |
| VRAMHDL dst; | VRAMHDL dst; |
| Line 1285 static void dlgtablist_paint(MENUDLG dlg | Line 1318 static void dlgtablist_paint(MENUDLG dlg |
| } | } |
| } | } |
| static void dlgtablist_setval(MENUDLG dlg, DLGHDL hdl, int val) { | static void dlgtablist_setval(MENUDLG dlg, DLGHDL hdl, int val) { |
| if (hdl->val != val) { | if (hdl->val != val) { |
| Line 1294 static void dlgtablist_setval(MENUDLG dl | Line 1326 static void dlgtablist_setval(MENUDLG dl |
| } | } |
| } | } |
| static void dlgtablist_append(MENUDLG dlg, DLGHDL hdl, const void *arg) { | static void dlgtablist_append(MENUDLG dlg, DLGHDL hdl, const void *arg) { |
| DLGPRM res; | DLGPRM res; |
| Line 1314 static void dlgtablist_append(MENUDLG dl | Line 1345 static void dlgtablist_append(MENUDLG dl |
| } | } |
| } | } |
| static void dlgtablist_onclick(MENUDLG dlg, DLGHDL hdl, int x, int y) { | static void dlgtablist_onclick(MENUDLG dlg, DLGHDL hdl, int x, int y) { |
| DLGPRM prm; | DLGPRM prm; |
| Line 1404 static void dlgframe_paint(MENUDLG dlg, | Line 1434 static void dlgframe_paint(MENUDLG dlg, |
| // ---- radio | // ---- radio |
| typedef struct { | |
| MENUDLG dlg; | |
| MENUID group; | |
| } MDCB1; | |
| static void dlgradio_paint(MENUDLG dlg, DLGHDL hdl) { | static void dlgradio_paint(MENUDLG dlg, DLGHDL hdl) { |
| POINT_T pt; | POINT_T pt; |
| Line 1424 const MENURES2 *src; | Line 1459 const MENURES2 *src; |
| dlg_text(dlg, hdl, &pt, &hdl->rect); | dlg_text(dlg, hdl, &pt, &hdl->rect); |
| } | } |
| typedef struct { | |
| MENUDLG dlg; | |
| MENUID group; | |
| } MDCB1; | |
| static BOOL drsv_cb(void *vpItem, void *vpArg) { | static BOOL drsv_cb(void *vpItem, void *vpArg) { |
| DLGHDL item; | DLGHDL item; |
| Line 1458 static void dlgradio_setval(MENUDLG dlg, | Line 1487 static void dlgradio_setval(MENUDLG dlg, |
| } | } |
| } | } |
| static void dlgradio_onclick(MENUDLG dlg, DLGHDL hdl, int x, int y) { | static void dlgradio_onclick(MENUDLG dlg, DLGHDL hdl, int x, int y) { |
| if (x < (hdl->c.dt.pt.x + MENUDLG_SXRADIO)) { | if (x < (hdl->c.dt.pt.x + MENUDLG_SXRADIO)) { |
| Line 1504 static void dlgcheck_paint(MENUDLG dlg, | Line 1532 static void dlgcheck_paint(MENUDLG dlg, |
| dlg_text(dlg, hdl, &pt, &hdl->rect); | dlg_text(dlg, hdl, &pt, &hdl->rect); |
| } | } |
| static void dlgcheck_setval(MENUDLG dlg, DLGHDL hdl, int val) { | static void dlgcheck_setval(MENUDLG dlg, DLGHDL hdl, int val) { |
| if (hdl->val != val) { | if (hdl->val != val) { |
| Line 1513 static void dlgcheck_setval(MENUDLG dlg, | Line 1540 static void dlgcheck_setval(MENUDLG dlg, |
| } | } |
| } | } |
| static void dlgcheck_onclick(MENUDLG dlg, DLGHDL hdl, int x, int y) { | static void dlgcheck_onclick(MENUDLG dlg, DLGHDL hdl, int x, int y) { |
| if (x < (hdl->c.dt.pt.x + MENUDLG_SXCHECK)) { | if (x < (hdl->c.dt.pt.x + MENUDLG_SXCHECK)) { |
| Line 1562 const void *str; | Line 1588 const void *str; |
| if (str == NULL) { | if (str == NULL) { |
| str = str_null; | str = str_null; |
| } | } |
| milstr_ncpy(hdl->prm->str, str, sizeof(hdl->prm->str)); | milsjis_ncpy(hdl->prm->str, str, sizeof(hdl->prm->str)); |
| fontmng_getsize(hdl->c.dt.font, str, &hdl->c.dt.pt); | fontmng_getsize(hdl->c.dt.font, str, &hdl->c.dt.pt); |
| } | } |
| (void)dlg; | (void)dlg; |
| Line 1698 static void _setval(MENUDLG dlg, DLGHDL | Line 1724 static void _setval(MENUDLG dlg, DLGHDL |
| (void)val; | (void)val; |
| } | } |
| static void _moverel(MENUDLG dlg, DLGHDL hdl, int x, int y, int focus) { | static void _moverel(MENUDLG dlg, DLGHDL hdl, int focus) { |
| (void)dlg; | (void)dlg; |
| (void)hdl; | (void)hdl; |
| (void)x; | |
| (void)y; | |
| (void)focus; | (void)focus; |
| } | } |
| Line 1712 typedef void (*DLGPAINT)(MENUDLG dlg, DL | Line 1736 typedef void (*DLGPAINT)(MENUDLG dlg, DL |
| typedef void (*DLGSETVAL)(MENUDLG dlg, DLGHDL hdl, int val); | typedef void (*DLGSETVAL)(MENUDLG dlg, DLGHDL hdl, int val); |
| typedef void (*DLGCLICK)(MENUDLG dlg, DLGHDL hdl, int x, int y); | typedef void (*DLGCLICK)(MENUDLG dlg, DLGHDL hdl, int x, int y); |
| typedef void (*DLGMOV)(MENUDLG dlg, DLGHDL hdl, int x, int y, int focus); | typedef void (*DLGMOV)(MENUDLG dlg, DLGHDL hdl, int x, int y, int focus); |
| typedef void (*DLGREL)(MENUDLG dlg, DLGHDL hdl, int x, int y, int focus); | typedef void (*DLGREL)(MENUDLG dlg, DLGHDL hdl, int focus); |
| static const DLGCRE dlgcre[] = { | static const DLGCRE dlgcre[] = { |
| dlgbase_create, // DLGTYPE_BASE | dlgbase_create, // DLGTYPE_BASE |
| Line 1838 static BOOL dc_cb2(void *vpItem, void *v | Line 1862 static BOOL dc_cb2(void *vpItem, void *v |
| if (hdl->flag & MENU_REDRAW) { | if (hdl->flag & MENU_REDRAW) { |
| hdl->flag &= ~MENU_REDRAW; | hdl->flag &= ~MENU_REDRAW; |
| if ((!(hdl->flag & MENU_DISABLE)) && | if ((!(hdl->flag & MENU_DISABLE)) && |
| ((unsigned int)hdl->type < (sizeof(dlgpaint)/sizeof(DLGPAINT)))) { | ((UINT)hdl->type < NELEMETS(dlgpaint))) { |
| dlgpaint[hdl->type](dlg, hdl); | dlgpaint[hdl->type](dlg, hdl); |
| menubase_setrect(dlg->vram, &hdl->rect); | menubase_setrect(dlg->vram, &hdl->rect); |
| } | } |
| Line 1925 BOOL menudlg_create(int width, int heigh | Line 1949 BOOL menudlg_create(int width, int heigh |
| MENUDLG_CYCAPTION + MENUDLG_BORDER; | MENUDLG_CYCAPTION + MENUDLG_BORDER; |
| mb = &menubase; | mb = &menubase; |
| dlg->font = mb->font; | dlg->font = mb->font; |
| dlg->vram = vram_create(width, height, FALSE, DEFAULT_BPP); | dlg->vram = vram_create(width, height, FALSE, mb->bpp); |
| if (dlg->vram == NULL) { | if (dlg->vram == NULL) { |
| goto mdcre_err; | goto mdcre_err; |
| } | } |
| Line 2024 BOOL menudlg_appends(const MENUPRM *res, | Line 2048 BOOL menudlg_appends(const MENUPRM *res, |
| return(r); | return(r); |
| } | } |
| BOOL menudlg_append(int type, MENUID id, MENUFLG flg, const void *arg, | BOOL menudlg_append(int type, MENUID id, MENUFLG flg, const void *arg, |
| int posx, int posy, int width, int height) { | int posx, int posy, int width, int height) { |
| Line 2070 BOOL menudlg_append(int type, MENUID id, | Line 2093 BOOL menudlg_append(int type, MENUID id, |
| dhdl.prm = NULL; | dhdl.prm = NULL; |
| dhdl.prmcnt = 0; | dhdl.prmcnt = 0; |
| dhdl.val = 0; | dhdl.val = 0; |
| if (((unsigned int)type >= (sizeof(dlgcre)/sizeof(DLGCRE))) || | if (((UINT)type >= NELEMENTS(dlgcre)) || |
| (dlgcre[type](dlg, &dhdl, arg))) { | (dlgcre[type](dlg, &dhdl, arg))) { |
| goto mda_err; | goto mda_err; |
| } | } |
| Line 2136 void menudlg_moving(int x, int y, int bt | Line 2159 void menudlg_moving(int x, int y, int bt |
| y -= hdl->rect.top; | y -= hdl->rect.top; |
| dlg->btn = 1; | dlg->btn = 1; |
| dlg->lastid = hdl->id; | dlg->lastid = hdl->id; |
| if ((unsigned int)hdl->type < | if ((UINT)hdl->type < NELEMENTS(dlgclick)) { |
| (sizeof(dlgclick)/sizeof(DLGCLICK))) { | |
| dlgclick[hdl->type](dlg, hdl, x, y); | dlgclick[hdl->type](dlg, hdl, x, y); |
| } | } |
| } | } |
| Line 2149 void menudlg_moving(int x, int y, int bt | Line 2171 void menudlg_moving(int x, int y, int bt |
| focus = rect_in(&hdl->rect, x, y); | focus = rect_in(&hdl->rect, x, y); |
| x -= hdl->rect.left; | x -= hdl->rect.left; |
| y -= hdl->rect.top; | y -= hdl->rect.top; |
| if ((unsigned int)hdl->type < (sizeof(dlgmov)/sizeof(DLGMOV))) { | if ((UINT)hdl->type < NELEMENTS(dlgmov)) { |
| dlgmov[hdl->type](dlg, hdl, x, y, focus); | dlgmov[hdl->type](dlg, hdl, x, y, focus); |
| } | } |
| if (btn == 2) { | if (btn == 2) { |
| dlg->btn = 0; | dlg->btn = 0; |
| if ((unsigned int)hdl->type < | if ((UINT)hdl->type < NELEMENTS(dlgrel)) { |
| (sizeof(dlgrel)/sizeof(DLGREL))) { | dlgrel[hdl->type](dlg, hdl, focus); |
| dlgrel[hdl->type](dlg, hdl, x, y, focus); | |
| } | } |
| } | } |
| } | } |
| Line 2215 void *menudlg_msg(int ctrl, MENUID id, v | Line 2236 void *menudlg_msg(int ctrl, MENUID id, v |
| case DMSG_SETVAL: | case DMSG_SETVAL: |
| ret = (void *)hdl->val; | ret = (void *)hdl->val; |
| if ((unsigned int)hdl->type < | if ((UINT)hdl->type < NELEMENTS(dlgsetval)) { |
| (sizeof(dlgsetval)/sizeof(DLGSETVAL))) { | |
| dlgsetval[hdl->type](dlg, hdl, (int)arg); | dlgsetval[hdl->type](dlg, hdl, (int)arg); |
| } | } |
| break; | break; |
| Line 2275 void *menudlg_msg(int ctrl, MENUID id, v | Line 2295 void *menudlg_msg(int ctrl, MENUID id, v |
| break; | break; |
| case DMSG_ITEMRESET: | case DMSG_ITEMRESET: |
| if ((dlg->btn) && (dlg->lastid == hdl->id)) { | |
| dlg->btn = 0; | |
| if ((UINT)hdl->type < NELEMENTS(dlgrel)) { | |
| dlgrel[hdl->type](dlg, hdl, FALSE); | |
| } | |
| } | |
| if (hdl->type == DLGTYPE_LIST) { | if (hdl->type == DLGTYPE_LIST) { |
| dlglist_reset(dlg, hdl); | dlglist_reset(dlg, hdl); |
| drawctrls(dlg, hdl); | drawctrls(dlg, hdl); |