Diff for /np2/embed/menubase/menudlg.c between versions 1.3 and 1.7

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);

Removed from v.1.3  
changed lines
  Added in v.1.7


RetroPC.NET-CVS <cvs@retropc.net>