diff --git a/data/rus/docs/guide/hardware_support.htm b/data/rus/docs/guide/hardware_support.htm
index 88e3e03bca..1e9c29aa1b 100644
--- a/data/rus/docs/guide/hardware_support.htm
+++ b/data/rus/docs/guide/hardware_support.htm
@@ -61,6 +61,7 @@ USB 3.0 (XHCI) не поддерживается.
Драйвер Поддерживаемые сетевые карты
3c59x 3Com Fast EtherLink (3c59x/450/555/556/575/900/905/980)
+ar81xx Atheros 8161/8162/8171/8172
dec21x4x* Accton en1207B-TX, DEC 21140,.., VirtualPC
forcedeth* nVidia nForce chipset integrated ethernet
i8255x Intel eepro/100 (i8255x, i82562, i82801,..), QEMU
diff --git a/programs/cmm/TWB/links.h b/programs/cmm/TWB/links.h
index 003c61c6b8..94dfa9c487 100644
--- a/programs/cmm/TWB/links.h
+++ b/programs/cmm/TWB/links.h
@@ -24,6 +24,7 @@ struct LinksArray {
unsigned int unic_count;
unsigned int active;
bool HoverAndProceed();
+ bool Click();
void AddLink();
void AddText();
dword GetURL();
@@ -81,6 +82,36 @@ void LinksArray::DrawUnderline(dword und_id, list_first, list_y, color)
PathShow_data status_text = {0, 17,250, 6, 250};
+bool LinksArray::Click(dword list_first)
+{
+ if (mouse.lkm) && (mouse.down) {
+ DrawRectangle(links[active].x, -list_first + links[active].y,
+ links[active].w, links[active].h, 0);
+ return false;
+ }
+ if (mouse.mkm) && (mouse.up) {
+ if (key_modifier&KEY_LSHIFT) || (key_modifier&KEY_RSHIFT) {
+ open_new_window = true;
+ EventClickLink(PageLinks.GetURL(PageLinks.active));
+ open_new_window = false;
+ } else {
+ open_new_tab = true;
+ EventClickLink(PageLinks.GetURL(PageLinks.active));
+ open_new_tab = false;
+ }
+ return false;
+ }
+ if (mouse.lkm) && (mouse.up) {
+ CursorPointer.Restore();
+ EventClickLink(PageLinks.GetURL(PageLinks.active));
+ return false;
+ }
+ if (mouse.pkm) && (mouse.up) {
+ EventShowLinkMenu();
+ return false;
+ }
+}
+
bool LinksArray::HoverAndProceed(dword mx, my, list_y, list_first)
{
int i;
@@ -91,46 +122,22 @@ bool LinksArray::HoverAndProceed(dword mx, my, list_y, list_first)
&& (mxlist_y+list_first)
{
- if (mouse.lkm) && (mouse.down) {
- DrawRectangle(links[active].x, -list_first + links[active].y,
- links[active].w, links[active].h, 0);
- return false;
- }
- if (mouse.mkm) && (mouse.up) {
- if (key_modifier&KEY_LSHIFT) || (key_modifier&KEY_RSHIFT) {
- open_new_window = true;
- EventClickLink(PageLinks.GetURL(PageLinks.active));
- open_new_window = false;
- } else {
- open_new_tab = true;
- EventClickLink(PageLinks.GetURL(PageLinks.active));
- open_new_tab = false;
+ if (active!=i) {
+ CursorPointer.Load(#CursorFile);
+ CursorPointer.Set();
+
+ if (links[active].underline) {
+ DrawUnderline(active, list_first, list_y, link_color_default);
}
- return false;
- }
- if (mouse.lkm) && (mouse.up) {
- CursorPointer.Restore();
- EventClickLink(PageLinks.GetURL(PageLinks.active));
- return false;
- }
- if (mouse.pkm) && (mouse.up) {
- EventShowLinkMenu();
- return false;
- }
- if (active==i) return false;
- CursorPointer.Load(#CursorFile);
- CursorPointer.Set();
- if (links[active].underline) {
- DrawUnderline(active, list_first, list_y, link_color_default);
- }
+ if (links[i].underline) {
+ DrawUnderline(i, list_first, list_y, page_bg);
+ }
- if (links[i].underline) {
- DrawUnderline(i, list_first, list_y, page_bg);
+ active = i;
+ DrawStatusBar(links[active].link);
}
-
- active = i;
- DrawStatusBar(links[active].link);
+ Click(list_first);
return true;
}
}
diff --git a/programs/cmm/browser/WebView.c b/programs/cmm/browser/WebView.c
index 6c871f0c61..be58799dd3 100644
--- a/programs/cmm/browser/WebView.c
+++ b/programs/cmm/browser/WebView.c
@@ -131,6 +131,8 @@ void HandleParam()
} else if (!strncmp(#param, "-source ", 8)) {
source_mode = true;
history.add(#param + 8);
+ } else if (!strncmp(#param, "-new ", 5)) {
+ history.add(#param + 5);
} else {
if (GetProcessesCount("WEBVIEW") == 1) {
history.add(#param);
@@ -163,8 +165,8 @@ void main()
case evMouse:
edit_box_mouse stdcall (#address_box);
mouse.get();
- if (PageLinks.HoverAndProceed(mouse.x, WB1.list.first + mouse.y, WB1.list.y, WB1.list.first))
- && (mouse.pkm) && (mouse.up) {
+ PageLinks.HoverAndProceed(mouse.x, WB1.list.first + mouse.y, WB1.list.y, WB1.list.first);
+ if (PageLinks.active == -1) && (mouse.pkm) && (mouse.up) {
if (WB1.list.MouseOver(mouse.x, mouse.y)) EventShowPageMenu();
break;
}
@@ -628,11 +630,14 @@ void OpenPage(dword _open_URL)
void EventClickLink(dword _click_URL)
{
char new_url[URL_SIZE+1];
+ char new_url_full[URL_SIZE+1];
if (open_new_window) {
- strcpy(#new_url, _click_URL);
+ strncpy(#new_url, _click_URL, sizeof(new_url));
GetAbsoluteURL(#new_url, history.current());
- RunProgram(#program_path, #new_url);
+ strcpy(#new_url_full, "-new ");
+ strncat(#new_url_full, #new_url, sizeof(new_url_full));
+ RunProgram(#program_path, #new_url_full);
return;
}
diff --git a/programs/cmm/browser/texts.h b/programs/cmm/browser/texts.h
index bcfc1e0978..277ab5a90f 100644
--- a/programs/cmm/browser/texts.h
+++ b/programs/cmm/browser/texts.h
@@ -1,4 +1,4 @@
-char version[]="WebView 2.5b";
+char version[]="WebView 2.5c";
#ifdef LANG_RUS
char page_not_found[] = FROM "html\\page_not_found_ru.htm""\0";