forked from KolibriOS/kolibrios
Fixed hover mouse Eolite. New features in Eolite (double-click). Also append new mouse events.
git-svn-id: svn://kolibrios.org@5575 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
936449ad66
commit
98eee70542
@ -4,3 +4,4 @@ LineHeight=18
|
|||||||
ShowDeviceName=1
|
ShowDeviceName=1
|
||||||
RealFileNamesCase=0
|
RealFileNamesCase=0
|
||||||
InfoAfterCopy=0
|
InfoAfterCopy=0
|
||||||
|
TimeDoubleClick=100
|
@ -257,7 +257,7 @@ void main()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
if (files.MouseOver(m.x, m.y)) && (!can_select)
|
if (files.MouseOver(m.x, m.y)) && (!can_select)
|
||||||
{
|
{
|
||||||
m_selected = m.y - files.y / files.line_h;
|
m_selected = m.y - files.y / files.line_h;
|
||||||
@ -304,6 +304,40 @@ void main()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// } file menu
|
// } file menu
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (files.MouseOver(m.x, m.y))&&(m.up)
|
||||||
|
{
|
||||||
|
//select/open file {
|
||||||
|
if (m.key&MOUSE_LEFT)
|
||||||
|
{
|
||||||
|
if (m.y>=files.y)//&&(m.click)
|
||||||
|
{
|
||||||
|
id = m.y - files.y / files.line_h;
|
||||||
|
if (files.current!=id)
|
||||||
|
{
|
||||||
|
if (id<files.visible) List_Current(id-files.current);
|
||||||
|
}
|
||||||
|
else if(m.dblclick)Open(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// } select/open file
|
||||||
|
else
|
||||||
|
//file menu {
|
||||||
|
if (m.key&MOUSE_RIGHT)
|
||||||
|
{
|
||||||
|
menu_call_mouse = 1;
|
||||||
|
if (m.y>=files.y)&&(m.click)
|
||||||
|
{
|
||||||
|
id = m.y - files.y / files.line_h;
|
||||||
|
if (files.current!=id) List_Current(id-files.current);
|
||||||
|
SwitchToAnotherThread();
|
||||||
|
CreateThread(#FileMenu,#menu_stak+4092);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// } file menu
|
||||||
|
}
|
||||||
|
|
||||||
if (m.vert)
|
if (m.vert)
|
||||||
{
|
{
|
||||||
|
@ -75,7 +75,7 @@ void FileMenu()
|
|||||||
if (!CheckActiveProcess(MenuForm.ID)) ExitProcess();
|
if (!CheckActiveProcess(MenuForm.ID)) ExitProcess();
|
||||||
mm.get();
|
mm.get();
|
||||||
if (menu.ProcessMouse(mm.x, mm.y)) MenuListRedraw();
|
if (menu.ProcessMouse(mm.x, mm.y)) MenuListRedraw();
|
||||||
if (mm.lkm) {action_buf = cur_action_buf; pause(5); ExitProcess(); }
|
if (mm.key&MOUSE_LEFT)&&(m.click) {action_buf = cur_action_buf; pause(5); ExitProcess(); }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case evKey:
|
case evKey:
|
||||||
|
@ -104,6 +104,7 @@ void LoadIniSettings()
|
|||||||
ini_get_int stdcall (eolite_ini_path, #confir_section, "InfoAfterCopy", 0); info_after_copy = EAX;
|
ini_get_int stdcall (eolite_ini_path, #confir_section, "InfoAfterCopy", 0); info_after_copy = EAX;
|
||||||
ini_get_int stdcall (eolite_ini_path, #confir_section, "UseBigFonts", 0); use_big_fonts = EAX;
|
ini_get_int stdcall (eolite_ini_path, #confir_section, "UseBigFonts", 0); use_big_fonts = EAX;
|
||||||
ini_get_int stdcall (eolite_ini_path, #confir_section, "LineHeight", 18); files.line_h = EAX;
|
ini_get_int stdcall (eolite_ini_path, #confir_section, "LineHeight", 18); files.line_h = EAX;
|
||||||
|
ini_get_int stdcall (eolite_ini_path, #confir_section, "TimeDoubleClick", 50); MOUSE_TIME = EAX;
|
||||||
|
|
||||||
if (use_big_fonts)
|
if (use_big_fonts)
|
||||||
{
|
{
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
char os_name[8] = {'M','E','N','U','E','T','0','1'};
|
char os_name[8] = {'M','E','N','U','E','T','0','1'};
|
||||||
dword os_version = 0x00000001;
|
dword os_version = 0x00000001;
|
||||||
dword start_addr = #main;
|
dword start_addr = #load_init_main;
|
||||||
dword final_addr = #stop+32;
|
dword final_addr = #stop+32;
|
||||||
dword alloc_mem = MEMSIZE;
|
dword alloc_mem = MEMSIZE;
|
||||||
dword x86esp_reg = MEMSIZE;
|
dword x86esp_reg = MEMSIZE;
|
||||||
@ -33,9 +33,9 @@ char program_path[4096];
|
|||||||
#define BT_NOFRAME 0x20000000
|
#define BT_NOFRAME 0x20000000
|
||||||
|
|
||||||
//Button mouse
|
//Button mouse
|
||||||
#define MOUSE_LEFT 100b
|
#define MOUSE_LEFT 001b
|
||||||
#define MOUSE_RIGHT 001b
|
#define MOUSE_RIGHT 010b
|
||||||
#define MOUSE_CENTER 010b
|
#define MOUSE_CENTER 100b
|
||||||
|
|
||||||
//ASCII KEYS
|
//ASCII KEYS
|
||||||
#define ASCII_KEY_BS 008
|
#define ASCII_KEY_BS 008
|
||||||
@ -75,10 +75,14 @@ char program_path[4096];
|
|||||||
* down - key event press
|
* down - key event press
|
||||||
* up - key release events
|
* up - key release events
|
||||||
* move - event mouse movements
|
* move - event mouse movements
|
||||||
|
* click - when clicked
|
||||||
|
* dblclick - double-click the default 50 ms
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
dword __TMP_TIME,MOUSE_TIME;
|
||||||
:struct mouse
|
:struct mouse
|
||||||
{
|
{
|
||||||
signed x,y,xx,yy,lkm,mkm,pkm,key,tmp,hor,vert,down,up,move;
|
signed x,y,xx,yy,lkm,mkm,pkm,key,tmp,tmp_time,hor,vert,down,up,move,click,dblclick;
|
||||||
void get();
|
void get();
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -114,7 +118,10 @@ char program_path[4096];
|
|||||||
if((down)&&!(key)){
|
if((down)&&!(key)){
|
||||||
up = true;
|
up = true;
|
||||||
down = false;
|
down = false;
|
||||||
|
if(!move) click = true;
|
||||||
|
__TMP_TIME = GetStartTime();
|
||||||
|
if(__TMP_TIME-tmp_time<=MOUSE_TIME) dblclick = true;
|
||||||
|
tmp_time = __TMP_TIME;
|
||||||
//returns the key code
|
//returns the key code
|
||||||
key = tmp;
|
key = tmp;
|
||||||
lkm = 1&tmp;
|
lkm = 1&tmp;
|
||||||
@ -127,9 +134,14 @@ char program_path[4096];
|
|||||||
//when you press the mouse button
|
//when you press the mouse button
|
||||||
else {
|
else {
|
||||||
up = false;
|
up = false;
|
||||||
if(key) down = true;
|
click = false;
|
||||||
|
dblclick = false;
|
||||||
|
if(key)
|
||||||
|
{
|
||||||
|
down = true;
|
||||||
|
tmp = key;
|
||||||
|
}
|
||||||
else down = false;
|
else down = false;
|
||||||
if(down) tmp = key;
|
|
||||||
if((xx!=x)||(yy!=y)){
|
if((xx!=x)||(yy!=y)){
|
||||||
move = true;
|
move = true;
|
||||||
xx = x;
|
xx = x;
|
||||||
@ -651,3 +663,13 @@ inline fastcall dword GetStartTime()
|
|||||||
$mov ebx,9
|
$mov ebx,9
|
||||||
$int 0x40
|
$int 0x40
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dword __generator; // random number generator - äëÿ ãåíåðàöèè ñëó÷àéíûõ ÷èñåë
|
||||||
|
|
||||||
|
//The initialization of the initial data before running
|
||||||
|
void load_init_main()
|
||||||
|
{
|
||||||
|
MOUSE_TIME = 50; //Default 50 ms.
|
||||||
|
__generator = GetStartTime();
|
||||||
|
main();
|
||||||
|
}
|
@ -19,8 +19,6 @@
|
|||||||
|
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
dword generator; // random number generator - äëÿ ãåíåðàöèè ñëó÷àéíûõ ÷èñåë
|
|
||||||
|
|
||||||
inline fastcall int random( ECX)
|
inline fastcall int random( ECX)
|
||||||
// get pseudo-random number - ïîëó÷èòü ïñåâäîñëó÷àéíîå ÷èñëî
|
// get pseudo-random number - ïîëó÷èòü ïñåâäîñëó÷àéíîå ÷èñëî
|
||||||
{
|
{
|
||||||
@ -30,11 +28,11 @@ inline fastcall int random( ECX)
|
|||||||
$xor eax,edx
|
$xor eax,edx
|
||||||
$not eax
|
$not eax
|
||||||
|
|
||||||
EBX = generator;
|
EBX = __generator;
|
||||||
$ror ebx,3
|
$ror ebx,3
|
||||||
$xor ebx,0xdeadbeef
|
$xor ebx,0xdeadbeef
|
||||||
EBX += EAX;
|
EBX += EAX;
|
||||||
generator = EBX;
|
__generator = EBX;
|
||||||
|
|
||||||
EAX += EBX;
|
EAX += EBX;
|
||||||
EAX = EAX % ECX;
|
EAX = EAX % ECX;
|
||||||
@ -43,7 +41,7 @@ inline fastcall int random( ECX)
|
|||||||
}
|
}
|
||||||
|
|
||||||
inline fastcall randomize()
|
inline fastcall randomize()
|
||||||
// initialize random number generator - èíèöèàëèçèðîâàòü ãåíåðàòîð ñëó÷àéíûõ ÷èñåë
|
// initialize random number __generator - èíèöèàëèçèðîâàòü ãåíåðàòîð ñëó÷àéíûõ ÷èñåë
|
||||||
{
|
{
|
||||||
asm
|
asm
|
||||||
{
|
{
|
||||||
@ -51,5 +49,6 @@ inline fastcall randomize()
|
|||||||
int 0x40
|
int 0x40
|
||||||
ror eax,16
|
ror eax,16
|
||||||
}
|
}
|
||||||
generator = EAX;
|
__generator = EAX;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ inline fastcall signed int strcmp( ESI, EDI)
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int strspn(dword text1,text2)
|
inline int strspn(dword text1,text2)
|
||||||
{
|
{
|
||||||
dword beg;
|
dword beg;
|
||||||
char s1,s2;
|
char s1,s2;
|
||||||
@ -64,7 +64,7 @@ int strspn(dword text1,text2)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
dword strpbrk(dword text1,text2)
|
inline dword strpbrk(dword text1,text2)
|
||||||
{
|
{
|
||||||
char s,ss;
|
char s,ss;
|
||||||
dword beg;
|
dword beg;
|
||||||
@ -112,8 +112,15 @@ inline fastcall unsigned int strlen( EDI)
|
|||||||
EAX-=2+ECX;
|
EAX-=2+ECX;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline strnlen(dword str, dword maxlen)
|
||||||
|
{
|
||||||
|
dword cp;
|
||||||
|
for (cp = str; (maxlen != 0) && (DSBYTE[cp] != '\0'); cp++, maxlen--);
|
||||||
|
return cp - str;
|
||||||
|
}
|
||||||
|
|
||||||
signed int strcmp(dword text1, text2)
|
|
||||||
|
inline signed int strcmp(dword text1, text2)
|
||||||
{
|
{
|
||||||
char s1,s2;
|
char s1,s2;
|
||||||
dword p1,p2;
|
dword p1,p2;
|
||||||
@ -136,6 +143,30 @@ signed int strcmp(dword text1, text2)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
signed int strncmp(dword s1, s2, signed n)
|
||||||
|
unsigned char _s1,_s2;
|
||||||
|
{
|
||||||
|
if (n == 0)
|
||||||
|
return 0;
|
||||||
|
do {
|
||||||
|
_s1 = DSBYTE[s1];
|
||||||
|
_s2 = DSBYTE[s2];
|
||||||
|
if (_s1 != _s2)
|
||||||
|
{
|
||||||
|
$dec s2
|
||||||
|
return _s1 - _s2;
|
||||||
|
}
|
||||||
|
$inc s2
|
||||||
|
if (_s1 == 0)
|
||||||
|
break;
|
||||||
|
$inc s1
|
||||||
|
$dec n
|
||||||
|
} while (n);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
inline fastcall void strcpy( EDI, ESI)
|
inline fastcall void strcpy( EDI, ESI)
|
||||||
{
|
{
|
||||||
@ -147,7 +178,7 @@ L2:
|
|||||||
$jnz L2
|
$jnz L2
|
||||||
}
|
}
|
||||||
|
|
||||||
void strncpy(dword text1, text2, signed len)
|
inline dword strncpy(dword text1, text2, signed len)
|
||||||
signed o1,o2;
|
signed o1,o2;
|
||||||
{
|
{
|
||||||
o1 = len/4;
|
o1 = len/4;
|
||||||
@ -164,6 +195,8 @@ void strncpy(dword text1, text2, signed len)
|
|||||||
$inc text2
|
$inc text2
|
||||||
$dec o2
|
$dec o2
|
||||||
}
|
}
|
||||||
|
ESBYTE[text1] = 0;
|
||||||
|
return text1;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fastcall int strlcpy(dword ESI, EDI, EBX)
|
inline fastcall int strlcpy(dword ESI, EDI, EBX)
|
||||||
@ -198,7 +231,7 @@ inline fastcall void strtrim( ESI)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
byte __isWhite(int s){ if (s==13)||(s==32)||(s==10)||(s==9) return true; return false; }
|
byte __isWhite(int s){ if (s==13)||(s==32)||(s==10)||(s==9) return true; return false; }
|
||||||
void strltrim(dword text){
|
inline void strltrim(dword text){
|
||||||
int s;
|
int s;
|
||||||
dword back_text;
|
dword back_text;
|
||||||
back_text = text;
|
back_text = text;
|
||||||
@ -218,7 +251,7 @@ void strltrim(dword text){
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
void strrtrim(dword text)
|
inline void strrtrim(dword text)
|
||||||
{
|
{
|
||||||
int s;
|
int s;
|
||||||
dword p;
|
dword p;
|
||||||
@ -240,7 +273,7 @@ void strrtrim(dword text)
|
|||||||
if(__isWhite(s)) ESBYTE[p] = 0;
|
if(__isWhite(s)) ESBYTE[p] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void strtrim(dword text){
|
inline void strtrim(dword text){
|
||||||
int s;
|
int s;
|
||||||
dword p,back_text;
|
dword p,back_text;
|
||||||
back_text = text;
|
back_text = text;
|
||||||
@ -578,7 +611,7 @@ F3:
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
dword itoa(signed long number)
|
inline dword itoa(signed long number)
|
||||||
{
|
{
|
||||||
unsigned char buf[11];
|
unsigned char buf[11];
|
||||||
dword ret;
|
dword ret;
|
||||||
@ -653,7 +686,7 @@ F3:
|
|||||||
return EBX;
|
return EBX;
|
||||||
}
|
}
|
||||||
|
|
||||||
dword strdup(dword text)
|
inline dword strdup(dword text)
|
||||||
{
|
{
|
||||||
dword l = strlen(text);
|
dword l = strlen(text);
|
||||||
dword ret = malloc(l+1);
|
dword ret = malloc(l+1);
|
||||||
@ -661,6 +694,20 @@ dword strdup(dword text)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline dword strndup(dword str, signed maxlen)
|
||||||
|
{
|
||||||
|
dword copy,len;
|
||||||
|
|
||||||
|
len = strnlen(str, maxlen);
|
||||||
|
copy = malloc(len + 1);
|
||||||
|
if (copy != NULL)
|
||||||
|
{
|
||||||
|
memcpy(copy, str, len);
|
||||||
|
DSBYTE[len+copy] = '\0';
|
||||||
|
}
|
||||||
|
return copy;
|
||||||
|
}
|
||||||
|
|
||||||
void debugi(dword d_int)
|
void debugi(dword d_int)
|
||||||
{
|
{
|
||||||
char tmpch[12];
|
char tmpch[12];
|
||||||
|
Loading…
Reference in New Issue
Block a user