forked from KolibriOS/kolibrios
WebView 1.83:
- hack to show all text on the page, even if Y>32000 - open urls with #tag in the end - fix page open for some cases git-svn-id: svn://kolibrios.org@7739 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
e1d611df85
commit
0cee7aa77a
@ -1,5 +1,5 @@
|
|||||||
//HTML Viewer in C--
|
//HTML Viewer in C--
|
||||||
//Copyright 2007-2019 by Veliant & Leency
|
//Copyright 2007-2020 by Veliant & Leency
|
||||||
//Asper, lev, Lrz, Barsuk, Nable, hidnplayr...
|
//Asper, lev, Lrz, Barsuk, Nable, hidnplayr...
|
||||||
|
|
||||||
#ifndef AUTOBUILD
|
#ifndef AUTOBUILD
|
||||||
@ -31,7 +31,7 @@ _http http = {0, 0, 0, 0, 0, 0, 0};
|
|||||||
char homepage[] = FROM "html\\homepage.htm""\0";
|
char homepage[] = FROM "html\\homepage.htm""\0";
|
||||||
|
|
||||||
#ifdef LANG_RUS
|
#ifdef LANG_RUS
|
||||||
char version[]="’¥ªáâ®¢ë© ¡à 㧥à 1.82";
|
char version[]="’¥ªáâ®¢ë© ¡à 㧥à 1.83";
|
||||||
?define IMAGES_CACHE_CLEARED "Šíè ª à⨮ª ®ç¨é¥"
|
?define IMAGES_CACHE_CLEARED "Šíè ª à⨮ª ®ç¨é¥"
|
||||||
?define T_LAST_SLIDE "<EFBFBD>â® ¯®á«¥¤¨© á« ©¤"
|
?define T_LAST_SLIDE "<EFBFBD>â® ¯®á«¥¤¨© á« ©¤"
|
||||||
char loading[] = "‡ £à㧪 áâà ¨æë...<br>";
|
char loading[] = "‡ £à㧪 áâà ¨æë...<br>";
|
||||||
@ -46,7 +46,7 @@ char link_menu[] =
|
|||||||
"Š®¯¨à®¢ âì áá뫪ã
|
"Š®¯¨à®¢ âì áá뫪ã
|
||||||
‘ª ç âì ᮤ¥à¦¨¬®¥ áá뫪¨";
|
‘ª ç âì ᮤ¥à¦¨¬®¥ áá뫪¨";
|
||||||
#else
|
#else
|
||||||
char version[]="Text-based Browser 1.82";
|
char version[]="Text-based Browser 1.83";
|
||||||
?define IMAGES_CACHE_CLEARED "Images cache cleared"
|
?define IMAGES_CACHE_CLEARED "Images cache cleared"
|
||||||
?define T_LAST_SLIDE "This slide is the last"
|
?define T_LAST_SLIDE "This slide is the last"
|
||||||
char loading[] = "Loading...<br>";
|
char loading[] = "Loading...<br>";
|
||||||
@ -426,6 +426,7 @@ void OpenPage()
|
|||||||
SetPageDefaults();
|
SetPageDefaults();
|
||||||
if (!strcmp(#URL, URL_SERVICE_HOME)) WB1.LoadInternalPage(#homepage, sizeof(homepage));
|
if (!strcmp(#URL, URL_SERVICE_HOME)) WB1.LoadInternalPage(#homepage, sizeof(homepage));
|
||||||
else if (!strcmp(#URL, URL_SERVICE_HISTORY)) ShowHistory();
|
else if (!strcmp(#URL, URL_SERVICE_HISTORY)) ShowHistory();
|
||||||
|
else {bufsize=0; ShowPage();} //page not found
|
||||||
DrawEditBoxWebView();
|
DrawEditBoxWebView();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -454,9 +455,9 @@ void OpenPage()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
file_size stdcall (#URL);
|
file_size stdcall (#URL);
|
||||||
bufsize = EBX;
|
if (EBX)
|
||||||
if (bufsize)
|
|
||||||
{
|
{
|
||||||
|
bufsize = EBX;
|
||||||
free(bufpointer);
|
free(bufpointer);
|
||||||
bufpointer = malloc(bufsize);
|
bufpointer = malloc(bufsize);
|
||||||
SetPageDefaults();
|
SetPageDefaults();
|
||||||
@ -509,8 +510,9 @@ void DrawProgress()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
char anchor[256];
|
|
||||||
void ClickLink()
|
void ClickLink()
|
||||||
|
char anchor[256];
|
||||||
|
int anchor_pos;
|
||||||
{
|
{
|
||||||
if (http.transfer > 0)
|
if (http.transfer > 0)
|
||||||
{
|
{
|
||||||
@ -537,10 +539,17 @@ void ClickLink()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
//liner.ru#1
|
//liner.ru#1
|
||||||
if (strrchr(#URL, '#')!=0)
|
else if (strrchr(#URL, '#')!=0)
|
||||||
{
|
{
|
||||||
strlcpy(#anchor, #URL+strrchr(#URL, '#'), sizeof(anchor));
|
anchor_pos = strrchr(#URL, '#')-1;
|
||||||
URL[strrchr(#URL, '#')-1] = 0x00;
|
strlcpy(#anchor, #URL+anchor_pos, sizeof(anchor));
|
||||||
|
URL[anchor_pos] = 0x00;
|
||||||
|
OpenPage();
|
||||||
|
strcat(#editURL, #anchor);
|
||||||
|
DrawEditBoxWebView();
|
||||||
|
if (anchors.get_anchor_pos(#anchor+1)!=-1) WB1.list.first = anchors.get_anchor_pos(#anchor+1);
|
||||||
|
WB1.DrawPage();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strncmp(#URL,"mailto:", 7))
|
if (!strncmp(#URL,"mailto:", 7))
|
||||||
|
@ -7,16 +7,16 @@ ShowHistory()
|
|||||||
free(history_pointer);
|
free(history_pointer);
|
||||||
history_pointer = malloc(history.items.data_size+256);
|
history_pointer = malloc(history.items.data_size+256);
|
||||||
strcat(history_pointer, "<html><head><title>History</title></head><body><h1>History</h1>");
|
strcat(history_pointer, "<html><head><title>History</title></head><body><h1>History</h1>");
|
||||||
strcat(history_pointer, "<h2>Visited pages</h2><blockquote><br>");
|
strcat(history_pointer, "<br><b>Visited pages</b><br>");
|
||||||
for (i=0; i<history.items.count; i++)
|
for (i=0; i<history.items.count; i++)
|
||||||
{
|
{
|
||||||
strcat(history_pointer, " <a href='");
|
strcat(history_pointer, " <a href='");
|
||||||
strcat(history_pointer, history.items.get(i));
|
strcat(history_pointer, history.items.get(i));
|
||||||
strcat(history_pointer, "'>");
|
strcat(history_pointer, "'>");
|
||||||
strcat(history_pointer, history.items.get(i));
|
strcat(history_pointer, history.items.get(i));
|
||||||
strcat(history_pointer, "</a><br>");
|
strcat(history_pointer, "</a><br>");
|
||||||
}
|
}
|
||||||
strcat(history_pointer, "</blockquote><h2>Cached images</h2>");
|
strcat(history_pointer, "<br><b>Cached images</b>");
|
||||||
for (i=1; i<ImgCache.pics_count; i++)
|
for (i=1; i<ImgCache.pics_count; i++)
|
||||||
{
|
{
|
||||||
strcat(history_pointer, "<img src='");
|
strcat(history_pointer, "<img src='");
|
||||||
|
@ -65,15 +65,31 @@ void DrawBufer::DrawBar(dword x, y, w, h, color)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawBuf_WriteText(dword x, y, byte fontType, dword color, str_offset)
|
|
||||||
{
|
|
||||||
EDI = buf_data;
|
|
||||||
WriteText(x, y, fontType, color, str_offset);
|
|
||||||
}
|
|
||||||
void DrawBufer::WriteText(dword x, y, byte fontType, dword color, str_offset)
|
void DrawBufer::WriteText(dword x, y, byte fontType, dword color, str_offset)
|
||||||
{
|
{
|
||||||
|
#define BUGFIX_32000 32000
|
||||||
|
int ydiv=0;
|
||||||
|
dword reserve_data_1, reserve_data_2;
|
||||||
|
dword new_buf_offset;
|
||||||
if (y + 30 >= bufh) IncreaseBufSize();
|
if (y + 30 >= bufh) IncreaseBufSize();
|
||||||
DrawBuf_WriteText(x, y, fontType, color, str_offset);
|
if (y < BUGFIX_32000) {
|
||||||
|
WriteBufText(x, y, fontType, color, str_offset, buf_data);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ydiv = y / BUGFIX_32000 * BUGFIX_32000;
|
||||||
|
y -= ydiv;
|
||||||
|
new_buf_offset = ydiv * bufw * 4 + buf_data;
|
||||||
|
|
||||||
|
reserve_data_1 = ESDWORD[new_buf_offset];
|
||||||
|
reserve_data_2 = ESDWORD[new_buf_offset+4];
|
||||||
|
|
||||||
|
ESDWORD[new_buf_offset] = bufw;
|
||||||
|
ESDWORD[new_buf_offset+4] = bufh - y;
|
||||||
|
WriteBufText(x, y, fontType, color, str_offset, new_buf_offset);
|
||||||
|
|
||||||
|
ESDWORD[new_buf_offset] = reserve_data_1;
|
||||||
|
ESDWORD[new_buf_offset+4] = reserve_data_2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawBufer::PutPixel(dword x, y, color)
|
void DrawBufer::PutPixel(dword x, y, color)
|
||||||
|
Loading…
Reference in New Issue
Block a user