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\simple_open_dialog.h"
|
||||
#include "..\lib\patterns\toolbar_button.h"
|
||||
#include "..\lib\patterns\restart_process.h"
|
||||
|
||||
#include "texts.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";
|
||||
|
||||
dword shared_url;
|
||||
|
||||
void LoadLibraries()
|
||||
{
|
||||
@ -130,11 +132,18 @@ void HandleParam()
|
||||
source_mode = true;
|
||||
history.add(#param + 8);
|
||||
} else {
|
||||
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 {
|
||||
history.add(URL_SERVICE_HOMEPAGE);
|
||||
}
|
||||
shared_url = memopen(#webview_shared, URL_SIZE+1, SHM_CREATE + SHM_WRITE);
|
||||
}
|
||||
|
||||
void main()
|
||||
@ -148,7 +157,7 @@ void main()
|
||||
WB1.list.no_selection = true;
|
||||
WB1.custom_encoding = -1;
|
||||
SetEventMask(EVM_REDRAW + EVM_KEY + EVM_BUTTON + EVM_MOUSE + EVM_MOUSE_FILTER + EVM_STACK);
|
||||
loop() switch(WaitEvent())
|
||||
loop() switch(@WaitEventTimeout(30))
|
||||
{
|
||||
case evMouse:
|
||||
edit_box_mouse stdcall (#address_box);
|
||||
@ -246,6 +255,13 @@ void main()
|
||||
pages_cache.add(history.current(), 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
|
||||
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_HELP "WebView:help"
|
||||
|
||||
char webview_shared[] = "WEBVIEW";
|
||||
|
@ -206,7 +206,13 @@ void main()
|
||||
if (dir_exists(#param)) {
|
||||
strcpy(#path, #param);
|
||||
} 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();
|
||||
break;
|
||||
|
||||
default:
|
||||
case SCAN_CODE_KEY_A:
|
||||
case SCAN_CODE_KEY_C:
|
||||
if (key_modifier & KEY_LCTRL) || (key_modifier & KEY_RCTRL) {
|
||||
EAX = key_editbox;
|
||||
edit_box_key stdcall(#file_name_ed);
|
||||
|
@ -1,5 +1,5 @@
|
||||
#define TITLE "Eolite File Manager 4.28"
|
||||
#define ABOUT_TITLE "EOLITE 4.28"
|
||||
#define TITLE "Eolite File Manager 4.28b"
|
||||
#define ABOUT_TITLE "EOLITE 4.28b"
|
||||
|
||||
#ifdef LANG_RUS
|
||||
?define T_FILE "” ©«"
|
||||
|
@ -65,7 +65,7 @@ inline fastcall dword Clipboard__ResetBlockingBuffer()
|
||||
|
||||
:void Clipboard__CopyText(dword _text)
|
||||
{
|
||||
int size_buf;
|
||||
dword size_buf;
|
||||
dword buff_data;
|
||||
|
||||
size_buf = strlen(_text) + 12;
|
||||
|
@ -73,12 +73,6 @@ char program_path[4096];
|
||||
|
||||
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 {
|
||||
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) {
|
||||
KillProcessByName(proc_name + strrchr(proc_name, '/'), multiple);
|
||||
RunProgram(proc_name, "");
|
||||
|
Loading…
Reference in New Issue
Block a user