forked from KolibriOS/kolibrios
WebView 2.5: open new urls in the process that already exists
git-svn-id: svn://kolibrios.org@7914 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
7cdee9c3db
commit
9410fc9d15
@ -30,6 +30,7 @@
|
|||||||
#include "..\lib\patterns\http_downloader.h"
|
#include "..\lib\patterns\http_downloader.h"
|
||||||
#include "..\lib\patterns\simple_open_dialog.h"
|
#include "..\lib\patterns\simple_open_dialog.h"
|
||||||
#include "..\lib\patterns\toolbar_button.h"
|
#include "..\lib\patterns\toolbar_button.h"
|
||||||
|
#include "..\lib\patterns\restart_process.h"
|
||||||
|
|
||||||
#include "texts.h"
|
#include "texts.h"
|
||||||
#include "cache.h"
|
#include "cache.h"
|
||||||
@ -101,6 +102,7 @@ edit_box address_box = {, PADDING+TSZE*2+PADDING+6, PADDING+3, 0xffffff,
|
|||||||
|
|
||||||
char editbox_icons[] = FROM "editbox_icons.raw";
|
char editbox_icons[] = FROM "editbox_icons.raw";
|
||||||
|
|
||||||
|
dword shared_url;
|
||||||
|
|
||||||
void LoadLibraries()
|
void LoadLibraries()
|
||||||
{
|
{
|
||||||
@ -130,11 +132,18 @@ void HandleParam()
|
|||||||
source_mode = true;
|
source_mode = true;
|
||||||
history.add(#param + 8);
|
history.add(#param + 8);
|
||||||
} else {
|
} else {
|
||||||
history.add(#param);
|
if (GetProcessesCount("WEBVIEW") == 1) {
|
||||||
|
history.add(#param);
|
||||||
|
} else {
|
||||||
|
shared_url = memopen(#webview_shared, URL_SIZE+1, SHM_OPEN + SHM_WRITE);
|
||||||
|
strncpy(shared_url, #param, URL_SIZE);
|
||||||
|
ExitProcess();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
history.add(URL_SERVICE_HOMEPAGE);
|
history.add(URL_SERVICE_HOMEPAGE);
|
||||||
}
|
}
|
||||||
|
shared_url = memopen(#webview_shared, URL_SIZE+1, SHM_CREATE + SHM_WRITE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
@ -148,7 +157,7 @@ void main()
|
|||||||
WB1.list.no_selection = true;
|
WB1.list.no_selection = true;
|
||||||
WB1.custom_encoding = -1;
|
WB1.custom_encoding = -1;
|
||||||
SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE + EVM_MOUSE_FILTER + EVM_STACK);
|
SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE + EVM_MOUSE_FILTER + EVM_STACK);
|
||||||
loop() switch(WaitEvent())
|
loop() switch(@WaitEventTimeout(30))
|
||||||
{
|
{
|
||||||
case evMouse:
|
case evMouse:
|
||||||
edit_box_mouse stdcall (#address_box);
|
edit_box_mouse stdcall (#address_box);
|
||||||
@ -246,6 +255,13 @@ void main()
|
|||||||
pages_cache.add(history.current(), http.content_pointer, http.content_received);
|
pages_cache.add(history.current(), http.content_pointer, http.content_received);
|
||||||
LoadInternalPage(http.content_pointer, http.content_received);
|
LoadInternalPage(http.content_pointer, http.content_received);
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (ESDWORD[shared_url] != '\0') {
|
||||||
|
EventOpenNewTab(shared_url);
|
||||||
|
ESDWORD[shared_url] = '\0';
|
||||||
|
ActivateWindow(GetProcessSlot(Form.ID));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
char version[]="WebView 2.48";
|
char version[]="WebView 2.5";
|
||||||
|
|
||||||
#ifdef LANG_RUS
|
#ifdef LANG_RUS
|
||||||
char page_not_found[] = FROM "html\\page_not_found_ru.htm""\0";
|
char page_not_found[] = FROM "html\\page_not_found_ru.htm""\0";
|
||||||
@ -65,3 +65,4 @@ char clear_cache_ok[] = "'WebView\nThe cache has been cleared.' -tI";
|
|||||||
#define URL_SERVICE_HOMEPAGE "WebView:home"
|
#define URL_SERVICE_HOMEPAGE "WebView:home"
|
||||||
#define URL_SERVICE_HELP "WebView:help"
|
#define URL_SERVICE_HELP "WebView:help"
|
||||||
|
|
||||||
|
char webview_shared[] = "WEBVIEW";
|
||||||
|
@ -206,7 +206,13 @@ void main()
|
|||||||
if (dir_exists(#param)) {
|
if (dir_exists(#param)) {
|
||||||
strcpy(#path, #param);
|
strcpy(#path, #param);
|
||||||
} else {
|
} else {
|
||||||
notify(T_NOTIFY_APP_PARAM_WRONG);
|
file_size stdcall (#param);
|
||||||
|
if (EAX==-1) notify(T_NOTIFY_APP_PARAM_WRONG);
|
||||||
|
else {
|
||||||
|
param[strrchr(#param, '/')-1] = '\0';
|
||||||
|
strcpy(#path, #param);
|
||||||
|
//in future we need also to select file
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -250,7 +250,8 @@ void properties_dialog()
|
|||||||
EventApplyProperties();
|
EventApplyProperties();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
case SCAN_CODE_KEY_A:
|
||||||
|
case SCAN_CODE_KEY_C:
|
||||||
if (key_modifier & KEY_LCTRL) || (key_modifier & KEY_RCTRL) {
|
if (key_modifier & KEY_LCTRL) || (key_modifier & KEY_RCTRL) {
|
||||||
EAX = key_editbox;
|
EAX = key_editbox;
|
||||||
edit_box_key stdcall(#file_name_ed);
|
edit_box_key stdcall(#file_name_ed);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#define TITLE "Eolite File Manager 4.28"
|
#define TITLE "Eolite File Manager 4.28b"
|
||||||
#define ABOUT_TITLE "EOLITE 4.28"
|
#define ABOUT_TITLE "EOLITE 4.28b"
|
||||||
|
|
||||||
#ifdef LANG_RUS
|
#ifdef LANG_RUS
|
||||||
?define T_FILE "” ©«"
|
?define T_FILE "” ©«"
|
||||||
|
@ -65,7 +65,7 @@ inline fastcall dword Clipboard__ResetBlockingBuffer()
|
|||||||
|
|
||||||
:void Clipboard__CopyText(dword _text)
|
:void Clipboard__CopyText(dword _text)
|
||||||
{
|
{
|
||||||
int size_buf;
|
dword size_buf;
|
||||||
dword buff_data;
|
dword buff_data;
|
||||||
|
|
||||||
size_buf = strlen(_text) + 12;
|
size_buf = strlen(_text) + 12;
|
||||||
|
@ -73,12 +73,6 @@ char program_path[4096];
|
|||||||
|
|
||||||
inline fastcall dword calc(EAX) { return EAX; }
|
inline fastcall dword calc(EAX) { return EAX; }
|
||||||
|
|
||||||
inline fastcall swap(EAX, EBX)
|
|
||||||
{
|
|
||||||
$push ESDWORD[EAX]
|
|
||||||
ESDWORD[EAX] = ESDWORD[EBX];
|
|
||||||
$pop ESDWORD[EBX];
|
|
||||||
}
|
|
||||||
|
|
||||||
:struct raw_image {
|
:struct raw_image {
|
||||||
dword w, h, data;
|
dword w, h, data;
|
||||||
|
@ -37,6 +37,17 @@ enum {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:int GetProcessesCount(dword proc_name) {
|
||||||
|
int i, count=0;
|
||||||
|
proc_info Process;
|
||||||
|
for (i=0; i<MAX_PROCESS_COUNT; i++;)
|
||||||
|
{
|
||||||
|
GetProcessInfo(#Process, i);
|
||||||
|
if (strcmpi(#Process.name, proc_name)==0) count++;
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
:void RestartProcessByName(dword proc_name, byte multiple) {
|
:void RestartProcessByName(dword proc_name, byte multiple) {
|
||||||
KillProcessByName(proc_name + strrchr(proc_name, '/'), multiple);
|
KillProcessByName(proc_name + strrchr(proc_name, '/'), multiple);
|
||||||
RunProgram(proc_name, "");
|
RunProgram(proc_name, "");
|
||||||
|
Loading…
Reference in New Issue
Block a user