list_box.h: no_selection flag for lists without selection (for example, browser)

git-svn-id: svn://kolibrios.org@5779 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2015-08-29 20:14:17 +00:00
parent 1677400b53
commit 2b2d0c2f0e
4 changed files with 24 additions and 24 deletions

View File

@ -112,6 +112,7 @@ void main()
if (param) strcpy(#URL, #param); else strcpy(#URL, URL_SERVICE_HOME); if (param) strcpy(#URL, #param); else strcpy(#URL, URL_SERVICE_HOME);
WB1.DrawBuf.zoom = 1; WB1.DrawBuf.zoom = 1;
WB1.list.SetFont(8, 14, 10111000b); WB1.list.SetFont(8, 14, 10111000b);
WB1.list.no_selection = true;
SetEventMask(0xa7); SetEventMask(0xa7);
BEGIN_LOOP_APPLICATION: BEGIN_LOOP_APPLICATION:
WaitEventTimeout(2); WaitEventTimeout(2);
@ -280,7 +281,8 @@ void Draw_Window()
void Scan(dword id__) void Scan(dword id__)
{ {
action_buf=0; action_buf=0;
switch (id__) if (WB1.list.ProcessKey(key_scancode)) WB1.DrawPage();
else switch (id__)
{ {
case SCAN_CODE_BS: case SCAN_CODE_BS:
case BACK_BUTTON: case BACK_BUTTON:
@ -291,22 +293,6 @@ void Scan(dword id__)
if (!BrowserHistory.GoForward()) return; if (!BrowserHistory.GoForward()) return;
OpenPage(); OpenPage();
return; return;
case SCAN_CODE_HOME:
case SCAN_CODE_END:
case SCAN_CODE_PGUP:
case SCAN_CODE_PGDN:
if (WB1.list.ProcessKey(key_scancode)) WB1.DrawPage();
return;
case SCAN_CODE_UP:
if (WB1.list.first <= 0) return;
WB1.list.first--;
WB1.DrawPage();
return;
case SCAN_CODE_DOWN:
if (WB1.list.visible + WB1.list.first >= WB1.list.count) return;
WB1.list.first++;
WB1.DrawPage();
return;
case GOTOURL_BUTTON: case GOTOURL_BUTTON:
case SCAN_CODE_ENTER: case SCAN_CODE_ENTER:
if (!strncmp(#editURL,"http:",5)) || (editURL[0]=='/') || (!strncmp(#editURL,"WebView:",9)) if (!strncmp(#editURL,"http:",5)) || (editURL[0]=='/') || (!strncmp(#editURL,"WebView:",9))

View File

@ -103,12 +103,24 @@ 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;
int GetKeys() int GetKeys()
{ {
$push edx
GETKEY:
$mov eax,2 $mov eax,2
$int 0x40 $int 0x40
$cmp eax,1
$jne GETKEYI
$mov eax,edx
$jmp GETKEYII
GETKEYI:
$mov edx,eax
$jmp GETKEY
GETKEYII:
$pop edx
key_ascii = AH; key_ascii = AH;
$shr eax,16 $shr eax,16
key_scancode = AL; key_scancode = AL;

View File

@ -10,10 +10,11 @@
struct llist struct llist
{ {
int x, y, w, h, line_h, text_y; int x, y, w, h, line_h, text_y;
dword font_w, font_h, font_type;
int count, visible, first, current, column_max; //visible = row_max int count, visible, first, current, column_max; //visible = row_max
int wheel_size; dword font_w, font_h, font_type;
int active; byte wheel_size;
byte active;
byte no_selection;
void ClearList(); void ClearList();
int MouseOver(int xx, yy); int MouseOver(int xx, yy);
int ProcessMouse(int xx, yy); int ProcessMouse(int xx, yy);
@ -125,7 +126,7 @@ int llist::ProcessKey(dword key)
int llist::KeyDown() int llist::KeyDown()
{ {
if (current-first+1<visible) if (current-first+1<visible) && (!no_selection)
{ {
if (current + 1 >= count) return 0; if (current + 1 >= count) return 0;
current++; current++;
@ -146,7 +147,7 @@ int llist::KeyDown()
int llist::KeyUp() int llist::KeyUp()
{ {
if (current > first) if (current > first) && (!no_selection)
{ {
current--; current--;
} }

View File

@ -146,6 +146,7 @@ void MailBoxLoop() {
mail_list.h = Form.cheight/4; mail_list.h = Form.cheight/4;
mail_list.ClearList(); mail_list.ClearList();
WB1.list.no_selection = true;
SetMailBoxStatus( NULL , NULL); SetMailBoxStatus( NULL , NULL);
cur_charset = 0; cur_charset = 0;
aim = SEND_NSTAT; aim = SEND_NSTAT;