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

Diff for tucniak/cuchar/cc_key.c between version 1.1 and 1.2

version 1.1, 2005/11/25 22:41:23 version 1.2, 2005/11/27 20:14:50
Line 1 
Line 1 
 // 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;
 }  }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

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