| version 1.1, 2005/11/25 22:41:23 |
version 1.2, 2005/11/27 20:14:50 |
|
|
| // Copyright (c) 2005 Michal Sudolsky |
/* |
| // modified by Juraj Kolesár <koli@koli.sk> |
Name: lc_key.c |
| #include "cuchar.h" |
Author: Michal Sudolsky |
| |
Date: 22.09.2005 14:45 |
| |
*/ |
| |
// modified by Juraj Kolesar <koli@koli.sk> |
| |
|
| |
#include "cc.h" |
| |
#define stat spcfocus->stat |
| |
|
| bool usekeys=true; |
bool usekeys=true; |
| |
|
| Line 25 bool findmenukey(WIN *win,unsigned short |
|
| Line 31 bool findmenukey(WIN *win,unsigned short |
|
| return gets; |
return gets; |
| } |
} |
| |
|
| bool sendkeymessage(unsigned short key)
|
bool sendkeymessage(unsigned short key) |
| {
|
{ |
| if(!usekeys)return true; |
if(!usekeys)return true; |
| if(!isactive(focuswin))return false;
|
return runacel(focuswin,0,0,key); |
| return runacel(focuswin,0,0,key);
|
} |
| }
|
|
| |
|
| bool dosendkeymessage(WIN *spcfocus,unsigned short key)
|
bool dosendkeymessage(WIN *spcfocus,unsigned short key) |
| {
|
{ |
| if(spcfocus==NULL)return false; |
if(spcfocus==NULL)return false; |
| EDIT *edit;
|
EDIT *edit; |
| BUTTON *button; |
BUTTON *button; |
| MENU *menu; |
MENU *menu; |
| GList *lines;
|
GList *lines; |
| bool chang=false,gets=false;
|
bool chang=false,gets=false; |
| long len,i,line;
|
long len,i,line; |
| char *er,*c,s; |
char *er,*c,s; |
| unsigned short kk=key&KKMASK; |
unsigned short kk=key&KKMASK; |
| WIN *p;
|
WIN *p; |
| switch(spcfocus->extra->type)
|
switch(spcfocus->extra->type) |
| {
|
{ |
| case TP_EDIT:
|
case TP_EDIT: |
| if((key&(MDMASK-MD_SHIFT)))break;
|
if((key==(MD_CTRL|'c'))||(key==(MD_CTRL|'C'))){edit_copy(spcfocus);gets=true;break;} |
| edit=&spcfocus->extra->edit;
|
if((key==(MD_CTRL|'v'))||(key==(MD_CTRL|'V'))){edit_paste(spcfocus);gets=true;break;} |
| len=strlen(edit->text);
|
if((key==(MD_CTRL|'x'))||(key==(MD_CTRL|'X'))){edit_cut(spcfocus);gets=true;break;} |
| if(edit->curpos>len)edit->curpos=len;
|
if((key&(MDMASK-MD_SHIFT)))break; |
| er=(unsigned char*)realloc(edit->text,len+2);
|
edit=&spcfocus->extra->edit; |
| if(er==NULL)return false;
|
if(edit->style==ED_READONLY)break; |
| edit->text=er;
|
len=strlen(edit->text); |
| for(i=len;i>edit->curpos;i--)edit->text[i]=edit->text[i-1];
|
if(edit->curpos>len)edit->curpos=len; |
| edit->text[edit->curpos]=key;
|
if(edit->maskpos!=-1) |
| len++;
|
{ |
| edit->text[len]='\0';
|
if(edit->curpos>len-1)edit->curpos=len-1; |
| edit->curpos++;
|
if(edit->maskpos>len-1)edit->maskpos=len-1; |
| if(edit->curpos-edit->scroll>spcfocus->vx-1)edit->scroll+=(spcfocus->vx/2>10)?10:spcfocus->vx/2;
|
if(edit->curpos>edit->maskpos) |
| if(edit->change!=NULL)edit->change(spcfocus);
|
{ |
| chang=true;
|
i=edit->curpos; |
| gets=true;
|
edit->curpos=edit->maskpos; |
| break;
|
edit->maskpos=i; |
| |
} |
| |
line=edit->curpos-edit->maskpos; |
| |
} |
| |
else line=1; |
| |
er=(unsigned char*)realloc(edit->text,len+line+1); |
| |
if(er==NULL)return false; |
| |
edit->text=er; |
| |
if(line>0)for(i=len;i>edit->curpos;i--)edit->text[i]=edit->text[i-1]; |
| |
else if(line<0)for(i=edit->curpos+1;i<len+line;i++)edit->text[i]=edit->text[i-line]; |
| |
edit->text[edit->curpos]=key; |
| |
len+=line; |
| |
edit->text[len]='\0'; |
| |
edit->curpos++; |
| |
edit->maskpos=-1; |
| |
if(edit->curpos-edit->scroll>spcfocus->vx-1)edit->scroll+=(spcfocus->vx/2>10)?10:spcfocus->vx/2; |
| |
if(edit->change!=NULL)edit->change(spcfocus); |
| |
chang=true; |
| |
gets=true; |
| |
break; |
| case TP_BUTTON: |
case TP_BUTTON: |
| button=&spcfocus->extra->button;
|
button=&spcfocus->extra->button; |
| if((key&~MD_SHIFT)==' ')
|
if((key&~MD_SHIFT)==' ') |
| {
|
{ |
| if(button->status==TS_HIGH)button->status=TS_EXPUSH;else button->status=TS_PUSH;
|
if(button->status==TS_HIGH)button->status=TS_EXPUSH;else button->status=TS_PUSH; |
| chang=true;
|
chang=true; |
| if(button->push!=NULL)button->push(spcfocus);
|
if(button->push!=NULL)button->push(spcfocus); |
| gets=true;
|
gets=true; |
| } |
} |
| break; |
break; |
| case TP_MENU: |
case TP_MENU: |
| Line 104 bool dosendkeymessage(WIN *spcfocus,unsi |
|
| Line 128 bool dosendkeymessage(WIN *spcfocus,unsi |
|
| line++; |
line++; |
| } |
} |
| } |
} |
| if(!menu->vert)gets|=findmenukey(spcfocus,key); |
if((!menu->vert)|| |
| |
(spcfocus->parent==NULL)|| |
| |
(spcfocus->parent->extra->type!=TP_MENU))gets|=findmenukey(spcfocus,key); |
| break; |
break; |
| case TP_DIALOG: |
case TP_DIALOG: |
| if((kk>='a')&&(kk<='z'))kk+='A'-'a'; |
if((kk>='a')&&(kk<='z'))kk+='A'-'a'; |
| Line 129 bool dosendkeymessage(WIN *spcfocus,unsi |
|
| Line 155 bool dosendkeymessage(WIN *spcfocus,unsi |
|
| } |
} |
| } |
} |
| } |
} |
| break;
|
break; |
| }
|
} |
| if(chang)redraw();
|
if(chang)redraw(); |
| return gets;
|
return gets; |
| }
|
} |
| |
|
| bool dosendsyskeymessage(WIN *spcfocus,unsigned short key)
|
bool dosendsyskeymessage(WIN *spcfocus,unsigned short key) |
| {
|
{ |
| EDIT *edit;
|
EDIT *edit; |
| BUTTON *button;
|
BUTTON *button; |
| LIST *list;
|
LIST *list; |
| SCROLL *vscroll,*hscroll;
|
SCROLL *vscroll,*hscroll; |
| COMBO *combo;
|
COMBO *combo; |
| MENU *menu; |
MENU *menu; |
| DIALOG *dialog; |
DIALOG *dialog; |
| GList *lines,*start; |
GList *lines,*start; |
| bool chang=false,gets=false;
|
bool chang=false,gets=false; |
| long len,i,actline,x,y,numlines;
|
long len,i,actline,x,y,numlines; |
| char *er;
|
char *er; |
| void (*change)()=NULL; |
void (*change)()=NULL; |
| if(spcfocus!=NULL) |
if(spcfocus!=NULL) |
| switch(spcfocus->extra->type)
|
switch(spcfocus->extra->type) |
| {
|
{ |
| case TP_EDIT:
|
case TP_EDIT: |
| edit=&spcfocus->extra->edit;
|
edit=&spcfocus->extra->edit; |
| len=strlen(edit->text);
|
len=strlen(edit->text); |
| switch(key)
|
switch(key) |
| {
|
{ |
| case KK_LEFT:if(edit->curpos>0){edit->curpos--;chang=true;}gets=true;break;
|
case KK_UP: |
| case KK_RIGHT:if(edit->curpos<len){edit->curpos++;;chang=true;}gets=true;break;
|
set_focus(findprevwin(spcfocus)); |
| case KK_HOME:edit->curpos=0;chang=true;gets=true;break;
|
stat=0; |
| case KK_END:edit->curpos=len;chang=true;gets=true;break;
|
break; |
| case KK_DEL:;
|
case KK_DOWN: |
| if(edit->curpos<len)
|
set_focus(findnextwin(spcfocus)); |
| {
|
stat=0; |
| for(i=edit->curpos;i<len-1;i++)edit->text[i]=edit->text[i+1];
|
break; |
| len--;
|
case KK_POPUP: |
| er=(unsigned char*)realloc(edit->text,len+1);
|
x=0; |
| if(er==NULL)return;
|
y=1; |
| edit->text=er;
|
client_to_screen(spcfocus,&x,&y); |
| edit->text[len]='\0';
|
set_parent(clipboardmenu,spcfocus); |
| chang=true;
|
track_popup_menu(clipboardmenu,x,y); |
| change=edit->change;
|
break; |
| }
|
case KK_INS|MD_CTRL:edit_copy(spcfocus);gets=true;break; |
| gets=true;
|
case KK_INS|MD_SHIFT:edit_paste(spcfocus);gets=true;break; |
| break;
|
case KK_DEL|MD_SHIFT:edit_cut(spcfocus);gets=true;break; |
| case KK_BACK:
|
case KK_LEFT: |
| if(edit->curpos>0)
|
if(edit->curpos>0){edit->curpos--;chang=true;} |
| {
|
if(edit->maskpos!=-1){edit->maskpos=-1;chang=true;} |
| for(i=edit->curpos-1;i<len-1;i++)edit->text[i]=edit->text[i+1];
|
gets=true;break; |
| len--;
|
case KK_LEFT|MD_SHIFT: |
| edit->curpos--;
|
if(len!=0)if(edit->maskpos==-1){edit->maskpos=edit->curpos;chang=true;} |
| edit->text=(unsigned char*)realloc(edit->text,len+1);
|
if(edit->curpos>0){edit->curpos--;chang=true;} |
| edit->text[len]='\0';
|
gets=true;break; |
| if(edit->curpos-edit->scroll<0)edit->scroll-=(spcfocus->vx/2>10)?10:spcfocus->vx/2;
|
case KK_RIGHT: |
| chang=true;
|
if(edit->curpos<len){edit->curpos++;chang=true;} |
| change=edit->change;
|
if(edit->maskpos!=-1){edit->maskpos=-1;chang=true;} |
| }
|
gets=true;break; |
| gets=true;
|
case KK_RIGHT|MD_SHIFT: |
| break;
|
if(len!=0)if(edit->maskpos==-1){edit->maskpos=edit->curpos;chang=true;} |
| }
|
if(edit->curpos<len-1){edit->curpos++;chang=true;} |
| if(edit->curpos-edit->scroll<0)
|
gets=true;break; |
| {
|
case KK_HOME:edit->curpos=0;edit->maskpos=-1;chang=true;gets=true;break; |
| edit->scroll=edit->curpos;
|
case KK_HOME|MD_SHIFT: |
| chang=true;
|
if(len!=0)edit->maskpos=edit->curpos;edit->curpos=0;chang=true;gets=true;break; |
| }
|
case KK_END:edit->curpos=len;edit->maskpos=-1;chang=true;gets=true;break; |
| if(edit->curpos-edit->scroll>spcfocus->vx-1)
|
case KK_END|MD_SHIFT: |
| {
|
if(len!=0)edit->maskpos=edit->curpos;edit->curpos=len-1;chang=true;gets=true;break; |
| edit->scroll=edit->curpos-spcfocus->vx+1;
|
case KK_DEL:; |
| chang=true;
|
if(edit->style==ED_READONLY)break; |
| }
|
if(edit->curpos<len) |
| if(change!=NULL)change(spcfocus);
|
{ |
| break;
|
if(edit->maskpos!=-1) |
| case TP_BUTTON:
|
{ |
| button=&spcfocus->extra->button;
|
if(edit->curpos>len-1)edit->curpos=len-1; |
| if(key==KK_ENTER)
|
if(edit->maskpos>len-1)edit->maskpos=len-1; |
| {
|
if(edit->curpos>edit->maskpos) |
| if(button->status==TS_HIGH)button->status=TS_EXPUSH;else button->status=TS_PUSH;
|
{ |
| chang=true;
|
i=edit->curpos; |
| if(button->push!=NULL)button->push(spcfocus);
|
edit->curpos=edit->maskpos; |
| gets=true;
|
edit->maskpos=i; |
| }
|
} |
| break;
|
actline=edit->maskpos-edit->curpos+1; |
| case TP_LIST:
|
} |
| list=&spcfocus->extra->list;
|
else actline=1; |
| vscroll=&list->vscroll->extra->scroll;
|
for(i=edit->curpos;i<len-actline;i++)edit->text[i]=edit->text[i+actline]; |
| hscroll=&list->hscroll->extra->scroll;
|
len-=actline; |
| |
er=(unsigned char*)realloc(edit->text,len+1); |
| |
edit->maskpos=-1; |
| |
if(er==NULL)return; |
| |
edit->text=er; |
| |
edit->text[len]='\0'; |
| |
chang=true; |
| |
change=edit->change; |
| |
} |
| |
gets=true; |
| |
break; |
| |
case KK_BACK: |
| |
if(edit->style==ED_READONLY)break; |
| |
if((edit->curpos>0)||((edit->maskpos!=-1)&&(edit->curpos>=0))) |
| |
{ |
| |
if(edit->maskpos!=-1) |
| |
{ |
| |
if(edit->curpos>len-1)edit->curpos=len-1; |
| |
if(edit->maskpos>len-1)edit->maskpos=len-1; |
| |
if(edit->curpos>edit->maskpos) |
| |
{ |
| |
i=edit->curpos; |
| |
edit->curpos=edit->maskpos; |
| |
edit->maskpos=i; |
| |
} |
| |
actline=edit->maskpos-edit->curpos+1; |
| |
} |
| |
else actline=1; |
| |
for(i=edit->curpos-(edit->maskpos==-1?1:0);i<len-actline;i++) |
| |
edit->text[i]=edit->text[i+actline]; |
| |
len-=actline; |
| |
if(edit->maskpos==-1)edit->curpos--; |
| |
edit->text=(unsigned char*)realloc(edit->text,len+1); |
| |
edit->maskpos=-1; |
| |
edit->text[len]='\0'; |
| |
if(edit->curpos-edit->scroll<0)edit->scroll-=(spcfocus->vx/2>10)?10:spcfocus->vx/2; |
| |
chang=true; |
| |
change=edit->change; |
| |
} |
| |
gets=true; |
| |
break; |
| |
} |
| |
if(edit->curpos-edit->scroll<0) |
| |
{ |
| |
edit->scroll=edit->curpos; |
| |
chang=true; |
| |
} |
| |
if(edit->curpos-edit->scroll>spcfocus->vx-1) |
| |
{ |
| |
edit->scroll=edit->curpos-spcfocus->vx+1; |
| |
chang=true; |
| |
} |
| |
if(change!=NULL)change(spcfocus); |
| |
break; |
| |
case TP_BUTTON: |
| |
button=&spcfocus->extra->button; |
| |
if(key==KK_ENTER) |
| |
{ |
| |
if(button->status==TS_HIGH)button->status=TS_EXPUSH;else button->status=TS_PUSH; |
| |
chang=true; |
| |
if(button->push!=NULL)button->push(spcfocus); |
| |
gets=true; |
| |
} |
| |
else if((key==KK_LEFT)||(key==KK_UP)) |
| |
{ |
| |
set_focus(findprevwin(spcfocus)); |
| |
gets=true; |
| |
stat=0; |
| |
} |
| |
else if((key==KK_RIGHT)||(key==KK_DOWN)) |
| |
{ |
| |
set_focus(findnextwin(spcfocus)); |
| |
gets=true; |
| |
stat=0; |
| |
} |
| |
break; |
| |
case TP_LIST: |
| |
list=&spcfocus->extra->list; |
| |
vscroll=&list->vscroll->extra->scroll; |
| |
hscroll=&list->hscroll->extra->scroll; |
| actline=list->activeline; |
actline=list->activeline; |
| numlines=g_list_length(list->lines);
|
numlines=g_list_length(list->lines); |
| switch(key)
|
switch(key) |
| {
|
{ |
| case KK_LEFT:if(hscroll->pos>hscroll->minpos){hscroll->pos--;chang=true;}gets=true;break;
|
case KK_LEFT:if(hscroll->pos>hscroll->minpos){hscroll->pos--;chang=true;}gets=true;break; |
| case KK_RIGHT:if(hscroll->pos<hscroll->maxpos){hscroll->pos++;chang=true;}gets=true;break;
|
case KK_RIGHT:if(hscroll->pos<hscroll->maxpos){hscroll->pos++;chang=true;}gets=true;break; |
| case KK_UP:list->activeline--;gets=true;break;
|
case KK_UP:list->activeline--;gets=true;break; |
| case KK_DOWN:list->activeline++;gets=true;break;
|
case KK_DOWN:list->activeline++;gets=true;break; |
| case KK_PGUP:list->activeline-=vscroll->pagecnt;gets=true;break;
|
case KK_PGUP:list->activeline-=vscroll->pagecnt;gets=true;break; |
| case KK_PGDOWN:list->activeline+=vscroll->pagecnt;gets=true;break;
|
case KK_PGDOWN:list->activeline+=vscroll->pagecnt;gets=true;break; |
| case KK_HOME:list->activeline=0;gets=true;break;
|
case KK_HOME:list->activeline=0;gets=true;break; |
| case KK_END:list->activeline=numlines-1;gets=true;break;
|
case KK_END:list->activeline=numlines-1;gets=true;break; |
| case KK_ENTER:
|
case KK_ENTER: |
| if(list->combotyp)
|
if(list->combotyp==CT_COMBO) |
| {
|
{ |
| capturewin=NULL;
|
capturewin=NULL; |
| sendmousemessage(mousex,mousey,MM_LBUTTONUP);
|
sendmousemessage(mousex,mousey,MM_LBUTTONUP); |
| set_focus(spcfocus->parent);
|
set_focus(spcfocus->parent); |
| show_win(spcfocus,false);
|
show_win(spcfocus,false); |
| gets=true;
|
gets=true; |
| }
|
} |
| if(list->dblclk!=NULL){list->dblclk(spcfocus);chang=true;}
|
if(list->dblclk!=NULL) |
| break;
|
{ |
| case KK_ESC:
|
if((list->combotyp==CT_COMBO)&&(spcfocus->parent!=NULL)&& |
| if(list->combotyp)
|
(spcfocus->parent->extra->type==TP_COMBO)) |
| {
|
{ |
| capturewin=NULL;
|
combo=&spcfocus->parent->extra->combo; |
| sendmousemessage(mousex,mousey,MM_LBUTTONUP);
|
char *data=g_list_nth_data(list->lines,list->activeline); |
| set_focus(spcfocus->parent);
|
set_text(combo->edit,data); |
| show_win(spcfocus,false);
|
} |
| gets=true;
|
list->dblclk(spcfocus); |
| }
|
chang=true; |
| break;
|
} |
| }
|
break; |
| if(list->activeline<0)list->activeline=0;
|
case KK_ESC: |
| if(list->activeline>numlines-1)list->activeline=numlines-1;
|
if(list->combotyp==CT_COMBO) |
| if(list->activeline<vscroll->pos)vscroll->pos=list->activeline;
|
{ |
| if(list->activeline-spcfocus->vy+3>vscroll->pos)vscroll->pos=list->activeline-spcfocus->vy+3;
|
capturewin=NULL; |
| |
sendmousemessage(mousex,mousey,MM_LBUTTONUP); |
| |
set_focus(spcfocus->parent); |
| |
show_win(spcfocus,false); |
| |
gets=true; |
| |
} |
| |
break; |
| |
} |
| |
if(list->activeline<0)list->activeline=0; |
| |
if(list->activeline>numlines-1)list->activeline=numlines-1; |
| |
if(list->activeline<vscroll->pos)vscroll->pos=list->activeline; |
| |
if(list->activeline-spcfocus->vy+3>vscroll->pos)vscroll->pos=list->activeline-spcfocus->vy+3; |
| if(actline!=list->activeline) |
if(actline!=list->activeline) |
| { |
{ |
| if(list->change!=NULL)list->change(spcfocus); |
if(list->change!=NULL)list->change(spcfocus); |
| chang=true; |
chang=true; |
| }
|
} |
| break;
|
break; |
| case TP_COMBO:
|
case TP_COMBO: |
| combo=&spcfocus->extra->combo;
|
combo=&spcfocus->extra->combo; |
| list=&combo->list->extra->list;
|
list=&combo->list->extra->list; |
| vscroll=&list->vscroll->extra->scroll;
|
vscroll=&list->vscroll->extra->scroll; |
| actline=combo->activeline;
|
actline=combo->activeline; |
| numlines=g_list_length(list->lines); |
numlines=g_list_length(list->lines); |
| x=0;
|
x=spcfocus->vx-1; |
| y=0;
|
y=0; |
| client_to_screen(spcfocus,&x,&y);
|
client_to_screen(spcfocus,&x,&y); |
| switch(key)
|
switch(key) |
| {
|
{ |
| case KK_LEFT:combo->scroll--;chang=true;gets=true;break;
|
case KK_LEFT:combo->scroll--;chang=true;gets=true;break; |
| case KK_RIGHT:combo->scroll++;chang=true;gets=true;break;
|
case KK_RIGHT:combo->scroll++;chang=true;gets=true;break; |
| case KK_UP:combo->activeline--;gets=true;break;
|
case KK_UP:combo->activeline--;gets=true;break; |
| case KK_DOWN:combo->activeline++;gets=true;break;
|
case KK_DOWN:combo->activeline++;gets=true;break; |
| case KK_PGUP:combo->activeline-=vscroll->pagecnt;gets=true;break;
|
case KK_PGUP:combo->activeline-=vscroll->pagecnt;gets=true;break; |
| case KK_PGDOWN:combo->activeline+=vscroll->pagecnt;gets=true;break;
|
case KK_PGDOWN:combo->activeline+=vscroll->pagecnt;gets=true;break; |
| case KK_HOME:combo->activeline=0;gets=true;break;
|
case KK_HOME:combo->activeline=0;gets=true;break; |
| case KK_END:combo->activeline=numlines-1;gets=true;break;
|
case KK_END:combo->activeline=numlines-1;gets=true;break; |
| case KK_ENTER:
|
case KK_ENTER: |
| if(capturewin!=spcfocus)capturewin=NULL; |
if(capturewin!=spcfocus)capturewin=NULL; |
| sendmousemessage(x,y,MM_LBUTTONDOWN);
|
sendmousemessage(x,y,MM_LBUTTONDOWN); |
| sendmousemessage(x,y,MM_LBUTTONUP);
|
sendmousemessage(x,y,MM_LBUTTONUP); |
| gets=true;
|
gets=true; |
| break;
|
break; |
| }
|
} |
| if(combo->activeline<0)combo->activeline=0;
|
if(combo->activeline<0)combo->activeline=0; |
| if(combo->activeline>numlines-1)combo->activeline=numlines-1;
|
if(combo->activeline>numlines-1)combo->activeline=numlines-1; |
| if(actline!=combo->activeline)chang=true;
|
if(actline!=combo->activeline) |
| if((actline!=combo->activeline)&&(combo->change!=NULL))combo->change(spcfocus);
|
{ |
| break;
|
chang=true; |
| |
char *data=g_list_nth_data(list->lines,combo->activeline); |
| |
set_text(combo->edit,data); |
| |
if(combo->change!=NULL)combo->change(spcfocus); |
| |
} |
| |
break; |
| case TP_MENU: |
case TP_MENU: |
| menu=&spcfocus->extra->menu;
|
menu=&spcfocus->extra->menu; |
| actline=menu->activeline; |
actline=menu->activeline; |
| if(menu->lines!=NULL)numlines=g_list_length(menu->lines);else numlines=0;
|
if(menu->lines!=NULL)numlines=g_list_length(menu->lines);else numlines=0; |
| switch(key)
|
switch(key) |
| {
|
{ |
| case KK_LEFT: |
case KK_LEFT: |
| if(!isfocused(spcfocus))return gets; |
if(!isfocused(spcfocus))return gets; |
| if(menu->lines==NULL)return gets; |
if(menu->lines==NULL)return gets; |
| Line 344 bool dosendsyskeymessage(WIN *spcfocus,u |
|
| Line 465 bool dosendsyskeymessage(WIN *spcfocus,u |
|
| } |
} |
| } |
} |
| } |
} |
| break;
|
break; |
| case KK_RIGHT: |
case KK_RIGHT: |
| if(!isfocused(spcfocus))return gets; |
if(!isfocused(spcfocus))return gets; |
| if(menu->lines==NULL)return gets; |
if(menu->lines==NULL)return gets; |
| Line 389 bool dosendsyskeymessage(WIN *spcfocus,u |
|
| Line 510 bool dosendsyskeymessage(WIN *spcfocus,u |
|
| } |
} |
| gets=true; |
gets=true; |
| } |
} |
| }
|
} |
| } |
} |
| break;
|
break; |
| case KK_UP: |
case KK_UP: |
| if(!isfocused(spcfocus))return gets; |
if(!isfocused(spcfocus))return gets; |
| if(menu->lines==NULL)return gets; |
if(menu->lines==NULL)return gets; |
| Line 410 bool dosendsyskeymessage(WIN *spcfocus,u |
|
| Line 531 bool dosendsyskeymessage(WIN *spcfocus,u |
|
| } |
} |
| while(strcmp(((CMENU*)lines->data)->text,"-")==0); |
while(strcmp(((CMENU*)lines->data)->text,"-")==0); |
| gets=true; |
gets=true; |
| break;
|
break; |
| case KK_DOWN: |
case KK_DOWN: |
| if(!isfocused(spcfocus))return gets; |
if(!isfocused(spcfocus))return gets; |
| if(menu->lines==NULL)return gets; |
if(menu->lines==NULL)return gets; |
| Line 435 bool dosendsyskeymessage(WIN *spcfocus,u |
|
| Line 556 bool dosendsyskeymessage(WIN *spcfocus,u |
|
| chang=false; |
chang=false; |
| gets=true; |
gets=true; |
| } |
} |
| break;
|
break; |
| case KK_ENTER:
|
case KK_ENTER: |
| if(!isfocused(spcfocus))return gets; |
if(!isfocused(spcfocus))return gets; |
| if(menu->lines==NULL)return gets; |
if(menu->lines==NULL)return gets; |
| if(menu->vert)
|
if(menu->vert) |
| {
|
{ |
| if(menu->activeline!=-1) |
if(menu->activeline!=-1) |
| { |
{ |
| x=1; |
x=1; |
| Line 457 bool dosendsyskeymessage(WIN *spcfocus,u |
|
| Line 578 bool dosendsyskeymessage(WIN *spcfocus,u |
|
| redraw(); |
redraw(); |
| } |
} |
| else |
else |
| sendmousemessage(gpmev.x,gpmev.y,MM_MOUSEMOVE);
|
sendmousemessage(gpmev.x,gpmev.y,MM_MOUSEMOVE); |
| gets=true; |
gets=true; |
| }
|
} |
| } |
} |
| else |
else |
| { |
{ |
| Line 489 bool dosendsyskeymessage(WIN *spcfocus,u |
|
| Line 610 bool dosendsyskeymessage(WIN *spcfocus,u |
|
| else sendmousemessage(gpmev.x,gpmev.y,MM_MOUSEMOVE); |
else sendmousemessage(gpmev.x,gpmev.y,MM_MOUSEMOVE); |
| stat=2; |
stat=2; |
| } |
} |
| gets=true;
|
gets=true; |
| }
|
} |
| break;
|
break; |
| case KK_ESC:
|
case KK_ESC: |
| if(!isfocused(spcfocus))return gets; |
if(!isfocused(spcfocus))return gets; |
| menu->activeline=-1; |
menu->activeline=-1; |
| if(menu->vert)
|
if(menu->vert) |
| {
|
{ |
| if((spcfocus->parent!=NULL)&&(spcfocus->parent->extra->type==TP_MENU)) |
if((spcfocus->parent!=NULL)&&(spcfocus->parent->extra->type==TP_MENU)) |
| { |
{ |
| WIN *capt=capturewin; |
WIN *capt=capturewin; |
| Line 515 bool dosendsyskeymessage(WIN *spcfocus,u |
|
| Line 636 bool dosendsyskeymessage(WIN *spcfocus,u |
|
| { |
{ |
| stat=0; |
stat=0; |
| set_focus(lastfocused); |
set_focus(lastfocused); |
| sendmousemessage(gpmev.x,gpmev.y,MM_LBUTTONUP);
|
sendmousemessage(gpmev.x,gpmev.y,MM_LBUTTONUP); |
| }
|
} |
| gets=true;
|
gets=true; |
| break; |
break; |
| case KK_LEFT|MD_ALT: |
case KK_LEFT|MD_ALT: |
| case KK_F9: |
case KK_F9: |
| Line 529 bool dosendsyskeymessage(WIN *spcfocus,u |
|
| Line 650 bool dosendsyskeymessage(WIN *spcfocus,u |
|
| break; |
break; |
| default: |
default: |
| if(!menu->vert)gets=findmenukey(spcfocus,key); |
if(!menu->vert)gets=findmenukey(spcfocus,key); |
| }
|
} |
| if(menu->activeline<-1)menu->activeline=-1;
|
if(menu->activeline<-1)menu->activeline=-1; |
| if(menu->activeline>numlines-1)menu->activeline=numlines-1;
|
if(menu->activeline>numlines-1)menu->activeline=numlines-1; |
| if(actline!=menu->activeline) |
if(actline!=menu->activeline) |
| { |
{ |
| if(menu->change!=NULL)menu->change(spcfocus); |
if(menu->change!=NULL)menu->change(spcfocus); |
| chang=true; |
chang=true; |
| }
|
} |
| break; |
break; |
| case TP_DIALOG:
|
case TP_DIALOG: |
| dialog=&spcfocus->extra->dialog;
|
dialog=&spcfocus->extra->dialog; |
| switch(key)
|
switch(key) |
| {
|
{ |
| case KK_LEFT|MD_CTRL: |
case KK_LEFT|MD_CTRL: |
| move_win(spcfocus,spcfocus->x-1,NOCHANGE,NOCHANGE,NOCHANGE,NOCHANGE);gets=true;break;
|
move_win(spcfocus,spcfocus->x-1,NOCHANGE,NOCHANGE,NOCHANGE,NOCHANGE);gets=true;break; |
| case KK_RIGHT|MD_CTRL: |
case KK_RIGHT|MD_CTRL: |
| move_win(spcfocus,spcfocus->x+1,NOCHANGE,NOCHANGE,NOCHANGE,NOCHANGE);gets=true;break;
|
move_win(spcfocus,spcfocus->x+1,NOCHANGE,NOCHANGE,NOCHANGE,NOCHANGE);gets=true;break; |
| case KK_UP|MD_CTRL: |
case KK_UP|MD_CTRL: |
| move_win(spcfocus,NOCHANGE,spcfocus->y-1,NOCHANGE,NOCHANGE,NOCHANGE);gets=true;break;
|
move_win(spcfocus,NOCHANGE,spcfocus->y-1,NOCHANGE,NOCHANGE,NOCHANGE);gets=true;break; |
| case KK_DOWN|MD_CTRL: |
case KK_DOWN|MD_CTRL: |
| move_win(spcfocus,NOCHANGE,spcfocus->y+1,NOCHANGE,NOCHANGE,NOCHANGE);gets=true;break;
|
move_win(spcfocus,NOCHANGE,spcfocus->y+1,NOCHANGE,NOCHANGE,NOCHANGE);gets=true;break; |
| case KK_HOME|MD_CTRL: |
case KK_HOME|MD_CTRL: |
| move_win(spcfocus,spcfocus->x-1,spcfocus->y-1,NOCHANGE,NOCHANGE,NOCHANGE);gets=true;break;
|
move_win(spcfocus,spcfocus->x-1,spcfocus->y-1,NOCHANGE,NOCHANGE,NOCHANGE);gets=true;break; |
| case KK_PGUP|MD_CTRL: |
case KK_PGUP|MD_CTRL: |
| move_win(spcfocus,spcfocus->x+1,spcfocus->y-1,NOCHANGE,NOCHANGE,NOCHANGE);gets=true;break;
|
move_win(spcfocus,spcfocus->x+1,spcfocus->y-1,NOCHANGE,NOCHANGE,NOCHANGE);gets=true;break; |
| case KK_PGDOWN|MD_CTRL: |
case KK_PGDOWN|MD_CTRL: |
| move_win(spcfocus,spcfocus->x+1,spcfocus->y+1,NOCHANGE,NOCHANGE,NOCHANGE);gets=true;break;
|
move_win(spcfocus,spcfocus->x+1,spcfocus->y+1,NOCHANGE,NOCHANGE,NOCHANGE);gets=true;break; |
| case KK_END|MD_CTRL: |
case KK_END|MD_CTRL: |
| move_win(spcfocus,spcfocus->x-1,spcfocus->y+1,NOCHANGE,NOCHANGE,NOCHANGE);gets=true;break;
|
move_win(spcfocus,spcfocus->x-1,spcfocus->y+1,NOCHANGE,NOCHANGE,NOCHANGE);gets=true;break; |
| case KK_LEFT|MD_SHIFT: |
case KK_LEFT|MD_CTRL|MD_SHIFT: |
| move_win(spcfocus,NOCHANGE,NOCHANGE,spcfocus->vx-1,NOCHANGE,NOCHANGE);gets=true;break;
|
move_win(spcfocus,NOCHANGE,NOCHANGE,spcfocus->vx-1,NOCHANGE,NOCHANGE);gets=true;break; |
| case KK_RIGHT|MD_SHIFT: |
case KK_RIGHT|MD_CTRL|MD_SHIFT: |
| move_win(spcfocus,NOCHANGE,NOCHANGE,spcfocus->vx+1,NOCHANGE,NOCHANGE);gets=true;break;
|
move_win(spcfocus,NOCHANGE,NOCHANGE,spcfocus->vx+1,NOCHANGE,NOCHANGE);gets=true;break; |
| case KK_UP|MD_SHIFT: |
case KK_UP|MD_CTRL|MD_SHIFT: |
| move_win(spcfocus,NOCHANGE,NOCHANGE,NOCHANGE,spcfocus->vy-1,NOCHANGE);gets=true;break;
|
move_win(spcfocus,NOCHANGE,NOCHANGE,NOCHANGE,spcfocus->vy-1,NOCHANGE);gets=true;break; |
| case KK_DOWN|MD_SHIFT: |
case KK_DOWN|MD_CTRL|MD_SHIFT: |
| move_win(spcfocus,NOCHANGE,NOCHANGE,NOCHANGE,spcfocus->vy+1,NOCHANGE);gets=true;break;
|
move_win(spcfocus,NOCHANGE,NOCHANGE,NOCHANGE,spcfocus->vy+1,NOCHANGE);gets=true;break; |
| case KK_HOME|MD_SHIFT: |
case KK_HOME|MD_CTRL|MD_SHIFT: |
| move_win(spcfocus,NOCHANGE,NOCHANGE,spcfocus->vx-1,spcfocus->vy-1,NOCHANGE);gets=true;break;
|
move_win(spcfocus,NOCHANGE,NOCHANGE,spcfocus->vx-1,spcfocus->vy-1,NOCHANGE);gets=true;break; |
| case KK_PGUP|MD_SHIFT: |
case KK_PGUP|MD_CTRL|MD_SHIFT: |
| move_win(spcfocus,NOCHANGE,NOCHANGE,spcfocus->vx+1,spcfocus->vy-1,NOCHANGE);gets=true;break;
|
move_win(spcfocus,NOCHANGE,NOCHANGE,spcfocus->vx+1,spcfocus->vy-1,NOCHANGE);gets=true;break; |
| case KK_PGDOWN|MD_SHIFT: |
case KK_PGDOWN|MD_CTRL|MD_SHIFT: |
| move_win(spcfocus,NOCHANGE,NOCHANGE,spcfocus->vx+1,spcfocus->vy+1,NOCHANGE);gets=true;break;
|
move_win(spcfocus,NOCHANGE,NOCHANGE,spcfocus->vx+1,spcfocus->vy+1,NOCHANGE);gets=true;break; |
| case KK_END|MD_SHIFT: |
case KK_END|MD_CTRL|MD_SHIFT: |
| move_win(spcfocus,NOCHANGE,NOCHANGE,spcfocus->vx-1,spcfocus->vy+1,NOCHANGE);gets=true;break;
|
move_win(spcfocus,NOCHANGE,NOCHANGE,spcfocus->vx-1,spcfocus->vy+1,NOCHANGE);gets=true;break; |
| case KK_INS|MD_CTRL:
|
case KK_INS|MD_CTRL|MD_SHIFT: |
| if((dialog->style&ST_DI_HASMAXIMIZE)==ST_DI_HASMAXIMIZE)
|
if((dialog->style&ST_DI_HASMAXIMIZE)==ST_DI_HASMAXIMIZE) |
| dialog->bmaximize->extra->button.push(dialog->bmaximize); |
dialog->bmaximize->extra->button.push(dialog->bmaximize); |
| gets=true;
|
gets=true; |
| break;
|
break; |
| case KK_DEL|MD_CTRL:
|
case KK_DEL|MD_CTRL|MD_SHIFT: |
| if((dialog->style&ST_DI_HASMINIMIZE)==ST_DI_HASMINIMIZE)
|
if((dialog->style&ST_DI_HASMINIMIZE)==ST_DI_HASMINIMIZE) |
| dialog->bminimize->extra->button.push(dialog->bminimize); |
dialog->bminimize->extra->button.push(dialog->bminimize); |
| gets=true;
|
gets=true; |
| break;
|
break; |
| case KK_F4|MD_SHIFT:dialog->bclose->extra->button.push(dialog->bclose);gets=true;break;
|
case KK_F4|MD_SHIFT:dialog->bclose->extra->button.push(dialog->bclose);gets=true;break; |
| case KK_TAB:
|
case KK_TAB: |
| set_focus(findchild(spcfocus));
|
set_focus(findchild(spcfocus)); |
| gets=true;
|
gets=true; |
| break;
|
break; |
| }
|
} |
| break;
|
break; |
| }
|
} |
| if(!gets) |
if(!gets) |
| { |
{ |
| if(spcfocus!=NULL) |
if(spcfocus!=NULL) |
| Line 636 bool dosendsyskeymessage(WIN *spcfocus,u |
|
| Line 757 bool dosendsyskeymessage(WIN *spcfocus,u |
|
| stat=0; |
stat=0; |
| } |
} |
| } |
} |
| if(chang)redraw();
|
if(chang)redraw(); |
| return gets;
|
return gets; |
| }
|
} |