Platon Technologies
not logged in Login Registration
EnglishSlovak
open source software development celebrating 10 years of open source development! Friday, October 16, 2026

Diff for tucniak/cuchar/cc_mouse.c between version 1.5 and 1.6

version 1.5, 2005/12/02 17:15:00 version 1.6, 2005/12/08 21:13:04
Line 6 
Line 6 
 // modified by Juraj Kolesar <koli@koli.sk>  // modified by Juraj Kolesar <koli@koli.sk>
   
 #include "cc.h"  #include "cc.h"
 #define stat p->stat  
   
 long mousex;  long _cc_mousex;
 long mousey;  long _cc_mousey;
 bool aftermouseval;  bool _cc_aftermouseval;
 char mouseactive=MOUSE_NONE;  char _cc_mouseactive=MOUSE_NONE;
 char redrawmouse=2;  char _cc_redrawmouse=2;
 TIMER *mouserepeattimer=NULL,*doubletimer1=NULL,*doubletimer2=NULL;  Cc_Timer *_cc_mouserepeattimer=NULL,*_cc_doubletimer1=NULL,
 bool doubleclickstate1=false,doubleclickstate2;           *_cc_doubletimer2=NULL;
 Gpm_Event gpmev;  bool _cc_doubleclickstate1=false,_cc_doubleclickstate2;
 bool eventq=false;  Gpm_Event _cc_gpmev;
 pthread_t gpmthreadp;  bool _cc_eventq=false;
 WIN *lastfocused=NULL;  bool _cc_waitevent=false;
   bool _cc_waitkeyevent=false;
   pthread_t _cc_gpmthreadp;
   Cc_Win *_cc_lastfocused=NULL;
   
 void setcomboactiveitem(COMBO *combo,long old,long new)  void _cc_setcomboactiveitem(COMBO *combo,long old,long new)
 {  {
   if(new==old)return;    if(new==old)return;
   if(new==-1)combo->activeitem=NULL;    if(new==-1)combo->activeitem=NULL;
Line 45  void setcomboactiveitem(COMBO *combo,lon
Line 47  void setcomboactiveitem(COMBO *combo,lon
   }    }
 }  }
   
 void setlistactiveitem(LIST *list,long old,long new)  void _cc_setlistactiveitem(LIST *list,long old,long new)
 {  {
   if(new==old)return;    if(new==old)return;
   if(new==-1)list->activeitem=NULL;    if(new==-1)list->activeitem=NULL;
Line 70  void setlistactiveitem(LIST *list,long o
Line 72  void setlistactiveitem(LIST *list,long o
   }    }
 }  }
   
 void setlistscrollupitem(LIST *list,long old,long new)  void _cc_setlistscrollupitem(LIST *list,long old,long new)
 {  {
   if(new==old)return;    if(new==old)return;
   if(new==-1)list->scrollupitem=NULL;    if(new==-1)list->scrollupitem=NULL;
Line 95  void setlistscrollupitem(LIST *list,long
Line 97  void setlistscrollupitem(LIST *list,long
   }    }
 }  }
   
 void buttondoubletimer(TIMER *sender)  void _cc_buttondoubletimer(Cc_Timer *sender)
 {  {
   redrawclientwin(sender->win);    _cc_redrawclientwin(sender->win);
   redrawclientwin(sender->win);    _cc_redrawclientwin(sender->win);
   del_timer(sender);    cc_del_timer(sender);
 }  }
   
 bool inrect(long x1,long y1,long x2,long y2,long x,long y)  bool _cc_inrect(long x1,long y1,long x2,long y2,long x,long y)
 {  {
   return (x>=x1)&&(x<x1+x2)&&(y>=y1)&&(y<y1+y2);    return (x>=x1)&&(x<x1+x2)&&(y>=y1)&&(y<y1+y2);
 }  }
   
 bool sendmousemessage(long vx,long vy,unsigned short state)  bool _cc_sendmousemessage(long vx,long vy,unsigned short state)
 {  {
   if((hlwin==NULL)||(!mouseactive))return false;    if((_cc_hlwin==NULL)||(!_cc_mouseactive))return false;
   WIN *p=capturewin;    Cc_Win *p=_cc_capturewin;
   if(p==NULL)p=findwin(vx,vy);    if(p==NULL)p=_cc_findwin(vx,vy);
   return runacel(p,vx,vy,state);    return _cc_runacel(p,vx,vy,state);
 }  }
   
 void doubleclickproc(TIMER *sender)  void _cc_doubleclickproc(Cc_Timer *sender)
 {  {
   if(sender==doubletimer1)    if(sender==_cc_doubletimer1)
   {    {
     doubleclickstate1=false;      _cc_doubleclickstate1=false;
     del_timer(sender);      cc_del_timer(sender);
     doubletimer1=NULL;      _cc_doubletimer1=NULL;
   }    }
   else if(sender==doubletimer2)    else if(sender==_cc_doubletimer2)
   {    {
     doubleclickstate2=false;      _cc_doubleclickstate2=false;
     del_timer(sender);      cc_del_timer(sender);
     doubletimer2=NULL;      _cc_doubletimer2=NULL;
   }    }
 }  }
   
 void mouserepeatproc(TIMER *sender)  void _cc_mouserepeatproc(Cc_Timer *sender)
 {  {
   sendmousemessage(gpmev.x,gpmev.y,CC_M_LBUTTONDOWN);    _cc_sendmousemessage(_cc_gpmev.x,_cc_gpmev.y,CC_MOUSE_L_DOWN);
   if(!aftermouseval)    if(!_cc_aftermouseval)
   {    {
     del_timer(sender);      cc_del_timer(sender);
     mouserepeattimer=NULL;      _cc_mouserepeattimer=NULL;
   }    }
 }  }
   
 void mousewaitproc(TIMER *sender)  void _cc_mousewaitproc(Cc_Timer *sender)
 {  {
   del_timer(sender);    cc_del_timer(sender);
   mouserepeattimer=set_timer(NULL,REPEATTICK,0,mouserepeatproc);    _cc_mouserepeattimer=cc_set_timer(NULL,REPEATTICK,0,_cc_mouserepeatproc);
 }  }
   
 void *gpmthread(void *par)  void *_cc_gpmthread(void *par)
 {  {
   while(apprun)    while(_cc_apprun)
   {    {
     Gpm_DrawPointer(gpmev.x,gpmev.y,gpm_consolefd);      Gpm_DrawPointer(_cc_gpmev.x,_cc_gpmev.y,gpm_consolefd);
     if(Gpm_GetEvent(&gpmev)!=-1)      if(Gpm_GetEvent(&_cc_gpmev))
     {      {
       eventq=true;        _cc_eventq=true;
       if(gpmev.x>screenx-1)gpmev.x=screenx-1;        if(_cc_gpmev.x>_cc_screenx-1)_cc_gpmev.x=_cc_screenx-1;
       if(gpmev.y>screeny-1)gpmev.y=screeny-1;        if(_cc_gpmev.y>_cc_screeny-1)_cc_gpmev.y=_cc_screeny-1;
       if(gpmev.x<0)gpmev.x=0;        if(_cc_gpmev.x<0)_cc_gpmev.x=0;
       if(gpmev.y<0)gpmev.y=0;        if(_cc_gpmev.y<0)_cc_gpmev.y=0;
     }      }
     if(((gpmev.type&GPM_MOVE)==0)&&((gpmev.type&GPM_DRAG)==0))while(eventq&&apprun);      if(((_cc_gpmev.type&GPM_MOVE)==0)&&((_cc_gpmev.type&GPM_DRAG)==0))
         while(_cc_eventq&&_cc_apprun);
   }    }
     return NULL;
 }  }
   
 bool gpmgetevent(Gpm_Event *event)  bool _cc_gpmgetevent(Gpm_Event *event)
 {  {
   if(eventq)    if(_cc_eventq)
   {    {
     memcpy(event,&gpmev,sizeof(gpmev));      memcpy(event,&_cc_gpmev,sizeof(_cc_gpmev));
     eventq=false;      _cc_eventq=false;
     return true;      return true;
   }    }
   else return false;    else return false;
 }  }
   
 void domouseevent(MEVENT *event)  void _cc_domouseevent(MEVENT *event)
 {  {
   unsigned short mod=0;    unsigned short mod=0;
   bool double1=true,double2=true;    bool double1=true,double2=true;
   if((event->bstate&BUTTON_SHIFT)==BUTTON_SHIFT)mod|=CC_D_SHIFT;    if((event->bstate&BUTTON_SHIFT)==BUTTON_SHIFT)mod|=CC_MOD_SHIFT;
   if((event->bstate&BUTTON_ALT)==BUTTON_ALT)mod|=CC_D_ALT;    if((event->bstate&BUTTON_ALT)==BUTTON_ALT)mod|=CC_MOD_ALT;
   if((event->bstate&BUTTON_CTRL)==BUTTON_CTRL)mod|=CC_D_CTRL;    if((event->bstate&BUTTON_CTRL)==BUTTON_CTRL)mod|=CC_MOD_CTRL;
   if((event->bstate&BUTTON1_PRESSED)==BUTTON1_PRESSED)    if((event->bstate&BUTTON1_PRESSED)==BUTTON1_PRESSED)
   {    {
     sendmousemessage(event->x,event->y,CC_M_LBUTTONDOWN|mod);      _cc_sendmousemessage(event->x,event->y,CC_MOUSE_L_DOWN|mod);
     if(aftermouseval)      if(_cc_aftermouseval)
     {      {
       mouserepeattimer=set_timer(NULL,WAITTICK,0,mousewaitproc);        _cc_mouserepeattimer=cc_set_timer(NULL,WAITTICK,0,_cc_mousewaitproc);
     }      }
     else      else
     {      {
       del_timer(mouserepeattimer);        cc_del_timer(_cc_mouserepeattimer);
       mouserepeattimer=NULL;        _cc_mouserepeattimer=NULL;
     }      }
     if(doubleclickstate1)      if(_cc_doubleclickstate1)
     {      {
       sendmousemessage(event->x,event->y,CC_M_LBUTTONDBLCLK|mod);        _cc_sendmousemessage(event->x,event->y,CC_MOUSE_L_DBLCLK|mod);
     }      }
     del_timer(doubletimer1);      cc_del_timer(_cc_doubletimer1);
     doubletimer1=!doubleclickstate1?set_timer(NULL,DOUBLECLICK,0,doubleclickproc):NULL;      _cc_doubletimer1=!_cc_doubleclickstate1?
     doubleclickstate1=!doubleclickstate1;                   cc_set_timer(NULL,DOUBLECLICK,0,_cc_doubleclickproc):NULL;
       _cc_doubleclickstate1=!_cc_doubleclickstate1;
     double1=false;      double1=false;
   }    }
   if((event->bstate&BUTTON1_RELEASED)==BUTTON1_RELEASED)    if((event->bstate&BUTTON1_RELEASED)==BUTTON1_RELEASED)
   {    {
     del_timer(mouserepeattimer);      cc_del_timer(_cc_mouserepeattimer);
     mouserepeattimer=NULL;      _cc_mouserepeattimer=NULL;
     sendmousemessage(event->x,event->y,CC_M_LBUTTONUP|mod);      _cc_sendmousemessage(event->x,event->y,CC_MOUSE_L_UP|mod);
     double1=false;      double1=false;
   }    }
   if((event->bstate&BUTTON3_PRESSED)==BUTTON3_PRESSED)    if((event->bstate&BUTTON3_PRESSED)==BUTTON3_PRESSED)
   {    {
     sendmousemessage(event->x,event->y,CC_M_RBUTTONDOWN|mod);      _cc_sendmousemessage(event->x,event->y,CC_MOUSE_R_DOWN|mod);
     if(doubleclickstate2)      if(_cc_doubleclickstate2)
     {      {
       sendmousemessage(event->x,event->y,CC_M_RBUTTONDBLCLK|mod);        _cc_sendmousemessage(event->x,event->y,CC_MOUSE_R_DBLCLK|mod);
     }      }
     del_timer(doubletimer2);      cc_del_timer(_cc_doubletimer2);
     doubletimer2=!doubleclickstate2?set_timer(NULL,DOUBLECLICK,0,doubleclickproc):NULL;      _cc_doubletimer2=!_cc_doubleclickstate2?
     doubleclickstate2=!doubleclickstate2;                   cc_set_timer(NULL,DOUBLECLICK,0,_cc_doubleclickproc):NULL;
       _cc_doubleclickstate2=!_cc_doubleclickstate2;
     double2=false;      double2=false;
   }    }
   if((event->bstate&BUTTON3_RELEASED)==BUTTON3_RELEASED|mod)    if((event->bstate&BUTTON3_RELEASED)==BUTTON3_RELEASED|mod)
   {    {
     sendmousemessage(event->x,event->y,CC_M_RBUTTONUP|mod);      _cc_sendmousemessage(event->x,event->y,CC_MOUSE_R_UP|mod);
     double2=false;      double2=false;
   }    }
   if(double1)    if(double1)
   {    {
     del_timer(doubletimer1);      cc_del_timer(_cc_doubletimer1);
     doubleclickstate1=false;      _cc_doubleclickstate1=false;
     doubletimer1=NULL;      _cc_doubletimer1=NULL;
   }    }
   if(double2)    if(double2)
   {    {
     del_timer(doubletimer2);      cc_del_timer(_cc_doubletimer2);
     doubleclickstate2=false;      _cc_doubleclickstate2=false;
     doubletimer2=NULL;      _cc_doubletimer2=NULL;
   }    }
   mousex=event->x;    _cc_mousex=event->x;
   mousey=event->y;    _cc_mousey=event->y;
   if(mouseactive!=MOUSE_GPM)    if(_cc_mouseactive!=MOUSE_GPM)
   {    {
     gpmev.x=mousex;      _cc_gpmev.x=_cc_mousex;
     gpmev.y=mousey;      _cc_gpmev.y=_cc_mousey;
   }    }
   sendmousemessage(mousex,mousey,CC_M_MOUSEMOVE|mod);    _cc_sendmousemessage(_cc_mousex,_cc_mousey,CC_MOUSE_MOVE|mod);
 }  }
   
 bool dosendmousemessage(WIN *p,long vx,long vy,unsigned short state)  bool _cc_dosendmousemessage(Cc_Win *p,long vx,long vy,unsigned short state)
 {  {
   if(p==NULL)return false;    if(p==NULL)return false;
   bool result=true;    bool result=true;
   WIN *found=findwin(vx,vy);    Cc_Win *found=_cc_findwin(vx,vy);
   EDIT *edit;    EDIT *edit;
   BUTTON *button;    BUTTON *button;
   SCROLL *scroll,*vscroll,*hscroll;    SCROLL *scroll,*vscroll,*hscroll;
Line 271  bool dosendmousemessage(WIN *p,long vx,l
Line 277  bool dosendmousemessage(WIN *p,long vx,l
   static bool freesendnext=true;    static bool freesendnext=true;
   bool sendnext=false;    bool sendnext=false;
   bool setfocus=true;    bool setfocus=true;
   aftermouseval=false;    _cc_aftermouseval=false;
   screen_to_client(p,&x,&y);    cc_screen_to_client(p,&x,&y);
   state&=CC_MASK_KEY;    state&=CC_MASK_KEY;
   if((focuswin==NULL)||(focuswin->extra->type!=CC_TP_MENU))lastfocused=focuswin;    if((_cc_focuswin==NULL)||(_cc_focuswin->extra->type!=CC_TP_MENU))
   if((state==CC_M_LBUTTONDOWN)&&p->hasmodal){set_focus(findchild(p));return true;}      _cc_lastfocused=_cc_focuswin;
     if((state==CC_MOUSE_L_DOWN)&&p->hasmodal)
     {
       cc_set_focus(_cc_findchild(p));
       return true;
     }
   switch(p->extra->type)    switch(p->extra->type)
   {    {
     case CC_TP_EDIT:      case CC_TP_EDIT:
     edit=&p->extra->edit;      edit=&p->extra->edit;
     switch(state)      switch(state)
     {      {
       case CC_M_MOUSEMOVE:        case CC_MOUSE_MOVE:
       if(capturewin!=p)break;        if(_cc_capturewin!=p)break;
       if(cecnt>0)        if((cecnt>0)&&(strlen(edit->text)>0))
       {        {
         if(cecnt==2)edit->maskpos=mx;          if(cecnt==2)edit->maskpos=mx;
         cecnt++;          cecnt++;
       }        }
       chang=true;        chang=true;
       case CC_M_LBUTTONDOWN:        case CC_MOUSE_L_DOWN:
       if(capturewin!=p)        if(_cc_capturewin!=p)
       {        {
         edit->maskpos=-1;          edit->maskpos=-1;
         mx=x+edit->scroll;          mx=x+edit->scroll;
         cecnt=1;          cecnt=1;
       }        }
       capturewin=p;        _cc_capturewin=p;
       usekeys=false;        _cc_usekeys=false;
       if(cecnt>=0)        if(cecnt>=0)
       {        {
         edit->curpos=x+edit->scroll;          edit->curpos=x+edit->scroll;
Line 313  bool dosendmousemessage(WIN *p,long vx,l
Line 324  bool dosendmousemessage(WIN *p,long vx,l
         if(edit->curpos-edit->scroll>p->vx-1)edit->scroll=edit->curpos-p->vx+1;          if(edit->curpos-edit->scroll>p->vx-1)edit->scroll=edit->curpos-p->vx+1;
       }        }
       break;        break;
       case CC_M_LBUTTONUP:        case CC_MOUSE_L_UP:
       cecnt=0;        cecnt=0;
       usekeys=true;        _cc_usekeys=true;
       capturewin=NULL;        _cc_capturewin=NULL;
       break;        break;
       case CC_M_LBUTTONDBLCLK:        case CC_MOUSE_L_DBLCLK:
       len=strlen(edit->text);        len=strlen(edit->text);
       actpoz=x+edit->scroll;        actpoz=x+edit->scroll;
       if(actpoz<0)actpoz=0;        if(actpoz<0)actpoz=0;
Line 338  bool dosendmousemessage(WIN *p,long vx,l
Line 349  bool dosendmousemessage(WIN *p,long vx,l
         cecnt=-1;          cecnt=-1;
       }        }
       break;        break;
       case CC_M_RBUTTONDOWN:        case CC_MOUSE_R_DOWN:
         set_parent(clipboardmenu,p);          cc_set_parent(_cc_clipboardmenu,p);
         track_popup_menu(clipboardmenu,vx,vy);          cc_track_popup_menu(_cc_clipboardmenu,vx,vy);
       break;        break;
     }      }
     break;      break;
Line 348  bool dosendmousemessage(WIN *p,long vx,l
Line 359  bool dosendmousemessage(WIN *p,long vx,l
     button=&p->extra->button;      button=&p->extra->button;
     switch(state)      switch(state)
     {      {
       case CC_M_MOUSEMOVE:        case CC_MOUSE_MOVE:
       if(stat==1)        if(p->stat==1)
       {        {
         if(found==p)button->status=TS_HIGH;          if(found==p)button->status=TS_HIGH;
         else {button->status=TS_UP;capturewin=NULL;stat=0;sendnext=true;}          else {button->status=TS_UP;_cc_capturewin=NULL;p->stat=0;sendnext=true;}
       }        }
       else if(stat==2)        else if(p->stat==2)
       {        {
         if(found==p)button->status=TS_DOWN;          if(found==p)button->status=TS_DOWN;
         else button->status=TS_UP;          else button->status=TS_UP;
Line 362  bool dosendmousemessage(WIN *p,long vx,l
Line 373  bool dosendmousemessage(WIN *p,long vx,l
       else        else
       {        {
         button->status=TS_HIGH;          button->status=TS_HIGH;
         capturewin=p;          _cc_capturewin=p;
         stat=1;          p->stat=1;
       }        }
       chang=true;        chang=true;
       break;        break;
       case CC_M_LBUTTONDOWN:        case CC_MOUSE_L_DOWN:
       if(found==p)        if(found==p)
       {        {
         capturewin=p;          _cc_capturewin=p;
         usekeys=false;          _cc_usekeys=false;
         button->status=TS_DOWN;          button->status=TS_DOWN;
         stat=2;          p->stat=2;
       }        }
       else        else
       {        {
         setfocus=false;          setfocus=false;
         sendmousemessage(vx,vy,CC_M_MOUSEMOVE);          _cc_sendmousemessage(vx,vy,CC_MOUSE_MOVE);
         sendmousemessage(vx,vy,CC_M_LBUTTONDOWN);          _cc_sendmousemessage(vx,vy,CC_MOUSE_L_DOWN);
       }        }
       if(!button->hasfocus)chang=true;        if(!button->hasfocus)chang=true;
       break;        break;
       case CC_M_LBUTTONUP:        case CC_MOUSE_L_UP:
       usekeys=true;        _cc_usekeys=true;
       capturewin=NULL;        _cc_capturewin=NULL;
       if(found==p)        if(found==p)
       {        {
         capturewin=p;          _cc_capturewin=p;
         if(stat==2)          if(p->stat==2)
         {          {
           button->status=TS_EXPUSH;            button->status=TS_EXPUSH;
           stat=1;            p->stat=1;
           if(button->push!=NULL)button->push(p);            if(button->push!=NULL)button->push(p);
         }          }
         else          else
         {          {
           button->status=TS_HIGH;            button->status=TS_HIGH;
           stat=1;            p->stat=1;
         }          }
       }        }
       else        else
       {        {
         stat=0;          p->stat=0;
         button->status=TS_UP;          button->status=TS_UP;
       }        }
       chang=true;        chang=true;
Line 413  bool dosendmousemessage(WIN *p,long vx,l
Line 424  bool dosendmousemessage(WIN *p,long vx,l
     scroll=&p->extra->scroll;      scroll=&p->extra->scroll;
     switch(state)      switch(state)
     {      {
       case CC_M_MOUSEMOVE:        case CC_MOUSE_MOVE:
       if(scroll->vert)        if(scroll->vert)
       {        {
         len=(p->vy-2-1)*(scroll->pos-scroll->minpos)/(scroll->maxpos-scroll->minpos);          len=(p->vy-2-1)*(scroll->pos-scroll->minpos)/
         if(stat==1)scroll->sup=inrect(0,0,p->vx,1,x,y)?SC_DOWN:SC_UP;              (scroll->maxpos-scroll->minpos);
         else if(stat==2)scroll->spageup=inrect(0,1,p->vx,len,x,y)?SC_DOWN:SC_UP;          if(p->stat==1)scroll->sup=_cc_inrect(0,0,p->vx,1,x,y)?SC_DOWN:SC_UP;
         else if(stat==3)          else if(p->stat==2)
             scroll->spageup=_cc_inrect(0,1,p->vx,len,x,y)?SC_DOWN:SC_UP;
           else if(p->stat==3)
         {          {
           scroll->smooth=true;            scroll->smooth=true;
           old=scroll->pos;            old=scroll->pos;
           height=(y+stlen-1)*(scroll->maxpos-scroll->minpos);            height=(y+stlen-1)*(scroll->maxpos-scroll->minpos);
           scroll->pos=scroll->minpos+height/(p->vy-2-1)+((height%(p->vy-2-1)==0)?0:1);            scroll->pos=scroll->minpos+height/(p->vy-2-1)+
                         ((height%(p->vy-2-1)==0)?0:1);
           scroll->smoothpos=y+stlen-1;            scroll->smoothpos=y+stlen-1;
           if(scroll->smoothpos<0)scroll->smoothpos=0;            if(scroll->smoothpos<0)scroll->smoothpos=0;
           if(scroll->smoothpos>p->vy-2-1)scroll->smoothpos=p->vy-2-1;            if(scroll->smoothpos>p->vy-2-1)scroll->smoothpos=p->vy-2-1;
Line 432  bool dosendmousemessage(WIN *p,long vx,l
Line 446  bool dosendmousemessage(WIN *p,long vx,l
           if(scroll->pos>scroll->maxpos)scroll->pos=scroll->maxpos;            if(scroll->pos>scroll->maxpos)scroll->pos=scroll->maxpos;
           if((old!=scroll->pos)&&(scroll->change!=NULL))scroll->change(p);            if((old!=scroll->pos)&&(scroll->change!=NULL))scroll->change(p);
         }          }
         else if(stat==4)scroll->spagedown=inrect(0,1+len+1,p->vx,p->vy-2-1-len,x,y)?SC_DOWN:SC_UP;          else if(p->stat==4)
         else if(stat==5)scroll->sdown=inrect(0,p->vy-1,p->vx,1,x,y)?SC_DOWN:SC_UP;            scroll->spagedown=_cc_inrect(0,1+len+1,p->vx,p->vy-2-1-len,x,y)?
                               SC_DOWN:SC_UP;
           else if(p->stat==5)
             scroll->sdown=_cc_inrect(0,p->vy-1,p->vx,1,x,y)?SC_DOWN:SC_UP;
       }        }
       else        else
       {        {
         len=(p->vx-2-1)*(scroll->pos-scroll->minpos)/(scroll->maxpos-scroll->minpos);          len=(p->vx-2-1)*(scroll->pos-scroll->minpos)/
         if(stat==1)scroll->sup=inrect(0,0,1,p->vy,x,y)?SC_DOWN:SC_UP;              (scroll->maxpos-scroll->minpos);
         else if(stat==2)scroll->spageup=inrect(1,0,len,p->vy,x,y)?SC_DOWN:SC_UP;          if(p->stat==1)scroll->sup=_cc_inrect(0,0,1,p->vy,x,y)?SC_DOWN:SC_UP;
         else if(stat==3)          else if(p->stat==2)
             scroll->spageup=_cc_inrect(1,0,len,p->vy,x,y)?SC_DOWN:SC_UP;
           else if(p->stat==3)
         {          {
           scroll->smooth=true;            scroll->smooth=true;
           old=scroll->pos;            old=scroll->pos;
           height=(x+stlen-1)*(scroll->maxpos-scroll->minpos);            height=(x+stlen-1)*(scroll->maxpos-scroll->minpos);
           scroll->pos=scroll->minpos+height/(p->vx-2-1)+((height%(p->vx-2-1)==0)?0:1);            scroll->pos=scroll->minpos+height/(p->vx-2-1)+
                         ((height%(p->vx-2-1)==0)?0:1);
           scroll->smoothpos=x+stlen-1;            scroll->smoothpos=x+stlen-1;
           if(scroll->smoothpos<0)scroll->smoothpos=0;            if(scroll->smoothpos<0)scroll->smoothpos=0;
           if(scroll->smoothpos>p->vx-2-1)scroll->smoothpos=p->vx-2-1;            if(scroll->smoothpos>p->vx-2-1)scroll->smoothpos=p->vx-2-1;
Line 453  bool dosendmousemessage(WIN *p,long vx,l
Line 473  bool dosendmousemessage(WIN *p,long vx,l
           if(scroll->pos>scroll->maxpos)scroll->pos=scroll->maxpos;            if(scroll->pos>scroll->maxpos)scroll->pos=scroll->maxpos;
           if((old!=scroll->pos)&&(scroll->change!=NULL))scroll->change(p);            if((old!=scroll->pos)&&(scroll->change!=NULL))scroll->change(p);
         }          }
         else if(stat==4)scroll->spagedown=inrect(1+len+1,0,p->vx-2-1-len,p->vy,x,y)?SC_DOWN:SC_UP;          else if(p->stat==4)
         else if(stat==5)scroll->sdown=inrect(p->vx-1,0,1,p->vy,x,y)?SC_DOWN:SC_UP;            scroll->spagedown=_cc_inrect(1+len+1,0,p->vx-2-1-len,p->vy,x,y)?
                               SC_DOWN:SC_UP;
           else if(p->stat==5)
             scroll->sdown=_cc_inrect(p->vx-1,0,1,p->vy,x,y)?SC_DOWN:SC_UP;
       }        }
       chang=true;        chang=true;
       break;        break;
       case CC_M_LBUTTONDOWN:        case CC_MOUSE_L_DOWN:
       capturewin=p;        _cc_capturewin=p;
       usekeys=false;        _cc_usekeys=false;
       scroll->sup=SC_UP;        scroll->sup=SC_UP;
       scroll->spageup=SC_UP;        scroll->spageup=SC_UP;
       scroll->sdown=SC_UP;        scroll->sdown=SC_UP;
       scroll->spagedown=SC_UP;        scroll->spagedown=SC_UP;
       if(scroll->vert)        if(scroll->vert)
       {        {
         len=(p->vy-2-1)*(scroll->pos-scroll->minpos)/(scroll->maxpos-scroll->minpos);          len=(p->vy-2-1)*(scroll->pos-scroll->minpos)/
         if(inrect(0,0,p->vx,1,x,y)&&((stat==0)||(stat==1))&&(p->vy>1)){stat=1;scroll->sup=SC_DOWN;}              (scroll->maxpos-scroll->minpos);
         else if(inrect(0,1,p->vx,len,x,y)&&((stat==0)||(stat==2))){stat=2;scroll->spageup=SC_DOWN;}          if(_cc_inrect(0,0,p->vx,1,x,y)&&((p->stat==0)||(p->stat==1))&&(p->vy>1))
         else if(inrect(0,1+len,p->vx,1,x,y)&&((stat==0)||(stat==3))&&(p->vy>3)){stat=3;stlen=1+len-y;}            {p->stat=1;scroll->sup=SC_DOWN;}
         else if(inrect(0,1+len+1,p->vx,p->vy-2-1-len,x,y)&&((stat==0)||(stat==4)))          else if(_cc_inrect(0,1,p->vx,len,x,y)&&((p->stat==0)||(p->stat==2)))
              {stat=4;scroll->spagedown=SC_DOWN;}            {p->stat=2;scroll->spageup=SC_DOWN;}
         else if(inrect(0,p->vy-1,p->vx,1,x,y)&&((stat==0)||(stat==5))){stat=5;scroll->sdown=SC_DOWN;}          else if(_cc_inrect(0,1+len,p->vx,1,x,y)&&
                   ((p->stat==0)||(p->stat==3))&&(p->vy>3))
             {p->stat=3;stlen=1+len-y;}
           else if(_cc_inrect(0,1+len+1,p->vx,p->vy-2-1-len,x,y)&&
                          ((p->stat==0)||(p->stat==4)))
             {p->stat=4;scroll->spagedown=SC_DOWN;}
           else if(_cc_inrect(0,p->vy-1,p->vx,1,x,y)&&((p->stat==0)||(p->stat==5)))
             {p->stat=5;scroll->sdown=SC_DOWN;}
       }        }
       else        else
       {        {
         len=(p->vx-2-1)*(scroll->pos-scroll->minpos)/(scroll->maxpos-scroll->minpos);          len=(p->vx-2-1)*(scroll->pos-scroll->minpos)/
               (scroll->maxpos-scroll->minpos);
         if((y>=0)&&(y<p->vy))          if((y>=0)&&(y<p->vy))
         {          {
           if(inrect(0,0,1,p->vy,x,y)&&((stat==0)||(stat==1))&&(p->vx>1)){stat=1;scroll->sup=SC_DOWN;}            if(_cc_inrect(0,0,1,p->vy,x,y)&&((p->stat==0)||(p->stat==1))&&
           else if(inrect(1,0,len,p->vy,x,y)&&((stat==0)||(stat==2))){stat=2;scroll->spageup=SC_DOWN;}              (p->vx>1)){p->stat=1;scroll->sup=SC_DOWN;}
           else if(inrect(1+len,0,1,p->vy,x,y)&&((stat==0)||(stat==3))&&(p->vx>3)){stat=3;stlen=1+len-x;}            else if(_cc_inrect(1,0,len,p->vy,x,y)&&((p->stat==0)||(p->stat==2)))
           else if(inrect(1+len+1,0,p->vx-2-1-len,p->vy,x,y)&&((stat==0)||(stat==4)))              {p->stat=2;scroll->spageup=SC_DOWN;}
                {stat=4;scroll->spagedown=SC_DOWN;}            else if(_cc_inrect(1+len,0,1,p->vy,x,y)&&((p->stat==0)||
           else if(inrect(p->vx-1,0,1,p->vy,x,y)&&((stat==0)||(stat==5))){stat=5;scroll->sdown=SC_DOWN;}                    (p->stat==3))&&(p->vx>3)){p->stat=3;stlen=1+len-x;}
             else if(_cc_inrect(1+len+1,0,p->vx-2-1-len,p->vy,x,y)&&
                     ((p->stat==0)||(p->stat==4)))
               {p->stat=4;scroll->spagedown=SC_DOWN;}
             else if(_cc_inrect(p->vx-1,0,1,p->vy,x,y)&&((p->stat==0)||
                     (p->stat==5))){p->stat=5;scroll->sdown=SC_DOWN;}
         }          }
       }        }
       old=scroll->pos;        old=scroll->pos;
Line 496  bool dosendmousemessage(WIN *p,long vx,l
Line 532  bool dosendmousemessage(WIN *p,long vx,l
       if(scroll->pos<scroll->minpos)scroll->pos=scroll->minpos;        if(scroll->pos<scroll->minpos)scroll->pos=scroll->minpos;
       if(scroll->pos>scroll->maxpos)scroll->pos=scroll->maxpos;        if(scroll->pos>scroll->maxpos)scroll->pos=scroll->maxpos;
       if((old!=scroll->pos)&&(scroll->change!=NULL))scroll->change(p);        if((old!=scroll->pos)&&(scroll->change!=NULL))scroll->change(p);
       if(stat!=3)aftermouseval=true;        if(p->stat!=3)_cc_aftermouseval=true;
       chang=true;        chang=true;
       break;        break;
       case CC_M_LBUTTONUP:        case CC_MOUSE_L_UP:
         _cc_dosendmousemessage(p,vx,vy,CC_MOUSE_MOVE);
       if(scroll->vert)        if(scroll->vert)
       {        {
         len=(p->vy-2-1)*(scroll->pos-scroll->minpos)/(scroll->maxpos-scroll->minpos);          len=(p->vy-2-1)*(scroll->pos-scroll->minpos)/
         if(stat==1)scroll->sup=inrect(0,0,p->vx,1,x,y)?SC_PUSH:SC_UP;              (scroll->maxpos-scroll->minpos);
         else if(stat==2)scroll->spageup=inrect(0,1,p->vx,len,x,y)?SC_PUSH:SC_UP;          if(p->stat==1)scroll->sup=_cc_inrect(0,0,p->vx,1,x,y)?SC_PUSH:SC_UP;
         else if(stat==3)scroll->smooth=false;          else if(p->stat==2)
         else if(stat==4)scroll->spagedown=inrect(0,1+len+1,p->vx,p->vy-2-1-len,x,y)?SC_PUSH:SC_UP;            scroll->spageup=_cc_inrect(0,1,p->vx,len,x,y)?SC_PUSH:SC_UP;
         else if(stat==5)scroll->sdown=inrect(0,p->vy-1,p->vx,1,x,y)?SC_PUSH:SC_UP;          else if(p->stat==3)scroll->smooth=false;
           else if(p->stat==4)
             scroll->spagedown=_cc_inrect(0,1+len+1,p->vx,p->vy-2-1-len,x,y)?
                               SC_PUSH:SC_UP;
           else if(p->stat==5)
             scroll->sdown=_cc_inrect(0,p->vy-1,p->vx,1,x,y)?SC_PUSH:SC_UP;
       }        }
       else        else
       {        {
         len=(p->vx-2-1)*(scroll->pos-scroll->minpos)/(scroll->maxpos-scroll->minpos);          len=(p->vx-2-1)*(scroll->pos-scroll->minpos)/
         if(stat==1)scroll->sup=inrect(0,0,1,p->vy,x,y)?SC_PUSH:SC_UP;              (scroll->maxpos-scroll->minpos);
         else if(stat==2)scroll->spageup=inrect(1,0,len,p->vy,x,y)?SC_PUSH:SC_UP;          if(p->stat==1)scroll->sup=_cc_inrect(0,0,1,p->vy,x,y)?SC_PUSH:SC_UP;
         else if(stat==3)scroll->smooth=false;          else if(p->stat==2)
         else if(stat==4)scroll->spagedown=inrect(1+len+1,0,p->vx-2-1-len,p->vy,x,y)?SC_PUSH:SC_UP;            scroll->spageup=_cc_inrect(1,0,len,p->vy,x,y)?SC_PUSH:SC_UP;
         else if(stat==5)scroll->sdown=inrect(p->vx-1,0,1,p->vy,x,y)?SC_PUSH:SC_UP;          else if(p->stat==3)scroll->smooth=false;
       }          else if(p->stat==4)
       capturewin=NULL;            scroll->spagedown=_cc_inrect(1+len+1,0,p->vx-2-1-len,p->vy,x,y)?
       usekeys=true;                              SC_PUSH:SC_UP;
       stat=0;          else if(p->stat==5)
             scroll->sdown=_cc_inrect(p->vx-1,0,1,p->vy,x,y)?SC_PUSH:SC_UP;
         }
         _cc_capturewin=NULL;
         _cc_usekeys=true;
         p->stat=0;
       chang=true;        chang=true;
       set_timer(p,BUTTONCLICK,0,buttontimer);        cc_set_timer(p,BUTTONCLICK,0,_cc_buttontimer);
     }      }
     break;      break;
     case CC_TP_LIST:      case CC_TP_LIST:
Line 532  bool dosendmousemessage(WIN *p,long vx,l
Line 579  bool dosendmousemessage(WIN *p,long vx,l
     maxpoz=p->vy-2+vscroll->pos-1;      maxpoz=p->vy-2+vscroll->pos-1;
     switch(state)      switch(state)
     {      {
       case CC_M_MOUSEMOVE:        case CC_MOUSE_MOVE:
       if(capturewin==p)        if(_cc_capturewin==p)
       {        {
         actline=list->activeline;          actline=list->activeline;
         if((list->combotyp!=CC_LI_COMBO)||((list->combotyp==CC_LI_COMBO)&&(stat==1)))          if((list->combotyp!=CC_LI_COMBO)||((list->combotyp==CC_LI_COMBO)&&
           list->activeline=y-1+vscroll->pos;             (p->stat==1)))list->activeline=y-1+vscroll->pos;
         list->exvscroll=EX_NONE;          list->exvscroll=EX_NONE;
         list->exhscroll=EX_NONE;          list->exhscroll=EX_NONE;
         if((list->combotyp!=CC_LI_COMBO)||((list->combotyp==CC_LI_COMBO)&&(stat==1)))          if((list->combotyp!=CC_LI_COMBO)||((list->combotyp==CC_LI_COMBO)&&
              (p->stat==1)))
         {          {
           if(list->activeline<minpoz){list->activeline=minpoz;if(stat>=1)list->exvscroll=EX_UP;}            if(list->activeline<minpoz)
           if(list->activeline>maxpoz){list->activeline=maxpoz;if(stat>=1)list->exvscroll=EX_DOWN;}              {list->activeline=minpoz;if(p->stat>=1)list->exvscroll=EX_UP;}
           if(x<1)if(stat>=1)list->exhscroll=EX_UP;            if(list->activeline>maxpoz)
           if(x>=p->vx-2)if(stat>=1)list->exhscroll=EX_DOWN;              {list->activeline=maxpoz;if(p->stat>=1)list->exvscroll=EX_DOWN;}
             if(x<1)if(p->stat>=1)list->exhscroll=EX_UP;
             if(x>=p->vx-2)if(p->stat>=1)list->exhscroll=EX_DOWN;
         }          }
         if(list->activeline!=actline)          if(list->activeline!=actline)
         {          {
           setlistactiveitem(list,actline,list->activeline);            _cc_setlistactiveitem(list,actline,list->activeline);
           if(list->change!=NULL)list->change(p);            if(list->change!=NULL)list->change(p);
         }          }
         chang=true;          chang=true;
       }        }
       break;        break;
       case CC_M_LBUTTONDOWN:        case CC_MOUSE_L_DOWN:
       list->exvscroll=EX_NONE;        list->exvscroll=EX_NONE;
       list->exhscroll=EX_NONE;        list->exhscroll=EX_NONE;
       actline=list->activeline;        actline=list->activeline;
       if(list->combotyp!=CC_LI_COMBO)        if(list->combotyp!=CC_LI_COMBO)
       {        {
         if((found==p)&&inrect(1,1,p->vx-2,p->vy-2,x,y))          if((found==p)&&_cc_inrect(1,1,p->vx-2,p->vy-2,x,y))
         {          {
           capturewin=p;            _cc_capturewin=p;
           usekeys=false;            _cc_usekeys=false;
           stat=1;            p->stat=1;
           list->activeline=y-1+vscroll->pos;            list->activeline=y-1+vscroll->pos;
           if(list->activeline<minpoz)list->activeline=minpoz;            if(list->activeline<minpoz)list->activeline=minpoz;
           if(list->activeline>maxpoz)list->activeline=maxpoz;            if(list->activeline>maxpoz)list->activeline=maxpoz;
           setlistactiveitem(list,actline,list->activeline);            _cc_setlistactiveitem(list,actline,list->activeline);
         }          }
       }        }
       else        else
       {        {
         if((found==p)||(found==list->vscroll)||(found==list->hscroll))          if((found==p)||(found==list->vscroll)||(found==list->hscroll))
         {          {
           if(!((inrect(p->vx-list->vscroll->vx,1,list->vscroll->vx,p->vy-2,x,y)&&            if(!((_cc_inrect(p->vx-list->vscroll->vx,1,list->vscroll->vx,
                (list->vscroll->active))||                             p->vy-2,x,y)&&
                inrect(1,p->vy-list->hscroll->vy,p->vx-2,list->hscroll->vy,x,y)&&                 (list->vscroll->active))||_cc_inrect(1,p->vy-list->hscroll->vy,
                                                       p->vx-2,list->hscroll->vy,
                                                       x,y)&&
                (list->hscroll->active)))                 (list->hscroll->active)))
           {            {
             if(inrect(1,1,p->vx-2,p->vy-2,x,y))              if(_cc_inrect(1,1,p->vx-2,p->vy-2,x,y))
             {              {
               stat=1;                p->stat=1;
               usekeys=false;                _cc_usekeys=false;
               list->activeline=y-1+vscroll->pos;                list->activeline=y-1+vscroll->pos;
               if(list->activeline<minpoz)list->activeline=minpoz;                if(list->activeline<minpoz)list->activeline=minpoz;
               if(list->activeline>maxpoz)list->activeline=maxpoz;                if(list->activeline>maxpoz)list->activeline=maxpoz;
               setlistactiveitem(list,actline,list->activeline);                _cc_setlistactiveitem(list,actline,list->activeline);
             }              }
           }            }
           else            else
           {            {
             capturewin=NULL;              _cc_capturewin=NULL;
             usekeys=true;              _cc_usekeys=true;
             aftermouseval=sendmousemessage(vx,vy,state);              _cc_aftermouseval=_cc_sendmousemessage(vx,vy,state);
           }            }
         }          }
         else          else
         {          {
           capturewin=NULL;            _cc_capturewin=NULL;
           usekeys=true;            _cc_usekeys=true;
           set_focus(p->parent);            cc_set_focus(p->parent);
           show_win(p,false);            cc_show_win(p,false);
         }          }
       }        }
       break;        break;
       case CC_M_LBUTTONUP:        case CC_MOUSE_L_UP:
       actline=list->activeline;        actline=list->activeline;
       if(list->combotyp==CC_LI_COMBO)        if(list->combotyp==CC_LI_COMBO)
       {        {
         long act;          long act;
         if(stat>=1)          if(p->stat>=1)
         if((found==p)&&inrect(1,1,p->vx-2,p->vy-2,x,y))          if((found==p)&&_cc_inrect(1,1,p->vx-2,p->vy-2,x,y))
         {          {
           act=y-1+vscroll->pos;            act=y-1+vscroll->pos;
           if((act>=minpoz)&&(act<=maxpoz))list->activeline=act;            if((act>=minpoz)&&(act<=maxpoz))list->activeline=act;
           setlistactiveitem(list,actline,list->activeline);            _cc_setlistactiveitem(list,actline,list->activeline);
         }          }
         else          else
         {          {
           stat=2;            p->stat=2;
         }          }
       }        }
       if(capturewin==p)        if(_cc_capturewin==p)
       {        {
         if(stat>=1)          if(p->stat>=1)
         {          {
           stat=0;            p->stat=0;
           list->exvscroll=EX_NONE;            list->exvscroll=EX_NONE;
           list->exhscroll=EX_NONE;            list->exhscroll=EX_NONE;
           capturewin=NULL;            _cc_capturewin=NULL;
           usekeys=true;            _cc_usekeys=true;
           void (*change)()=list->change;            void (*change)()=list->change;
           if(list->combotyp==CC_LI_COMBO)            if(list->combotyp==CC_LI_COMBO)
           {            {
             set_focus(p->parent);              cc_set_focus(p->parent);
             show_win(p,false);              cc_show_win(p,false);
             if((found==p)&&inrect(1,1,p->vx-2,p->vy-2,x,y))              if((found==p)&&_cc_inrect(1,1,p->vx-2,p->vy-2,x,y))
             {              {
               if((list->combotyp==CC_LI_COMBO)&&(p->parent!=NULL)&&                if((list->combotyp==CC_LI_COMBO)&&(p->parent!=NULL)&&
                  (p->parent->extra->type==CC_TP_COMBO)&&(list->activeitem!=NULL))                   (p->parent->extra->type==CC_TP_COMBO)&&
                    (list->activeitem!=NULL))
               {                {
                 combo=&p->parent->extra->combo;                  combo=&p->parent->extra->combo;
                 char *data=list->activeitem->data;                  char *data=list->activeitem->data;
                 set_text(combo->edit,data);                  cc_set_text(combo->edit,data);
                   cc_edit_select(combo->edit,0,CC_MAXLONG);
               }                }
               if(list->dblclk!=NULL)list->dblclk(p);                if(list->dblclk!=NULL)list->dblclk(p);
             }              }
Line 655  bool dosendmousemessage(WIN *p,long vx,l
Line 709  bool dosendmousemessage(WIN *p,long vx,l
       }        }
       chang=true;        chang=true;
       break;        break;
       case CC_M_LBUTTONDBLCLK:        case CC_MOUSE_L_DBLCLK:
         if((found==p)&&inrect(1,1,p->vx-2,p->vy-2,x,y))          if((found==p)&&_cc_inrect(1,1,p->vx-2,p->vy-2,x,y))
         {          {
           if((list->combotyp==CC_LI_COMBO)&&(p->parent!=NULL)&&            if((list->combotyp==CC_LI_COMBO)&&(p->parent!=NULL)&&
              (p->parent->extra->type==CC_TP_COMBO)&&(list->activeitem!=NULL))               (p->parent->extra->type==CC_TP_COMBO)&&(list->activeitem!=NULL))
           {            {
             combo=&p->parent->extra->combo;              combo=&p->parent->extra->combo;
             char *data=list->activeitem->data;              char *data=list->activeitem->data;
             set_text(combo->edit,data);              if(combo->edit!=NULL)
               {
                 cc_set_text(combo->edit,data);
                 cc_edit_select(combo->edit,0,CC_MAXLONG);
               }
               else chang=true;
           }            }
           if(list->dblclk!=NULL)list->dblclk(p);            if(list->dblclk!=NULL)list->dblclk(p);
         }          }
Line 673  bool dosendmousemessage(WIN *p,long vx,l
Line 732  bool dosendmousemessage(WIN *p,long vx,l
     combo=&p->extra->combo;      combo=&p->extra->combo;
     switch(state)      switch(state)
     {      {
       case CC_M_MOUSEMOVE:        case CC_MOUSE_MOVE:
       if(capturewin==p)        if(_cc_capturewin==p)
       if((!(found==p))||(!inrect(0,0,p->vx,p->vy,x,y)))        if((!(found==p))||(!_cc_inrect(0,0,p->vx,p->vy,x,y)))
       {        {
         combo->pushed=SC_PUSH;          combo->pushed=SC_PUSH;
         capturewin=combo->list;          _cc_capturewin=combo->list;
         usekeys=false;          _cc_usekeys=false;
         stat=1;          combo->list->stat=1;
       }        }
       break;        break;
       case CC_M_LBUTTONDOWN:        case CC_MOUSE_L_DOWN:
       capturewin=p;        _cc_capturewin=p;
       usekeys=false;        _cc_usekeys=false;
       combo->pushed=SC_DOWN;        combo->pushed=SC_DOWN;
       list=&combo->list->extra->list;        list=&combo->list->extra->list;
       vscroll=&list->vscroll->extra->scroll;        vscroll=&list->vscroll->extra->scroll;
       long actline=list->activeline;        long actline=list->activeline;
       list->activeline=combo->activeline;        list->activeline=combo->activeline;
       if(list->activeline<vscroll->pos)vscroll->pos=list->activeline;        if(list->activeline<vscroll->pos)vscroll->pos=list->activeline;
       if(list->activeline-combo->list->vy+3>vscroll->pos)vscroll->pos=list->activeline-combo->list->vy+3;        if(list->activeline-combo->list->vy+3>vscroll->pos)
       setlistactiveitem(list,actline,list->activeline);          vscroll->pos=list->activeline-combo->list->vy+3;
       show_win(combo->list,true);        _cc_setlistactiveitem(list,actline,list->activeline);
         cc_show_win(combo->list,true);
       break;        break;
       case CC_M_LBUTTONUP:        case CC_MOUSE_L_UP:
       if(capturewin==p)        if(_cc_capturewin==p)
       {        {
         set_timer(p,BUTTONCLICK,0,buttondoubletimer);          cc_set_timer(p,BUTTONCLICK,0,_cc_buttondoubletimer);
         combo->pushed=SC_PUSH;          combo->pushed=SC_PUSH;
         capturewin=combo->list;          _cc_capturewin=combo->list;
         usekeys=true;          _cc_usekeys=true;
       }        }
     }      }
     break;      break;
Line 713  bool dosendmousemessage(WIN *p,long vx,l
Line 773  bool dosendmousemessage(WIN *p,long vx,l
     if(menu->vert)      if(menu->vert)
     {      {
       maxpoz=p->vy-2-1;        maxpoz=p->vy-2-1;
       if((found==p)&&inrect(1,1,p->vx-2,p->vy-2,x,y))actpoz=y-1;else actpoz=-1;        if((found==p)&&_cc_inrect(1,1,p->vx-2,p->vy-2,x,y))
           actpoz=y-1;else actpoz=-1;
       if(menu->lines!=NULL)if(actpoz>g_list_length(menu->lines)-1)actpoz=-1;        if(menu->lines!=NULL)if(actpoz>g_list_length(menu->lines)-1)actpoz=-1;
       if((p->parent!=NULL)&&(p->parent->extra->type==CC_TP_MENU))result=false;        if((p->parent!=NULL)&&(p->parent->extra->type==CC_TP_MENU))result=false;
     }      }
Line 723  bool dosendmousemessage(WIN *p,long vx,l
Line 784  bool dosendmousemessage(WIN *p,long vx,l
       actpoz=-1;        actpoz=-1;
       old=x+1;        old=x+1;
       lines=menu->lines;        lines=menu->lines;
       if(inrect(0,0,p->vx,p->vy,x,y))        if(_cc_inrect(0,0,p->vx,p->vy,x,y))
       {        {
         while((old>0)&&(lines!=NULL))          while((old>0)&&(lines!=NULL))
         {          {
           if(lines->data!=NULL)if(((CMENU*)lines->data)->text!=NULL)            if(lines->data!=NULL)if(((Cc_Menu_I*)lines->data)->text!=NULL)
             old-=strlenmenu(((CMENU*)lines->data)->text)+2;              old-=_cc_strlenmenu(((Cc_Menu_I*)lines->data)->text)+2;
           lines=g_list_next(lines);            lines=g_list_next(lines);
           actpoz++;            actpoz++;
         }          }
Line 739  bool dosendmousemessage(WIN *p,long vx,l
Line 800  bool dosendmousemessage(WIN *p,long vx,l
     {      {
       if(menu->lines!=NULL)lines=g_list_nth(menu->lines,actpoz);else lines=NULL;        if(menu->lines!=NULL)lines=g_list_nth(menu->lines,actpoz);else lines=NULL;
       if(lines!=NULL)        if(lines!=NULL)
         if(strcmp(((CMENU*)lines->data)->text,"-")==0)actpoz=-1;          if(strcmp(((Cc_Menu_I*)lines->data)->text,"-")==0)actpoz=-1;
     }      }
     switch(state)      switch(state)
     {      {
       case CC_M_MOUSEMOVE:        case CC_MOUSE_MOVE:
       if(((focuswin==p)&&(found==p)&&(capturewin==NULL))||(menu->vert&&(actpoz!=-1)))        if(((_cc_focuswin==p)&&(found==p)&&(_cc_capturewin==NULL))||
            (menu->vert&&(actpoz!=-1)))
       {        {
         capturewin=p;          _cc_capturewin=p;
         stat=1;          p->stat=1;
       }        }
       if(!menu->vert&&(stat!=0)&&(actpoz!=-1)&&(actpoz!=menu->activeline)&&        if(!menu->vert&&(p->stat!=0)&&(actpoz!=-1)&&(actpoz!=menu->activeline)&&
          (found==p)&&(inrect(0,0,p->vx,p->vy,x,y)))           (found==p)&&(_cc_inrect(0,0,p->vx,p->vy,x,y)))
       {        {
         stat=3;          p->stat=3;
         menu->activeline=actpoz;          menu->activeline=actpoz;
         if(menu->activeline<minpoz)menu->activeline=minpoz;          if(menu->activeline<minpoz)menu->activeline=minpoz;
         if(menu->activeline>maxpoz)menu->activeline=maxpoz;          if(menu->activeline>maxpoz)menu->activeline=maxpoz;
         WIN *submenu=((CMENU*)g_list_nth(menu->lines,actpoz)->data)->submenu;          Cc_Win *submenu=((Cc_Menu_I*)
                           g_list_nth(menu->lines,actpoz)->data)->submenu;
         if(submenu!=NULL)          if(submenu!=NULL)
         {          {
           submenu->extra->menu.activeline=-1;            submenu->extra->menu.activeline=-1;
           show_win(submenu,true);            cc_show_win(submenu,true);
           focuswin=submenu;            _cc_focuswin=submenu;
           if(menu->select!=NULL)menu->select(p,getmenucellid(menu));            if(menu->select!=NULL)menu->select(p,_cc_getmenucellid(menu));
         }          }
         else focuswin=p;          else _cc_focuswin=p;
       }        }
       WIN *nextcapturewin=NULL;        Cc_Win *next_cc_capturewin=NULL;
       if(menu->vert&&(stat!=0)&&(actpoz!=-1)&&(found==p))        if(menu->vert&&(p->stat!=0)&&(actpoz!=-1)&&(found==p))
       {        {
         menu->activeline=actpoz;          menu->activeline=actpoz;
         WIN *submenu=((CMENU*)g_list_nth(menu->lines,actpoz)->data)->submenu;          Cc_Win *submenu=((Cc_Menu_I*)
                           g_list_nth(menu->lines,actpoz)->data)->submenu;
         if(submenu!=NULL)          if(submenu!=NULL)
         {          {
           submenu->extra->menu.activeline=-1;            submenu->extra->menu.activeline=-1;
           show_win(submenu,true);            cc_show_win(submenu,true);
           focuswin=submenu;            _cc_focuswin=submenu;
           nextcapturewin=submenu;            next_cc_capturewin=submenu;
           if(menu->select!=NULL)menu->select(p,getmenucellid(menu));            if(menu->select!=NULL)menu->select(p,_cc_getmenucellid(menu));
         }          }
         else focuswin=p;          else _cc_focuswin=p;
       }        }
       if((capturewin==p)&&(!menu->vert))        if((_cc_capturewin==p)&&(!menu->vert))
       if((found!=p)||(!inrect(0,0,p->vx,p->vy,x,y)))        if((found!=p)||(!_cc_inrect(0,0,p->vx,p->vy,x,y)))
       {        {
         if((stat==3)&&(!menu->vert))          if((p->stat==3)&&(!menu->vert))
         {          {
           GList *l=g_list_nth(menu->lines,menu->activeline);            GList *l=g_list_nth(menu->lines,menu->activeline);
           if((l!=NULL)&&(((CMENU*)l->data)->submenu!=NULL))            if((l!=NULL)&&(((Cc_Menu_I*)l->data)->submenu!=NULL))
           {            {
             WIN *submenu=((CMENU*)l->data)->submenu;              Cc_Win *submenu=((Cc_Menu_I*)l->data)->submenu;
             if(submenu!=NULL)capturewin=submenu;              if(submenu!=NULL)_cc_capturewin=submenu;
             usekeys=true;              _cc_usekeys=true;
             stat=1;              p->stat=1;
           }            }
         }          }
       }        }
       if(capturewin==p)        if(_cc_capturewin==p)
       {        {
         if((!menu->vert&&(actpoz!=-1)&&inrect(0,0,p->vx,p->vy,x,y))||          if((!menu->vert&&(actpoz!=-1)&&_cc_inrect(0,0,p->vx,p->vy,x,y))||
            (menu->vert&&(stat==1)))             (menu->vert&&(p->stat==1)))
         {          {
           menu->activeline=actpoz;            menu->activeline=actpoz;
           if(actpoz==-1)stat=2;            if(actpoz==-1)p->stat=2;
           if(!menu->vert)            if(!menu->vert)
           {            {
             if(menu->activeline<minpoz)menu->activeline=minpoz;              if(menu->activeline<minpoz)menu->activeline=minpoz;
Line 811  bool dosendmousemessage(WIN *p,long vx,l
Line 875  bool dosendmousemessage(WIN *p,long vx,l
         }          }
         chang=true;          chang=true;
       }        }
       if(nextcapturewin!=NULL)capturewin=nextcapturewin;        if(next_cc_capturewin!=NULL)_cc_capturewin=next_cc_capturewin;
       break;        break;
       case CC_M_RBUTTONDOWN:        case CC_MOUSE_R_DOWN:
       case CC_M_LBUTTONDOWN:        case CC_MOUSE_L_DOWN:
       if(!menu->vert)        if(!menu->vert)
       {        {
         if((actpoz!=-1)&&(stat==0))          if((actpoz!=-1)&&(p->stat==0))
         {          {
           capturewin=p;            _cc_capturewin=p;
           usekeys=false;            _cc_usekeys=false;
         }          }
         if((stat==0)&&(found==p)&&inrect(0,0,p->vx,p->vy,x,y))          if((p->stat==0)&&(found==p)&&_cc_inrect(0,0,p->vx,p->vy,x,y))
         {          {
           if(actpoz!=-1)            if(actpoz!=-1)
           {            {
             stat=3;              p->stat=3;
             menu->activeline=actpoz;              menu->activeline=actpoz;
             if(menu->activeline<minpoz)menu->activeline=minpoz;              if(menu->activeline<minpoz)menu->activeline=minpoz;
             if(menu->activeline>maxpoz)menu->activeline=maxpoz;              if(menu->activeline>maxpoz)menu->activeline=maxpoz;
             if(menu->select!=NULL)menu->select(p,getmenucellid(menu));              if(menu->select!=NULL)menu->select(p,_cc_getmenucellid(menu));
             WIN *submenu=((CMENU*)g_list_nth(menu->lines,actpoz)->data)->submenu;              Cc_Win *submenu=((Cc_Menu_I*)
                               g_list_nth(menu->lines,actpoz)->data)->submenu;
             if(submenu!=NULL)              if(submenu!=NULL)
             {              {
               submenu->extra->menu.activeline=-1;                submenu->extra->menu.activeline=-1;
               show_win(submenu,true);                cc_show_win(submenu,true);
               focuswin=submenu;                _cc_focuswin=submenu;
             }              }
           }            }
           else setfocus=false;            else setfocus=false;
         }          }
         else if((menu->activeline==actpoz)||(actpoz==-1))          else if((menu->activeline==actpoz)||(actpoz==-1))
         {          {
           capturewin=NULL;            _cc_capturewin=NULL;
           menu->activeline=-1;            menu->activeline=-1;
           usekeys=true;            _cc_usekeys=true;
           set_focus(lastfocused);            cc_set_focus(_cc_lastfocused);
           setfocus=false;            setfocus=false;
           if(stat!=0)            if(p->stat!=0)
           {            {
             stat=0;              p->stat=0;
             if((actpoz==-1)||(!inrect(0,0,p->vx,p->vy,x,y)))              if((actpoz==-1)||(!_cc_inrect(0,0,p->vx,p->vy,x,y)))
               if(freesendnext)sendnext=true;                if(freesendnext)sendnext=true;
                 else freesendnext=true;                  else freesendnext=true;
           }            }
Line 861  bool dosendmousemessage(WIN *p,long vx,l
Line 926  bool dosendmousemessage(WIN *p,long vx,l
       {        {
         if(actpoz!=-1)          if(actpoz!=-1)
         {          {
           stat=1;            p->stat=1;
           usekeys=false;            _cc_usekeys=false;
           menu->activeline=actpoz;            menu->activeline=actpoz;
           result=true;            result=true;
           freesendnext=false;            freesendnext=false;
Line 870  bool dosendmousemessage(WIN *p,long vx,l
Line 935  bool dosendmousemessage(WIN *p,long vx,l
         else if(found==p)result=true;          else if(found==p)result=true;
         else if((p->parent==NULL)||(p->parent->extra->type!=CC_TP_MENU))          else if((p->parent==NULL)||(p->parent->extra->type!=CC_TP_MENU))
         {          {
           capturewin=NULL;            _cc_capturewin=NULL;
           menu->activeline=-1;            menu->activeline=-1;
           stat=0;            p->stat=0;
           usekeys=true;            _cc_usekeys=true;
           set_focus(p->parent);            cc_set_focus(p->parent);
           setfocus=false;            setfocus=false;
           sendnext=true;            sendnext=true;
           result=true;            result=true;
         }          }
       }        }
       break;        break;
       case CC_M_RBUTTONUP:        case CC_MOUSE_R_UP:
       case CC_M_LBUTTONUP:        case CC_MOUSE_L_UP:
       if(menu->vert)        if(menu->vert)
       {        {
         long act=-1;          long act=-1;
         if(stat>=1)          if(p->stat>=1)
         if((inrect(1,1,p->vx-2,p->vy-2,x,y))&&(actpoz!=-1))          if((_cc_inrect(1,1,p->vx-2,p->vy-2,x,y))&&(actpoz!=-1))
         {          {
           act=y-1;            act=y-1;
           maxpoz=g_list_length(menu->lines)-1;            maxpoz=g_list_length(menu->lines)-1;
Line 897  bool dosendmousemessage(WIN *p,long vx,l
Line 962  bool dosendmousemessage(WIN *p,long vx,l
         }          }
         else          else
         {          {
           stat=2;            p->stat=2;
         }          }
         if(stat>=1)          if(p->stat>=1)
         {          {
           WIN *submenu=NULL;            Cc_Win *submenu=NULL;
           if(act!=-1)submenu=((CMENU*)g_list_nth(menu->lines,act)->data)->submenu;            if(act!=-1)submenu=((Cc_Menu_I*)
                                g_list_nth(menu->lines,act)->data)->submenu;
           if(submenu!=NULL)result=true;            if(submenu!=NULL)result=true;
           usekeys=true;            _cc_usekeys=true;
           if((menu->activeline!=-1)&&(found==p)&&inrect(1,1,p->vx-2,p->vy-2,x,y))            if((menu->activeline!=-1)&&(found==p)&&
                _cc_inrect(1,1,p->vx-2,p->vy-2,x,y))
           {            {
             if((submenu==NULL)&&(actpoz!=-1))              if((submenu==NULL)&&(actpoz!=-1))
             {              {
               stat=0;                p->stat=0;
               usekeys=true;                _cc_usekeys=true;
               capturewin=NULL;                _cc_capturewin=NULL;
               show_win(p,false);                cc_show_win(p,false);
               set_focus(((p->parent!=NULL)&&(p->parent->extra->type==CC_TP_MENU))?lastfocused:p->parent);                cc_set_focus(((p->parent!=NULL)&&
                               (p->parent->extra->type==CC_TP_MENU))?
                               _cc_lastfocused:p->parent);
             }              }
             if(menu->select!=NULL)menu->select(p,getmenucellid(menu));              if(menu->select!=NULL)menu->select(p,_cc_getmenucellid(menu));
           }            }
         }          }
           if((found!=p)&&((p->parent==NULL)||(p->parent->extra->type!=CC_TP_MENU)))            if((found!=p)&&((p->parent==NULL)||
                (p->parent->extra->type!=CC_TP_MENU)))
           {            {
             capturewin=NULL;              _cc_capturewin=NULL;
             menu->activeline=-1;              menu->activeline=-1;
             stat=0;              p->stat=0;
             usekeys=true;              _cc_usekeys=true;
             set_focus(p->parent);              cc_set_focus(p->parent);
             setfocus=false;              setfocus=false;
             sendnext=true;              sendnext=true;
             result=true;              result=true;
Line 933  bool dosendmousemessage(WIN *p,long vx,l
Line 1003  bool dosendmousemessage(WIN *p,long vx,l
       }        }
       else        else
       {        {
         if(stat==3)          if(p->stat==3)
         {          {
           GList *l=g_list_nth(menu->lines,actpoz);            GList *l=g_list_nth(menu->lines,actpoz);
           if((l!=NULL)&&(((CMENU*)l->data)->submenu!=NULL))            if((l!=NULL)&&(((Cc_Menu_I*)l->data)->submenu!=NULL))
           {            {
             WIN *submenu=((CMENU*)l->data)->submenu;              Cc_Win *submenu=((Cc_Menu_I*)l->data)->submenu;
             if(submenu!=NULL)capturewin=submenu;              if(submenu!=NULL)_cc_capturewin=submenu;
             usekeys=true;              _cc_usekeys=true;
             stat=1;              p->stat=1;
           }            }
         }          }
         if(capturewin==p)          if(_cc_capturewin==p)
         {          {
           if(stat>=1)            if(p->stat>=1)
           {            {
             usekeys=true;              _cc_usekeys=true;
             void (*change)()=menu->change;              if(menu->change!=NULL)menu->change(p);
             if(change!=NULL)change(p);  
           }            }
         }          }
         if(!inrect(0,0,p->vx,p->vy,x,y))          if(!_cc_inrect(0,0,p->vx,p->vy,x,y))
         {          {
           stat=0;            p->stat=0;
           usekeys=true;            _cc_usekeys=true;
           capturewin=NULL;            _cc_capturewin=NULL;
           set_focus(lastfocused);            cc_set_focus(_cc_lastfocused);
         }          }
       }        }
       chang=true;        chang=true;
Line 970  bool dosendmousemessage(WIN *p,long vx,l
Line 1039  bool dosendmousemessage(WIN *p,long vx,l
     dialog=&p->extra->dialog;      dialog=&p->extra->dialog;
     switch(state)      switch(state)
     {      {
       case CC_M_MOUSEMOVE:        case CC_MOUSE_MOVE:
       if(capturewin!=p)break;        if(_cc_capturewin!=p)break;
       switch(stat)        switch(p->stat)
       {        {
         case 0:move_win(p,vx+mx,vy+my,CC_NOCHANGE,CC_NOCHANGE,CC_NOCHANGE);break;          case 0:cc_move_win(p,vx+mx,vy+my,CC_NOCHANGE,CC_NOCHANGE,CC_NOCHANGE);
         case 1:if(vy>ny-1-my)vy=ny-1-my;move_win(p,CC_NOCHANGE,vy+my,CC_NOCHANGE,ny-vy-my,CC_NOCHANGE);break;                 break;
         case 2:if(vy>ny-1-my)vy=ny-1-my;move_win(p,CC_NOCHANGE,vy+my,nx-2*p->x+vx+mx,ny-vy-my,CC_NOCHANGE);break;          case 1:if(vy>ny-1-my)vy=ny-1-my;cc_move_win(p,CC_NOCHANGE,vy+my,
         case 3:move_win(p,CC_NOCHANGE,CC_NOCHANGE,nx-2*p->x+vx+mx,CC_NOCHANGE,CC_NOCHANGE);break;                                                      CC_NOCHANGE,ny-vy-my,
         case 4:move_win(p,CC_NOCHANGE,CC_NOCHANGE,nx-2*p->x+vx+mx,ny-2*p->y+vy+my,CC_NOCHANGE);break;                                                      CC_NOCHANGE);break;
         case 5:move_win(p,CC_NOCHANGE,CC_NOCHANGE,CC_NOCHANGE,ny-2*p->y+vy+my,CC_NOCHANGE);break;          case 2:if(vy>ny-1-my)vy=ny-1-my;cc_move_win(p,CC_NOCHANGE,vy+my,
         case 6:if(vx>nx-10-mx)vx=nx-10-mx;move_win(p,vx+mx,CC_NOCHANGE,nx-vx-mx,ny-2*p->y+vy+my,CC_NOCHANGE);break;                                                      nx-2*p->x+vx+mx,ny-vy-my,
         case 7:if(vx>nx-10-mx)vx=nx-10-mx;move_win(p,vx+mx,CC_NOCHANGE,nx-vx-mx,CC_NOCHANGE,CC_NOCHANGE);break;                                                      CC_NOCHANGE);break;
           case 3:cc_move_win(p,CC_NOCHANGE,CC_NOCHANGE,nx-2*p->x+vx+mx,
                              CC_NOCHANGE,CC_NOCHANGE);break;
           case 4:cc_move_win(p,CC_NOCHANGE,CC_NOCHANGE,
                              nx-2*p->x+vx+mx,ny-2*p->y+vy+my,CC_NOCHANGE);break;
           case 5:cc_move_win(p,CC_NOCHANGE,CC_NOCHANGE,CC_NOCHANGE,
                              ny-2*p->y+vy+my,CC_NOCHANGE);break;
           case 6:if(vx>nx-10-mx)vx=nx-10-mx;cc_move_win(p,vx+mx,CC_NOCHANGE,
                                                         nx-vx-mx,ny-2*p->y+vy+my,
                                                         CC_NOCHANGE);break;
           case 7:if(vx>nx-10-mx)vx=nx-10-mx;cc_move_win(p,vx+mx,CC_NOCHANGE,
                                                         nx-vx-mx,CC_NOCHANGE,
                                                         CC_NOCHANGE);break;
         case 8:if(vx>nx-10-mx)vx=nx-10-mx;if(vy>ny-1-my)vy=ny-1-my;          case 8:if(vx>nx-10-mx)vx=nx-10-mx;if(vy>ny-1-my)vy=ny-1-my;
                  move_win(p,vx+mx,vy+my,nx-vx-mx,ny-vy-my,CC_NOCHANGE);                   cc_move_win(p,vx+mx,vy+my,nx-vx-mx,ny-vy-my,CC_NOCHANGE);
       }        }
       break;        break;
       case CC_M_LBUTTONDBLCLK:        case CC_MOUSE_L_DBLCLK:
         if(((dialog->style&CC_ST_DI_HASMAXIMIZE)==CC_ST_DI_HASMAXIMIZE)&&(inrect(0,0,p->vx,1,x,y)))          if(((dialog->style&CC_ST_DI_HASMAXIMIZE)==CC_ST_DI_HASMAXIMIZE)&&
              (_cc_inrect(0,0,p->vx,1,x,y)))
         {          {
           capturewin=NULL;            _cc_capturewin=NULL;
           usekeys=true;            _cc_usekeys=true;
           dialog->bmaximize->extra->button.push(dialog->bmaximize);            dialog->bmaximize->extra->button.push(dialog->bmaximize);
         }          }
       break;        break;
       case CC_M_LBUTTONDOWN:        case CC_MOUSE_L_DOWN:
       if(inrect(0,0,p->vx,p->vy,x,y)&&(!inrect(1,1,p->vx-2,p->vy-2,x,y)))        if(_cc_inrect(0,0,p->vx,p->vy,x,y)&&
            (!_cc_inrect(1,1,p->vx-2,p->vy-2,x,y)))
       {        {
         if((statemd&CC_D_CTRL)!=CC_D_CTRL)          if((statemd&CC_MOD_CTRL)!=CC_MOD_CTRL)
         {          {
           if(inrect(0,0,p->vx,1,x,y))stat=0;else stat=-1;            if(_cc_inrect(0,0,p->vx,1,x,y))p->stat=0;else p->stat=-1;
           if(((dialog->style&CC_ST_DI_SIZEABLE)==CC_ST_DI_SIZEABLE)&&(dialog->state!=CC_SV_MAXIMIZED))            if(((dialog->style&CC_ST_DI_SIZEABLE)==CC_ST_DI_SIZEABLE)&&
                (dialog->state!=CC_SV_MAXIMIZED))
           {            {
             if((((inrect(1,0,1,1,x,y)||(inrect(p->vx-2,0,1,1,x,y)&&(p->vx>4)))&&              if((((_cc_inrect(1,0,1,1,x,y)||(_cc_inrect(p->vx-2,0,1,1,x,y)&&
                (dialog->state==CC_SV_NORMAL)))&&!(p->style&CC_ST_AU_FIXED))stat=1;                 (p->vx>4)))&&
             else if(inrect(p->vx-2,p->vy-2,2,2,x,y)&&(dialog->state==CC_SV_NORMAL)&&                 (dialog->state==CC_SV_NORMAL)))&&!(p->style&CC_ST_AU_FIXED))
                     !(p->style&CC_ST_AR_FIXED)&&!(p->style&CC_ST_AD_FIXED))stat=4;                p->stat=1;
             else if(inrect(2,p->vy-1,p->vx-4,1,x,y)&&(p->vy>1)&&(dialog->state==CC_SV_NORMAL)&&              else if(_cc_inrect(p->vx-2,p->vy-2,2,2,x,y)&&
                     !(p->style&CC_ST_AD_FIXED))stat=5;                      (dialog->state==CC_SV_NORMAL)&&!(p->style&CC_ST_AR_FIXED)&&
             else if(inrect(0,p->vy-2,2,2,x,y)&&(dialog->state==CC_SV_NORMAL)&&                      !(p->style&CC_ST_AD_FIXED))p->stat=4;
                     !(p->style&CC_ST_AL_FIXED)&&!(p->style&CC_ST_AD_FIXED))stat=6;              else if(_cc_inrect(2,p->vy-1,p->vx-4,1,x,y)&&(p->vy>1)&&
             else if(inrect(p->vx-1,0,1,2,x,y)&&(dialog->state==CC_SV_NORMAL)&&                      (dialog->state==CC_SV_NORMAL)&&!(p->style&CC_ST_AD_FIXED))
                     !(p->style&CC_ST_AU_FIXED)&&!(p->style&CC_ST_AR_FIXED))stat=2;                p->stat=5;
             else if(inrect(0,0,1,2,x,y)&&(dialog->state==CC_SV_NORMAL)&&              else if(_cc_inrect(0,p->vy-2,2,2,x,y)&&
                     !(p->style&CC_ST_AU_FIXED)&&!(p->style&CC_ST_AL_FIXED))stat=8;                      (dialog->state==CC_SV_NORMAL)&&
             else if(inrect(p->vx-1,0,1,p->vy,x,y)&&!(p->style&CC_ST_AR_FIXED))stat=3;                      !(p->style&CC_ST_AL_FIXED)&&!(p->style&CC_ST_AD_FIXED))
             else if(inrect(0,0,1,p->vy,x,y)&&!(p->style&CC_ST_AL_FIXED))stat=7;                p->stat=6;
               else if(_cc_inrect(p->vx-1,0,1,2,x,y)&&
                       (dialog->state==CC_SV_NORMAL)&&
                       !(p->style&CC_ST_AU_FIXED)&&!(p->style&CC_ST_AR_FIXED))
                 p->stat=2;
               else if(_cc_inrect(0,0,1,2,x,y)&&(dialog->state==CC_SV_NORMAL)&&
                       !(p->style&CC_ST_AU_FIXED)&&!(p->style&CC_ST_AL_FIXED))
                 p->stat=8;
               else if(_cc_inrect(p->vx-1,0,1,p->vy,x,y)&&
                       !(p->style&CC_ST_AR_FIXED))
                 p->stat=3;
               else if(_cc_inrect(0,0,1,p->vy,x,y)&&!(p->style&CC_ST_AL_FIXED))
                 p->stat=7;
           }            }
           if(stat==-1){stat=0;break;}            if(p->stat==-1){p->stat=0;break;}
         }          }
         else stat=0;          else p->stat=0;
         capturewin=p;          _cc_capturewin=p;
         usekeys=false;          _cc_usekeys=false;
         mx=p->x-vx;          mx=p->x-vx;
         my=p->y-vy;          my=p->y-vy;
         nx=p->x+p->vx;          nx=p->x+p->vx;
         ny=p->y+p->vy;          ny=p->y+p->vy;
       }        }
       break;        break;
       case CC_M_LBUTTONUP:        case CC_MOUSE_L_UP:
       if(capturewin!=p)break;        if(_cc_capturewin!=p)break;
       sendmousemessage(vx,vy,CC_M_MOUSEMOVE);        _cc_sendmousemessage(vx,vy,CC_MOUSE_MOVE);
       stat=0;        p->stat=0;
       capturewin=NULL;        _cc_capturewin=NULL;
       usekeys=true;        _cc_usekeys=true;
     }      }
   }    }
   if(((state==CC_M_LBUTTONDOWN)||(state==CC_M_RBUTTONDOWN))&&setfocus)set_focus(findchild(p));    if(((state==CC_MOUSE_L_DOWN)||(state==CC_MOUSE_R_DOWN))&&setfocus)
   if(chang)redrawclientwin(p);      cc_set_focus(_cc_findchild(p));
   if(sendnext)sendmousemessage(vx,vy,state);    if(chang)_cc_redrawclientwin(p);
     if(sendnext)_cc_sendmousemessage(vx,vy,state);
   return result;    return result;
 }  }

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6

Platon Group <platon@platon.org> http://platon.org/
Copyright © 2002-2006 Platon Group
Site powered by Metafox CMS
Go to Top