HTMLv: fix links

git-svn-id: svn://kolibrios.org@4493 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2014-01-19 23:48:36 +00:00
parent e50945c8bc
commit de57cc6ce9
3 changed files with 62 additions and 10 deletions

View File

@ -6,7 +6,6 @@ int downloader_id;
dword buf;
dword filesize;
dword blink;
#define URL param
@ -97,8 +96,9 @@ void TWebBrowser::DrawPage()
IF (s_text) DrawBuf.DrawBar(start_x, 4, line_length, 1, text_colors[text_color_index]);
IF (u_text) DrawBuf.DrawBar(start_x, 8, line_length, 1, text_colors[text_color_index]);
IF (link) {
UnsafeDefineButton(start_x-2, start_y, line_length + 3, 9, blink + BT_HIDE, 0xB5BFC9);
UnsafeDefineButton(start_x-2, start_y, line_length + 3, 9, PageLinks.count + 400 + BT_HIDE, 0xB5BFC9);
DrawBuf.DrawBar(start_x, 8, line_length, 1, text_colors[text_color_index]);
PageLinks.AddText(#line, line_length, list.line_h);
}
stolbec += strlen(#line);
}
@ -179,6 +179,7 @@ void TWebBrowser::ShowPage()
address_box.size = address_box.pos = strlen(#editURL);
address_box.offset=0;
edit_box_draw stdcall(#address_box);
PageLinks.Clear();
if (!filesize)
{
@ -206,7 +207,6 @@ void TWebBrowser::ParseHTML(dword bword){
byte ignor_param;
char temp[768];
if (blink<400) blink=400; else for ( ; blink>400; blink--;) DeleteButton(blink);
b_text = i_text = u_text = s_text = blq_text =
li_text = link = ignor_text = text_color_index = text_colors[0] = li_tab =
condition_text_val = condition_text_active = 0; //îáíóëÿåì òåãè
@ -216,7 +216,6 @@ void TWebBrowser::ParseHTML(dword bword){
link_color_active = 0xFF0000;
bg_color = 0xFFFFFF;
DrawBuf.Fill(bg_color);
PageLinks.Clear();
strcpy(#header, #version);
stroka = -list.first;
stolbec = 0;
@ -462,7 +461,6 @@ void TWebBrowser::WhatTextStyle(int left1, top1, width1) {
text_colors[text_color_index] = text_colors[text_color_index-1];
link = 1;
blink++;
text_colors[text_color_index] = link_color_inactive;
PageLinks.AddLink(#options, stolbec*6+left1, top1);
}
@ -477,7 +475,6 @@ void TWebBrowser::WhatTextStyle(int left1, top1, width1) {
}
else {
link = 0;
PageLinks.AddText(#line, strlen(#line)*6, list.line_h);
IF(text_color_index > 0) text_color_index--;
}
return;

View File

@ -96,7 +96,7 @@ void ImageCache::Images(int left1, top1, width1)
img_draw stdcall (pics[cur_pic].image, left1-5, top1, w, h,0,img_lines_first);
DrawBar(left1+w - 5, top1, WB1.list.w-w, h, bg_color);
IF (link) UnsafeDefineButton(left1 - 5, top1, w, h-1, blink + BT_HIDE, 0xB5BFC9);
IF (link) UnsafeDefineButton(left1 - 5, top1, w, h-1, PageLinks.count + 400 + BT_HIDE, 0xB5BFC9);
}
ImageCache ImgCache;

View File

@ -5,8 +5,8 @@ struct array_link {
struct LinksArray
{
array_link links[100];
char page_links[12000];
array_link links[200];
char page_links[64000];
dword buflen;
int count, active;
@ -46,6 +46,8 @@ dword LinksArray::GetURL(int id)
void LinksArray::Clear()
{
int i;
for (i=0; i<=count; i++) DeleteButton(i+400);
buflen = #page_links;
count = 0;
active = -1;
@ -74,3 +76,56 @@ void LinksArray::Hover(dword mx, my, link_col_in, link_col_a, bg_col)
LinksArray PageLinks;
/*
------------------ Подфункция 4 - загрузить курсор -------------------
Параметры:
* eax = 37 - номер функции
* ebx = 4 - номер подфункции
* dx = источник данных:
* dx = LOAD_FROM_FILE = 0 - данные в файле
* ecx = указатель на полный путь к файлу курсора
* файл курсора должен быть в формате .cur, стандартном для
MS Windows, причём размером 32*32 пикселя
* dx = LOAD_FROM_MEM = 1 - данные файла уже загружены в память
* ecx = указатель на данные файла курсора
* формат данных такой же, как и в предыдущем случае
* dx = LOAD_INDIRECT = 2 - данные в памяти
* ecx = указатель на образ курсора в формате ARGB 32*32 пикселя
* edx = 0xXXYY0002, где
* XX = x-координата "горячей точки" курсора
* YY = y-координата
* 0 <= XX, YY <= 31
Возвращаемое значение:
* eax = 0 - неудача
* иначе eax = хэндл курсора
------------------ Подфункция 5 - установить курсор ------------------
Устанавливает новый курсор для окна текущего потока.
Параметры:
* eax = 37 - номер функции
* ebx = 5 - номер подфункции
* ecx = хэндл курсора
Возвращаемое значение:
* eax = хэндл предыдущего установленного курсора
Замечания:
* Если передан некорректный хэндл, то функция восстановит курсор
по умолчанию (стандартную стрелку). В частности, к восстановлению
курсора по умолчанию приводит передача ecx=0.
------------------- Подфункция 6 - удалить курсор --------------------
Параметры:
* eax = 37 - номер функции
* ebx = 6 - номер подфункции
* ecx = хэндл курсора
Возвращаемое значение:
* eax разрушается
Замечания:
* Курсор должен был быть ранее загружен текущим потоком
(вызовом подфункции 4). Функция не удаляет системные курсоры и
курсоры, загруженные другими приложениями.
* Если удаляется активный (установленный подфункцией 5) курсор, то
восстанавливается курсор по умолчанию (стандартная стрелка).
*/