forked from KolibriOS/kolibrios
WebView 3.21: small fixes
git-svn-id: svn://kolibrios.org@8454 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
27aa766598
commit
8c1db15f91
@ -83,8 +83,9 @@ struct TWebBrowser {
|
|||||||
//============================================================================================
|
//============================================================================================
|
||||||
void TWebBrowser::Paint()
|
void TWebBrowser::Paint()
|
||||||
{
|
{
|
||||||
dword start_x, line_length, stolbec_len;
|
unsigned px; //paint x coordinate
|
||||||
dword text_color__;
|
unsigned pw; //paint y coordinate
|
||||||
|
dword pc; //paint color
|
||||||
|
|
||||||
if (style.title)
|
if (style.title)
|
||||||
{
|
{
|
||||||
@ -101,37 +102,37 @@ void TWebBrowser::Paint()
|
|||||||
|
|
||||||
if (line)
|
if (line)
|
||||||
{
|
{
|
||||||
start_x = stolbec * list.font_w + BODY_MARGIN + list.x;
|
px = stolbec * list.font_w + BODY_MARGIN + list.x;
|
||||||
stolbec_len = strlen(#line) * zoom;
|
pw = strlen(#line) * zoom * list.font_w;
|
||||||
line_length = stolbec_len * list.font_w;
|
stolbec += strlen(#line) * zoom;
|
||||||
|
|
||||||
style.cur_line_h = math.max(style.cur_line_h, list.item_h);
|
style.cur_line_h = math.max(style.cur_line_h, list.item_h);
|
||||||
|
|
||||||
if (bg_colors.get_last() - bg_colors.get(0)) {
|
if (bg_colors.get_last() - bg_colors.get(0)) {
|
||||||
canvas.DrawBar(start_x, draw_y, line_length, list.item_h, bg_colors.get_last());
|
canvas.DrawBar(px, draw_y, pw, list.item_h, bg_colors.get_last());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (style.image) {
|
if (style.image) {
|
||||||
canvas.DrawBar(start_x, draw_y, line_length, list.item_h-1, 0xF9DBCB);
|
canvas.DrawBar(px, draw_y, pw, list.item_h-1, 0xF9DBCB);
|
||||||
}
|
}
|
||||||
if (style.button) {
|
if (style.button) {
|
||||||
canvas.DrawBar(start_x, draw_y, line_length, list.item_h - calc(zoom*2), 0xCCCccc);
|
canvas.DrawBar(px, draw_y, pw, list.item_h - calc(zoom*2), 0xCCCccc);
|
||||||
canvas.DrawBar(start_x, draw_y + list.item_h - calc(zoom*2), line_length, zoom, 0x999999);
|
canvas.DrawBar(px, draw_y + list.item_h - calc(zoom*2), pw, zoom, 0x999999);
|
||||||
}
|
}
|
||||||
|
|
||||||
text_color__ = text_colors.get_last();
|
pc = text_colors.get_last();
|
||||||
if (link) && (text_color__ == text_colors.get(0)) text_color__ = link_color_default;
|
if (link) && (pc == text_colors.get(0)) pc = link_color_default;
|
||||||
|
|
||||||
canvas.WriteText(start_x, draw_y, list.font_type, text_color__, #line, NULL);
|
canvas.WriteText(px, draw_y, list.font_type, pc, #line, NULL);
|
||||||
if (style.b) canvas.WriteText(start_x+1, draw_y, list.font_type, text_color__, #line, NULL);
|
if (style.b) canvas.WriteText(px+1, draw_y, list.font_type, pc, #line, NULL);
|
||||||
if (style.s) canvas.DrawBar(start_x, list.item_h / 2 - zoom + draw_y, line_length, zoom, text_color__);
|
if (style.s) canvas.DrawBar(px, list.item_h / 2 - zoom + draw_y, pw, zoom, pc);
|
||||||
if (style.u) canvas.DrawBar(start_x, list.item_h - zoom - zoom + draw_y, line_length, zoom, text_color__);
|
if (style.u) canvas.DrawBar(px, list.item_h - zoom - zoom + draw_y, pw, zoom, pc);
|
||||||
if (link) {
|
if (link) {
|
||||||
if (line[0]==' ') && (line[1]==NULL) {} else {
|
if (line[0]==' ') && (line[1]==NULL) {} else {
|
||||||
canvas.DrawBar(start_x, draw_y + list.item_h - calc(zoom*2)-1, line_length, zoom, link_color_default);
|
canvas.DrawBar(px, draw_y + list.item_h - calc(zoom*2)-1, pw, zoom, link_color_default);
|
||||||
links.add_text(start_x, draw_y + list.y, line_length, list.item_h - calc(zoom*2)-1, zoom);
|
links.add_text(px, draw_y + list.y, pw, list.item_h - calc(zoom*2)-1, zoom);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stolbec += stolbec_len;
|
|
||||||
if (debug_mode) debugln(#line);
|
if (debug_mode) debugln(#line);
|
||||||
line = NULL;
|
line = NULL;
|
||||||
}
|
}
|
||||||
@ -143,7 +144,7 @@ void TWebBrowser::SetPageDefaults()
|
|||||||
style.reset();
|
style.reset();
|
||||||
link_color_default = 0x0000FF;
|
link_color_default = 0x0000FF;
|
||||||
link_color_active = 0xFF0000;
|
link_color_active = 0xFF0000;
|
||||||
//style.cur_line_h = list.item_h;
|
style.cur_line_h = list.item_h;
|
||||||
links.clear();
|
links.clear();
|
||||||
anchors.clear();
|
anchors.clear();
|
||||||
img_url.drop();
|
img_url.drop();
|
||||||
|
@ -30,7 +30,7 @@ void TWebBrowser::SetStyle()
|
|||||||
if (tag.is("blockquote")) { style.blq = tag.opened; return; }
|
if (tag.is("blockquote")) { style.blq = tag.opened; return; }
|
||||||
if (tag.is("dl")) { if (tag.opened) NewLine(); return; }
|
if (tag.is("dl")) { if (tag.opened) NewLine(); return; }
|
||||||
if (tag.is("tr")) { if (tag.opened) NewLine(); return; }
|
if (tag.is("tr")) { if (tag.opened) NewLine(); return; }
|
||||||
if (tag.is("td")) { if (tag.opened) AddCharToTheLine(' '); return; }
|
if (tag.is("td")) { /*if (tag.opened) AddCharToTheLine(' ');*/ return; }
|
||||||
if (tag.is("button")) { style.button = tag.opened; stolbec++; return; }
|
if (tag.is("button")) { style.button = tag.opened; stolbec++; return; }
|
||||||
if (tag.is("w:r")) { if (!tag.opened) style.b = false; return; }
|
if (tag.is("w:r")) { if (!tag.opened) style.b = false; return; }
|
||||||
if (tag.is("h1")) { tag_h1234_caption(); return; }
|
if (tag.is("h1")) { tag_h1234_caption(); return; }
|
||||||
@ -54,7 +54,7 @@ void TWebBrowser::SetStyle()
|
|||||||
if (tag.is("html")) { t_html = tag.opened; return; }
|
if (tag.is("html")) { t_html = tag.opened; return; }
|
||||||
if (tag.is("dd")) {
|
if (tag.is("dd")) {
|
||||||
//NewLine();
|
//NewLine();
|
||||||
//if (tag.opened) stolbec += 5; //stolbec overflow!
|
//if (tag.opened) stolbec += 5; //may overflow!
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -265,6 +265,8 @@ void TWebBrowser::tag_img()
|
|||||||
dword cur_img;
|
dword cur_img;
|
||||||
int img_x, img_y, img_w, img_h;
|
int img_x, img_y, img_w, img_h;
|
||||||
|
|
||||||
|
if (!tag.get_value_of("data-large-image"))
|
||||||
|
if (!tag.get_value_of("data-src"))
|
||||||
if (!tag.get_value_of("src")) return;
|
if (!tag.get_value_of("src")) return;
|
||||||
|
|
||||||
if (streqrp(tag.value, "data:")) {
|
if (streqrp(tag.value, "data:")) {
|
||||||
@ -281,6 +283,8 @@ void TWebBrowser::tag_img()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp(tag.value + strrchr(tag.value, '.'), "svg")) goto NOIMG;
|
if (!strcmp(tag.value + strrchr(tag.value, '.'), "svg")) goto NOIMG;
|
||||||
|
if (!strcmp(tag.value + strrchr(tag.value, '.'), "webp")) goto NOIMG;
|
||||||
|
|
||||||
strlcpy(#img_path, tag.value, sizeof(img_path)-1);
|
strlcpy(#img_path, tag.value, sizeof(img_path)-1);
|
||||||
get_absolute_url(#img_path, history.current());
|
get_absolute_url(#img_path, history.current());
|
||||||
|
|
||||||
@ -302,17 +306,21 @@ IMGOK:
|
|||||||
img_h = ESDWORD[cur_img+8];
|
img_h = ESDWORD[cur_img+8];
|
||||||
img_w = ESDWORD[cur_img+4];
|
img_w = ESDWORD[cur_img+4];
|
||||||
|
|
||||||
if (img_w / 6 + stolbec > list.column_max) {
|
if (img_w / 8 + stolbec > list.column_max) {
|
||||||
NewLine();
|
NewLine();
|
||||||
}
|
}
|
||||||
img_x = stolbec*list.font_w+3;
|
img_x = stolbec*list.font_w + 3;
|
||||||
img_y = draw_y;
|
img_y = draw_y;
|
||||||
|
|
||||||
|
if (img_h < list.item_h) img_y += list.item_h - img_h / 2 - 1; else img_y -= 2;
|
||||||
|
|
||||||
img_w = math.min(img_w, canvas.bufw - img_x);
|
img_w = math.min(img_w, canvas.bufw - img_x);
|
||||||
|
|
||||||
style.cur_line_h = math.max(list.item_h, img_h);
|
style.cur_line_h = math.max(list.item_h, img_h);
|
||||||
|
|
||||||
stolbec += img_w / 6;
|
stolbec += img_w / 8;
|
||||||
|
if (img_w % 8) stolbec++;
|
||||||
|
|
||||||
if (stolbec > list.column_max) {
|
if (stolbec > list.column_max) {
|
||||||
NewLine();
|
NewLine();
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
// DATA //
|
// DATA //
|
||||||
// //
|
// //
|
||||||
//===================================================//
|
//===================================================//
|
||||||
char version[]="WebView 3.2";
|
char version[]="WebView 3.21";
|
||||||
|
|
||||||
#define DEFAULT_URL URL_SERVICE_HOMEPAGE
|
#define DEFAULT_URL URL_SERVICE_HOMEPAGE
|
||||||
|
|
||||||
@ -237,7 +237,11 @@ void main()
|
|||||||
}
|
}
|
||||||
else if (http_get_type==IMG) {
|
else if (http_get_type==IMG) {
|
||||||
_IMG_RES:
|
_IMG_RES:
|
||||||
|
if (http.status_code >= 200) && (http.status_code < 300) {
|
||||||
cache.add(cur_img_url, http.content_pointer, http.content_received, IMG);
|
cache.add(cur_img_url, http.content_pointer, http.content_received, IMG);
|
||||||
|
} else {
|
||||||
|
cache.add(cur_img_url, 0, 0, IMG);
|
||||||
|
}
|
||||||
free(http.content_pointer);
|
free(http.content_pointer);
|
||||||
GetImg(false);
|
GetImg(false);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user