diff --git a/programs/cmm/TWB/TWB.c b/programs/cmm/TWB/TWB.c
index 30763f249a..b0d8b28835 100644
--- a/programs/cmm/TWB/TWB.c
+++ b/programs/cmm/TWB/TWB.c
@@ -46,6 +46,7 @@ dword text_color_index;
dword link_color_inactive;
dword link_color_active;
dword bg_color;
+dword block_bg_color;
int stroka;
int stolbec;
@@ -124,7 +125,7 @@ void TWebBrowser::Prepare(){
style.align = ALIGN_LEFT;
link_color_inactive = 0x0000FF;
link_color_active = 0xFF0000;
- bg_color = 0xFFFFFF;
+ bg_color = block_bg_color = 0xFFFFFF;
DrawBuf.Fill(bg_color);
PageLinks.Clear();
strcpy(#header, #version);
@@ -289,7 +290,7 @@ void TWebBrowser::SetStyle() {
if (isattr("text=")) text_colors[0]=GetColor(#val);
if (isattr("bgcolor="))
{
- bg_color=GetColor(#val);
+ bg_color = block_bg_color = GetColor(#val);
DrawBuf.Fill(bg_color);
}
} while(GetNextParam());
@@ -336,13 +337,12 @@ void TWebBrowser::SetStyle() {
else if (text_color_index > 0) text_color_index--;
return;
}
+ if (istag("bg")) {
+ if (opened) {block_bg_color=GetColor(#val); NewLine();}
+ if (!opened) block_bg_color=bg_color;
+ }
if (istag("div")) || (istag("header")) || (istag("article")) || (istag("footer")) {
IF(oldtag[0] != 'h') NewLine();
- if (isattr("bgcolor="))
- {
- bg_color=GetColor(#val);
- DrawBuf.Fill(bg_color);
- }
return;
}
if (istag("p")) {
@@ -475,6 +475,7 @@ void TWebBrowser::NewLine()
onleft = list.x + 5;
ontop = stroka * list.item_h + list.y + 5;
if (t_html) && (!t_body) return;
+ if (block_bg_color!=bg_color) DrawBuf.DrawBar(0, stroka+1*list.item_h+5, DrawBuf.bufw, list.item_h, block_bg_color);
if (stroka * list.item_h + 5 >= 0) && ( stroka + 1 * list.item_h + 5 < list.h) && (!anchor)
{
if (style.align == ALIGN_CENTER) && (DrawBuf.zoom==1) DrawBuf.AlignCenter(onleft,ontop,list.w,list.item_h,stolbec * list.font_w);
@@ -485,9 +486,9 @@ void TWebBrowser::NewLine()
if (style.li) stolbec = style.li_tab * 5;
}
//============================================================================================
-int istag(dword text) { if (!strcmp(#tag,text)) return 1; else return 0; }
-int isattr(dword text) { if (!strcmp(#attr,text)) return 1; else return 0; }
-int isval(dword text) { if (!strcmp(#val,text)) return 1; else return 0; }
+int istag(dword text) { if (!strcmp(#tag,text)) return true; else return false; }
+int isattr(dword text) { if (!strcmp(#attr,text)) return true; else return false; }
+int isval(dword text) { if (!strcmp(#val,text)) return true; else return false; }
//============================================================================================
void TWebBrowser::DrawPage()
{
diff --git a/programs/cmm/TWB/acid_0.1.htm b/programs/cmm/TWB/acid_0.1.htm
index 936e62d97e..fabb5ba6e8 100644
--- a/programs/cmm/TWB/acid_0.1.htm
+++ b/programs/cmm/TWB/acid_0.1.htm
@@ -34,6 +34,7 @@
+
Небольшой список:
Этот текст в кавычках
- Это подчеркнутый текст
@@ -41,6 +42,7 @@
- Это наклонный текст
- Это текст с усиленным выделением
Много тегов
+
@@ -61,7 +63,7 @@
./index.htm
Незакрытый тег а - index.htm
-kernel.mnt
+/sys/calc
#2.1.4
http://bash.im
Mail to Leency
@@ -73,12 +75,10 @@
табы. Кое-какие символы: " & < >
© ® „ “ Їжачок іншого боку р. Євфрат з'їв ґрунт та єврейський ґербалайф.
-
61055, г.
Харьков, ул. Краснознаменная, 16, радиофизический
корпус на территории НТУ «ХПИ»
-
Zhitomyr 2008-2015
diff --git a/programs/cmm/browser/WebView.c b/programs/cmm/browser/WebView.c
index 8137797901..718c2a27fe 100644
--- a/programs/cmm/browser/WebView.c
+++ b/programs/cmm/browser/WebView.c
@@ -30,7 +30,7 @@
char homepage[] = FROM "html\\homepage.htm""\0";
#ifdef LANG_RUS
-char version[]="⮢ 㧥 1.51";
+char version[]="⮢ 㧥 1.52";
?define IMAGES_CACHE_CLEARED " ⨭ 饭"
?define T_LAST_SLIDE " "
char loading[] = "㧪 ࠭...
";
@@ -43,7 +43,7 @@ char rmb_menu[] =
⨭
㧮";
#else
-char version[]="Text-based Browser 1.51";
+char version[]="Text-based Browser 1.52";
?define IMAGES_CACHE_CLEARED "Images cache cleared"
?define T_LAST_SLIDE "This slide is the last"
char loading[] = "Loading...
";
@@ -212,6 +212,11 @@ void main()
$stosb;
} while (AL != 0) && (AL != 13) && (AL != 10);
DSBYTE[EDI-1]='\0';
+ if (!strcmp(#URL,"https://"))
+ {
+ notify("HTTPS protocol is not supported yet");
+ StopLoading();
+ }
}
}
else
@@ -313,7 +318,8 @@ void ProcessEvent(dword id__)
return;
case GOTOURL_BUTTON:
case SCAN_CODE_ENTER:
- if (!strncmp(#editURL,"http:",5)) || (editURL[0]=='/') || (!strncmp(#editURL,"WebView:",9))
+ if (!strncmp(#editURL,"http:",5)) || (editURL[0]=='/')
+ || (!strncmp(#editURL,"https:",6)) || (!strncmp(#editURL,"WebView:",8))
{
strcpy(#URL, #editURL);
}
@@ -466,7 +472,6 @@ void ShowPage()
{
WB1.Prepare();
}
- //if (!header) strcpy(#header, #version);
if (!strcmp(#version, #header)) DrawTitle(#header);
}
@@ -510,35 +515,24 @@ void ClickLink()
//#1
if (URL[0] == '#')
{
- strcpy(#anchor, #URL+strrchr(#URL, '#'));
- strcpy(#URL, history.current());
- WB1.list.first=WB1.list.count-WB1.list.visible;
- ShowPage();
+ if (URL[1] == NULL) {
+ WB1.list.first = 0;
+ strcpy(#URL, history.current());
+ }
+ else {
+ strlcpy(#anchor, #URL+strrchr(#URL, '#'), sizeof(anchor));
+ strcpy(#URL, history.current());
+ }
+ ShowPage();
return;
}
//liner.ru#1
- if (strrchr(#URL, '#')!=-1)
+ if (strrchr(#URL, '#')!=0)
{
strcpy(#anchor, #URL+strrchr(#URL, '#'));
URL[strrchr(#URL, '#')-1] = 0x00;
}
-
- GetAbsoluteURL(#URL);
-
- if (UrlExtIs(".png")==1) || (UrlExtIs(".gif")==1) || (UrlExtIs(".jpg")==1) || (UrlExtIs(".zip")==1) || (UrlExtIs(".kex")==1)
- || (UrlExtIs(".7z")==1) || (UrlExtIs("netcfg")==1)
- {
- //notify(#URL);
- if (!strncmp(#URL,"http://", 7))
- {
- strcpy(#downloader_edit, #URL);
- CreateThread(#Downloader,#downloader_stak+4092);
- }
- else RunProgram("@open", #URL);
- strcpy(#editURL, history.current());
- strcpy(#URL, history.current());
- return;
- }
+
if (!strncmp(#URL,"mailto:", 7))
{
notify(#URL);
@@ -546,8 +540,37 @@ void ClickLink()
strcpy(#URL, history.current());
return;
}
+
+ if (!strcmp(#URL,"https://"))
+ {
+ notify("HTTPS protocol is not supported yet");
+ }
+
+ GetAbsoluteURL(#URL);
+
+ if (strncmp(#URL,"http://",7)!=0)
+ {
+ if (UrlExtIs(".htm")!=true) && (UrlExtIs(".html")!=true)
+ {
+ RunProgram("/sys/@open", #URL);
+ strcpy(#editURL, history.current());
+ strcpy(#URL, history.current());
+ return;
+ }
+ }
+ else
+ {
+ if (UrlExtIs(".png")==true) || (UrlExtIs(".gif")==true) || (UrlExtIs(".jpg")==true)
+ || (UrlExtIs(".zip")==true) || (UrlExtIs(".kex")==true)
+ || (UrlExtIs(".7z")==true) || (UrlExtIs("netcfg")==true) {
+ strcpy(#downloader_edit, #URL);
+ CreateThread(#Downloader,#downloader_stak+4092);
+ strcpy(#editURL, history.current());
+ strcpy(#URL, history.current());
+ return;
+ }
+ }
OpenPage();
- return;
}
stop:
\ No newline at end of file
diff --git a/programs/cmm/lib/strings.h b/programs/cmm/lib/strings.h
index 2ea1ee5c5c..5c36f8ca2c 100644
--- a/programs/cmm/lib/strings.h
+++ b/programs/cmm/lib/strings.h
@@ -181,7 +181,7 @@ inline signed int strcmp(dword text1, text2)
return 0;
}
-inline signed int streq(dword text1, text2) {
+:bool strequ(dword text1, text2) {
if (!strcmp(text1,text2)) return true; else return false;
}