| version 1.5, 2005/12/02 17:15:00 |
version 1.6, 2005/12/08 21:13:04 |
|
|
| // 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; |
| } |
} |