forked from KolibriOS/kolibrios
CMM: ability to use Ctrl+C/Ctrl+V in EditBox. Fix Dicty, TmpDisk.
TmpDisk switch from ASCII to SCANCODE, better process keys for case when EditBox is active and inactive. git-svn-id: svn://kolibrios.org@6640 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
830c466a98
commit
c65a0e6a0a
@ -68,8 +68,7 @@ void main()
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case evKey:
|
case evKey:
|
||||||
GetKeys();
|
GetKeys();
|
||||||
EAX=key_ascii<<8;
|
|
||||||
edit_box_key stdcall(#edit1);
|
edit_box_key stdcall(#edit1);
|
||||||
Translate();
|
Translate();
|
||||||
break;
|
break;
|
||||||
|
@ -70,9 +70,8 @@ GETKEYII:
|
|||||||
$shr eax,8
|
$shr eax,8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
unsigned char key_ascii;
|
unsigned char key_ascii;
|
||||||
dword key_scancode, key_modifier;
|
dword key_scancode, key_modifier, key_editbox;
|
||||||
int GetKeys()
|
int GetKeys()
|
||||||
{
|
{
|
||||||
$push edx
|
$push edx
|
||||||
@ -88,6 +87,7 @@ GETKEYI:
|
|||||||
$jmp GETKEY
|
$jmp GETKEY
|
||||||
GETKEYII:
|
GETKEYII:
|
||||||
$pop edx
|
$pop edx
|
||||||
|
key_editbox = EAX;
|
||||||
key_ascii = AH;
|
key_ascii = AH;
|
||||||
$shr eax,16
|
$shr eax,16
|
||||||
key_scancode = AL;
|
key_scancode = AL;
|
||||||
@ -96,6 +96,7 @@ GETKEYII:
|
|||||||
$mov ebx,3
|
$mov ebx,3
|
||||||
$int 0x40
|
$int 0x40
|
||||||
key_modifier = EAX;
|
key_modifier = EAX;
|
||||||
|
EAX = key_editbox;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -55,7 +55,7 @@ edit_box edit_disk_size= {50,0,7,0xffffff,0x94AECE,0xFFFfff,0xffffff,0,4,#new_di
|
|||||||
|
|
||||||
void Main_Window()
|
void Main_Window()
|
||||||
{
|
{
|
||||||
word id, key;
|
word id;
|
||||||
int i, x;
|
int i, x;
|
||||||
|
|
||||||
mem_Init();
|
mem_Init();
|
||||||
@ -85,51 +85,66 @@ void Main_Window()
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case evKey:
|
case evKey:
|
||||||
key = GetKey();
|
GetKeys();
|
||||||
switch(key)
|
// PROCESS KEYS WHEN EDIT BOX INACTIVE
|
||||||
|
if ( !asm test edit_disk_size.flags, 2) switch(key_scancode)
|
||||||
{
|
{
|
||||||
case 9:
|
case SCAN_CODE_TAB:
|
||||||
if ( !asm test edit_disk_size.flags, 2) edit_disk_size.flags=1000000000000010b;
|
edit_disk_size.flags=1000000000000010b;
|
||||||
else edit_disk_size.flags=1000000000000000b;
|
|
||||||
edit_box_draw stdcall (#edit_disk_size);
|
edit_box_draw stdcall (#edit_disk_size);
|
||||||
|
DrawTmpDisks();
|
||||||
break;
|
break;
|
||||||
case 185:
|
case SCAN_CODE_UP:
|
||||||
AddDisk();
|
|
||||||
break;
|
|
||||||
case 182:
|
|
||||||
if (disk_num<>0) DelDisk();
|
|
||||||
break;
|
|
||||||
case 13:
|
|
||||||
if ( !asm test edit_disk_size.flags, 2) OpenTmpDisk();
|
|
||||||
else AddDisk();
|
|
||||||
break;
|
|
||||||
case 178:
|
|
||||||
if (selected==0) break;
|
if (selected==0) break;
|
||||||
selected--;
|
selected--;
|
||||||
DrawTmpDisks();
|
DrawTmpDisks();
|
||||||
break;
|
break;
|
||||||
case 177:
|
case SCAN_CODE_DOWN:
|
||||||
if (selected+2>disk_num) break;
|
if (selected+2>disk_num) break;
|
||||||
selected++;
|
selected++;
|
||||||
DrawTmpDisks();
|
DrawTmpDisks();
|
||||||
break;
|
break;
|
||||||
case 176:
|
case SCAN_CODE_LEFT:
|
||||||
if (selected<3) break;
|
if (selected<3) break;
|
||||||
selected-=3;
|
selected-=3;
|
||||||
DrawTmpDisks();
|
DrawTmpDisks();
|
||||||
break;
|
break;
|
||||||
case 179:
|
case SCAN_CODE_RIGHT:
|
||||||
if (selected+4>disk_num) break;
|
if (selected+4>disk_num) break;
|
||||||
selected+=3;
|
selected+=3;
|
||||||
DrawTmpDisks();
|
DrawTmpDisks();
|
||||||
|
break;
|
||||||
|
case SCAN_CODE_INS:
|
||||||
|
AddDisk();
|
||||||
|
break;
|
||||||
|
case SCAN_CODE_DEL:
|
||||||
|
if (disk_num<>0) DelDisk();
|
||||||
|
break;
|
||||||
|
case SCAN_CODE_ENTER:
|
||||||
|
OpenTmpDisk();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// PROCESS KEYS WHEN EDIT BOX ACTIVE
|
||||||
|
else switch(key_scancode)
|
||||||
|
{
|
||||||
|
case SCAN_CODE_TAB:
|
||||||
|
edit_disk_size.flags=1000000000000000b;
|
||||||
|
edit_box_draw stdcall (#edit_disk_size);
|
||||||
|
DrawTmpDisks();
|
||||||
|
break;
|
||||||
|
case SCAN_CODE_ENTER:
|
||||||
|
case SCAN_CODE_INS:
|
||||||
|
AddDisk();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
EAX = key_editbox;
|
||||||
|
edit_box_key stdcall(#edit_disk_size);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
EAX=key<<8;
|
|
||||||
edit_box_key stdcall(#edit_disk_size);
|
|
||||||
break;
|
break;
|
||||||
case evReDraw:
|
case evReDraw:
|
||||||
system.color.get();
|
system.color.get();
|
||||||
DefineAndDrawWindow(170,150,314,270,0x74,system.color.work,"Virtual Disk Manager 0.62",0);
|
DefineAndDrawWindow(170,150,314,270,0x74,system.color.work,"Virtual Disk Manager 0.65",0);
|
||||||
GetProcessInfo(#Form, SelfInfo);
|
GetProcessInfo(#Form, SelfInfo);
|
||||||
if (Form.status_window>2) break;
|
if (Form.status_window>2) break;
|
||||||
|
|
||||||
@ -202,6 +217,9 @@ unsigned int disk_pos_y[]={60,95,130, 60, 95, 130, 60, 95,130, 60, 85,130};
|
|||||||
|
|
||||||
void DrawTmpDisks()
|
void DrawTmpDisks()
|
||||||
{
|
{
|
||||||
|
dword selection_color;
|
||||||
|
dword selection_active = 0x0080FF;
|
||||||
|
dword selection_inactive = 0x757489;
|
||||||
char free_ram_text[60];
|
char free_ram_text[60];
|
||||||
byte i, real_id;
|
byte i, real_id;
|
||||||
int FreeRAM=GetFreeRAM()/1024;
|
int FreeRAM=GetFreeRAM()/1024;
|
||||||
@ -230,7 +248,8 @@ void DrawTmpDisks()
|
|||||||
WriteText(disk_pos_x[i]+25,disk_pos_y[i]+19, 0x80, 0x888888, ConvertSize(disk_sizes[real_id]));
|
WriteText(disk_pos_x[i]+25,disk_pos_y[i]+19, 0x80, 0x888888, ConvertSize(disk_sizes[real_id]));
|
||||||
_PutImage(disk_pos_x[i]+5,disk_pos_y[i]+4, 14,14, 2*14*14*3+#icons);
|
_PutImage(disk_pos_x[i]+5,disk_pos_y[i]+4, 14,14, 2*14*14*3+#icons);
|
||||||
if (selected==i) {
|
if (selected==i) {
|
||||||
DrawWideRectangle(disk_pos_x[i], disk_pos_y[i], 65, 30, 2, 0x0080FF);
|
if ( !asm test edit_disk_size.flags, 2) selection_color = selection_active; else selection_color = selection_inactive;
|
||||||
|
DrawWideRectangle(disk_pos_x[i], disk_pos_y[i], 65, 30, 2, selection_color);
|
||||||
PutPixel(disk_pos_x[i], disk_pos_y[i], 0xFFFfff);
|
PutPixel(disk_pos_x[i], disk_pos_y[i], 0xFFFfff);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user