From d6043d4e2b517271bf935eeaf55881c4123db7c6 Mon Sep 17 00:00:00 2001 From: "Kirill Lipatov (Leency)" Date: Sun, 20 Nov 2016 11:10:10 +0000 Subject: [PATCH] WebView 1.52: couple of bugs fixed, open local files with @open, add tag; still very crashful git-svn-id: svn://kolibrios.org@6730 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/cmm/TWB/TWB.c | 21 +++++----- programs/cmm/TWB/acid_0.1.htm | 6 +-- programs/cmm/browser/WebView.c | 77 ++++++++++++++++++++++------------ programs/cmm/lib/strings.h | 2 +- 4 files changed, 65 insertions(+), 41 deletions(-) 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 @@

+ Небольшой список:

  1. Этот текст в кавычках
  2. Это подчеркнутый текст
  3. @@ -41,6 +42,7 @@
  4. Это наклонный текст
  5. Это текст с усиленным выделением
  6. Много тегов
+


@@ -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; }