forked from KolibriOS/kolibrios
WebView: small fixes
git-svn-id: svn://kolibrios.org@8302 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
f05eecb7a1
commit
cd00029f0e
@ -52,6 +52,7 @@ struct TWebBrowser {
|
|||||||
void ChangeEncoding();
|
void ChangeEncoding();
|
||||||
void DrawPage();
|
void DrawPage();
|
||||||
char header[150];
|
char header[150];
|
||||||
|
char redirect[URL_SIZE];
|
||||||
};
|
};
|
||||||
|
|
||||||
scroll_bar scroll_wv = { 15,NULL,NULL,NULL,0,2,NULL,0,0,0xeeeeee,0xBBBbbb,0xeeeeee};
|
scroll_bar scroll_wv = { 15,NULL,NULL,NULL,0,2,NULL,0,0,0xeeeeee,0xBBBbbb,0xeeeeee};
|
||||||
@ -137,6 +138,7 @@ void TWebBrowser::SetPageDefaults()
|
|||||||
stolbec = 0;
|
stolbec = 0;
|
||||||
line = 0;
|
line = 0;
|
||||||
zoom = 1;
|
zoom = 1;
|
||||||
|
redirect = '\0';
|
||||||
//hold original buffer
|
//hold original buffer
|
||||||
if (o_bufpointer) o_bufpointer=free(o_bufpointer);
|
if (o_bufpointer) o_bufpointer=free(o_bufpointer);
|
||||||
o_bufpointer = malloc(bufsize);
|
o_bufpointer = malloc(bufsize);
|
||||||
@ -532,16 +534,22 @@ void TWebBrowser::SetStyle() {
|
|||||||
draw_y += 10;
|
draw_y += 10;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (tag.is("meta")) {
|
||||||
|
if (streq(tag.get_value_of("http-equiv="), "refresh")) && (value = tag.get_value_of("content=")) {
|
||||||
|
if (value = strstri(value, "url=")) strcpy(#redirect, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (custom_encoding == -1) && (tag.is("meta")) || (tag.is("?xml")) {
|
if (custom_encoding == -1) && (tag.is("meta")) || (tag.is("?xml")) {
|
||||||
if (value = tag.get_value_of("charset=")) || (value = tag.get_value_of("content=")) || (value = tag.get_value_of("encoding="))
|
if (value = tag.get_value_of("charset=")) || (value = tag.get_value_of("content=")) || (value = tag.get_value_of("encoding="))
|
||||||
{
|
{
|
||||||
value += strrchr(value, '='); //search in content=
|
value += strrchr(value, '='); //search in content=
|
||||||
|
if (ESBYTE[value] == '"') value++;
|
||||||
strlwr(value);
|
strlwr(value);
|
||||||
if (streq(value,"utf-8")) || (streq(value,"utf8")) ChangeEncoding(CH_UTF8);
|
if (streqrp(value,"utf-8")) || (streqrp(value,"utf8")) { ChangeEncoding(CH_UTF8); debugln("UTF"); }
|
||||||
else if (streq(value,"windows-1251")) || (streq(value,"windows1251")) ChangeEncoding(CH_CP1251);
|
else if (streqrp(value,"windows-1251")) || (streqrp(value,"windows1251")) ChangeEncoding(CH_CP1251);
|
||||||
else if (streq(value,"dos")) || (streq(value,"cp-866")) ChangeEncoding(CH_CP866);
|
else if (streqrp(value,"dos")) || (streqrp(value,"cp-866")) ChangeEncoding(CH_CP866);
|
||||||
else if (streq(value,"iso-8859-5")) || (streq(value,"iso8859-5")) ChangeEncoding(CH_ISO8859_5);
|
else if (streqrp(value,"iso-8859-5")) || (streqrp(value,"iso8859-5")) ChangeEncoding(CH_ISO8859_5);
|
||||||
else if (streq(value,"koi8-r")) || (streq(value,"koi8-u")) ChangeEncoding(CH_KOI8);
|
else if (streqrp(value,"koi8-r")) || (streqrp(value,"koi8-u")) ChangeEncoding(CH_KOI8);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
char editbox_icons[] = FROM "res/editbox_icons.raw";
|
char editbox_icons[] = FROM "res/editbox_icons.raw";
|
||||||
|
|
||||||
char version[]="WebView 2.7";
|
char version[]="WebView 2.7a";
|
||||||
|
|
||||||
#include "texts.h"
|
#include "texts.h"
|
||||||
#include "cache.h"
|
#include "cache.h"
|
||||||
@ -238,7 +238,8 @@ void main()
|
|||||||
if (http.transfer <= 0) break;
|
if (http.transfer <= 0) break;
|
||||||
http.receive();
|
http.receive();
|
||||||
EventUpdateProgressBar();
|
EventUpdateProgressBar();
|
||||||
if (http.check_content_type()) && (!strncmp(#http.content_type,"application",11)) {
|
if (http.check_content_type()) // application || image
|
||||||
|
if (http.content_type[0] == 'a') || (http.content_type[0] == 'i') {
|
||||||
EventOpenDownloader(history.current());
|
EventOpenDownloader(history.current());
|
||||||
StopLoading();
|
StopLoading();
|
||||||
history.back();
|
history.back();
|
||||||
@ -705,13 +706,6 @@ void EventClickLink(dword _target)
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
if (UrlExtIs(#new_url,".png")==true) || (UrlExtIs(#new_url,".jpg")==true)
|
|
||||||
|| (UrlExtIs(#new_url,".zip")==true) || (UrlExtIs(#new_url,".kex")==true) || (UrlExtIs(#new_url,".pdf")==true)
|
|
||||||
|| (UrlExtIs(#new_url,".7z")==true) {
|
|
||||||
EventOpenDownloader(#new_url);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
OpenPage(#new_url);
|
OpenPage(#new_url);
|
||||||
}
|
}
|
||||||
@ -741,6 +735,14 @@ void LoadInternalPage(dword _bufdata, _in_bufsize){
|
|||||||
DrawOmnibox();
|
DrawOmnibox();
|
||||||
}
|
}
|
||||||
WB1.ParseHtml(_bufdata, _in_bufsize);
|
WB1.ParseHtml(_bufdata, _in_bufsize);
|
||||||
|
// REJECTED. Reason: infinite redirect at Google Results.
|
||||||
|
/*
|
||||||
|
if (WB1.redirect) { //<meta http-equiv="refresh" content="0; url=http://site.com">
|
||||||
|
get_absolute_url(#WB1.redirect, history.current());
|
||||||
|
history.back();
|
||||||
|
OpenPage(#WB1.redirect);
|
||||||
|
}
|
||||||
|
*/
|
||||||
DrawStatusBar();
|
DrawStatusBar();
|
||||||
DrawActiveTab();
|
DrawActiveTab();
|
||||||
if (source_mode) {
|
if (source_mode) {
|
||||||
|
@ -206,7 +206,7 @@ inline signed int strcmp(dword text1, text2)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inline fastcall streq(ESI, EDI)
|
inline fastcall bool streq(ESI, EDI)
|
||||||
{
|
{
|
||||||
loop()
|
loop()
|
||||||
{
|
{
|
||||||
@ -220,7 +220,18 @@ inline fastcall streq(ESI, EDI)
|
|||||||
ESI++;
|
ESI++;
|
||||||
EDI++;
|
EDI++;
|
||||||
}
|
}
|
||||||
return true;
|
}
|
||||||
|
|
||||||
|
inline fastcall bool streqrp(ESI, EDI) //streq right part
|
||||||
|
{
|
||||||
|
if(DSBYTE[ESI]==0) || (DSBYTE[EDI]==0) return false;
|
||||||
|
loop()
|
||||||
|
{
|
||||||
|
if(DSBYTE[EDI]==0) return true;
|
||||||
|
if(DSBYTE[ESI]!=DSBYTE[EDI]) return false;
|
||||||
|
ESI++;
|
||||||
|
EDI++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fastcall void strcpy( EDI, ESI)
|
inline fastcall void strcpy( EDI, ESI)
|
||||||
|
Loading…
Reference in New Issue
Block a user