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
|
||||
RealFileNamesCase=0
|
||||
InfoAfterCopy=0
|
||||
TimeDoubleClick=100
|
@ -257,7 +257,7 @@ void main()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
if (files.MouseOver(m.x, m.y)) && (!can_select)
|
||||
{
|
||||
m_selected = m.y - files.y / files.line_h;
|
||||
@ -304,6 +304,40 @@ void main()
|
||||
break;
|
||||
}
|
||||
// } 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)
|
||||
{
|
||||
|
@ -75,7 +75,7 @@ void FileMenu()
|
||||
if (!CheckActiveProcess(MenuForm.ID)) ExitProcess();
|
||||
mm.get();
|
||||
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;
|
||||
|
||||
case evKey:
|
||||
|
@ -104,7 +104,8 @@ 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, "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, "TimeDoubleClick", 50); MOUSE_TIME = EAX;
|
||||
|
||||
if (use_big_fonts)
|
||||
{
|
||||
font_type = 0x90;
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
char os_name[8] = {'M','E','N','U','E','T','0','1'};
|
||||
dword os_version = 0x00000001;
|
||||
dword start_addr = #main;
|
||||
dword start_addr = #load_init_main;
|
||||
dword final_addr = #stop+32;
|
||||
dword alloc_mem = MEMSIZE;
|
||||
dword x86esp_reg = MEMSIZE;
|
||||
@ -33,9 +33,9 @@ char program_path[4096];
|
||||
#define BT_NOFRAME 0x20000000
|
||||
|
||||
//Button mouse
|
||||
#define MOUSE_LEFT 100b
|
||||
#define MOUSE_RIGHT 001b
|
||||
#define MOUSE_CENTER 010b
|
||||
#define MOUSE_LEFT 001b
|
||||
#define MOUSE_RIGHT 010b
|
||||
#define MOUSE_CENTER 100b
|
||||
|
||||
//ASCII KEYS
|
||||
#define ASCII_KEY_BS 008
|
||||
@ -75,10 +75,14 @@ char program_path[4096];
|
||||
* down - key event press
|
||||
* up - key release events
|
||||
* move - event mouse movements
|
||||
* click - when clicked
|
||||
* dblclick - double-click the default 50 ms
|
||||
*/
|
||||
|
||||
dword __TMP_TIME,MOUSE_TIME;
|
||||
: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();
|
||||
};
|
||||
|
||||
@ -114,7 +118,10 @@ char program_path[4096];
|
||||
if((down)&&!(key)){
|
||||
up = true;
|
||||
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
|
||||
key = tmp;
|
||||
lkm = 1&tmp;
|
||||
@ -127,9 +134,14 @@ char program_path[4096];
|
||||
//when you press the mouse button
|
||||
else {
|
||||
up = false;
|
||||
if(key) down = true;
|
||||
click = false;
|
||||
dblclick = false;
|
||||
if(key)
|
||||
{
|
||||
down = true;
|
||||
tmp = key;
|
||||
}
|
||||
else down = false;
|
||||
if(down) tmp = key;
|
||||
if((xx!=x)||(yy!=y)){
|
||||
move = true;
|
||||
xx = x;
|
||||
@ -650,4 +662,14 @@ inline fastcall dword GetStartTime()
|
||||
$mov eax,26
|
||||
$mov ebx,9
|
||||
$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)
|
||||
// get pseudo-random number - ïîëó÷èòü ïñåâäîñëó÷àéíîå ÷èñëî
|
||||
{
|
||||
@ -30,11 +28,11 @@ inline fastcall int random( ECX)
|
||||
$xor eax,edx
|
||||
$not eax
|
||||
|
||||
EBX = generator;
|
||||
EBX = __generator;
|
||||
$ror ebx,3
|
||||
$xor ebx,0xdeadbeef
|
||||
EBX += EAX;
|
||||
generator = EBX;
|
||||
__generator = EBX;
|
||||
|
||||
EAX += EBX;
|
||||
EAX = EAX % ECX;
|
||||
@ -43,7 +41,7 @@ inline fastcall int random( ECX)
|
||||
}
|
||||
|
||||
inline fastcall randomize()
|
||||
// initialize random number generator - èíèöèàëèçèðîâàòü ãåíåðàòîð ñëó÷àéíûõ ÷èñåë
|
||||
// initialize random number __generator - èíèöèàëèçèðîâàòü ãåíåðàòîð ñëó÷àéíûõ ÷èñåë
|
||||
{
|
||||
asm
|
||||
{
|
||||
@ -51,5 +49,6 @@ inline fastcall randomize()
|
||||
int 0x40
|
||||
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;
|
||||
char s1,s2;
|
||||
@ -64,7 +64,7 @@ int strspn(dword text1,text2)
|
||||
return ret;
|
||||
}
|
||||
|
||||
dword strpbrk(dword text1,text2)
|
||||
inline dword strpbrk(dword text1,text2)
|
||||
{
|
||||
char s,ss;
|
||||
dword beg;
|
||||
@ -112,8 +112,15 @@ inline fastcall unsigned int strlen( EDI)
|
||||
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;
|
||||
dword p1,p2;
|
||||
@ -136,6 +143,30 @@ signed int strcmp(dword text1, text2)
|
||||
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)
|
||||
{
|
||||
@ -147,7 +178,7 @@ L2:
|
||||
$jnz L2
|
||||
}
|
||||
|
||||
void strncpy(dword text1, text2, signed len)
|
||||
inline dword strncpy(dword text1, text2, signed len)
|
||||
signed o1,o2;
|
||||
{
|
||||
o1 = len/4;
|
||||
@ -164,6 +195,8 @@ void strncpy(dword text1, text2, signed len)
|
||||
$inc text2
|
||||
$dec o2
|
||||
}
|
||||
ESBYTE[text1] = 0;
|
||||
return text1;
|
||||
}
|
||||
|
||||
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; }
|
||||
void strltrim(dword text){
|
||||
inline void strltrim(dword text){
|
||||
int s;
|
||||
dword back_text;
|
||||
back_text = text;
|
||||
@ -218,7 +251,7 @@ void strltrim(dword text){
|
||||
};
|
||||
}
|
||||
|
||||
void strrtrim(dword text)
|
||||
inline void strrtrim(dword text)
|
||||
{
|
||||
int s;
|
||||
dword p;
|
||||
@ -240,7 +273,7 @@ void strrtrim(dword text)
|
||||
if(__isWhite(s)) ESBYTE[p] = 0;
|
||||
}
|
||||
|
||||
void strtrim(dword text){
|
||||
inline void strtrim(dword text){
|
||||
int s;
|
||||
dword p,back_text;
|
||||
back_text = text;
|
||||
@ -578,7 +611,7 @@ F3:
|
||||
}
|
||||
*/
|
||||
|
||||
dword itoa(signed long number)
|
||||
inline dword itoa(signed long number)
|
||||
{
|
||||
unsigned char buf[11];
|
||||
dword ret;
|
||||
@ -653,7 +686,7 @@ F3:
|
||||
return EBX;
|
||||
}
|
||||
|
||||
dword strdup(dword text)
|
||||
inline dword strdup(dword text)
|
||||
{
|
||||
dword l = strlen(text);
|
||||
dword ret = malloc(l+1);
|
||||
@ -661,6 +694,20 @@ dword strdup(dword text)
|
||||
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)
|
||||
{
|
||||
char tmpch[12];
|
||||
|
Loading…
Reference in New Issue
Block a user