/programs/network/htmlv/browser/HTMLv.c-- |
---|
1,7 → 1,6 |
//HTML Viewer in C-- |
//Copyright 2007-2012 by Veliant & Leency |
//Asper, Lrz, Nable, lev. |
//Asper, lev, Lrz, Barsuk, Nable. |
//home icon - rachel fu, GPL licence |
#include "..\lib\kolibri.h--" |
9,12 → 8,12 |
#include "..\lib\file_system.h--" |
#include "img\toolbar_icons.c" |
#include "img\URLgoto.txt"; |
//Asper |
#include "..\lib\mem.h--" |
#include "..\lib\libio_lib.h--" |
#include "..\lib\libimg_lib.h--" |
#include "..\lib\edit_box_lib.h--" |
#include "..\lib\dll.h--" |
#include "..\lib\scroll_bar\scroll_lib.h--" |
//ïåðåìåííûå |
char URL[4096], |
22,15 → 21,14 |
page_links[12000], |
header[512]; |
int max_kolvo_strok, |
int max_kolvo_strok, //lines_visible |
max_kolvo_stolbcov, |
count; |
int za_kadrom, |
scroll_size, |
count, //lines_all |
za_kadrom, |
mouse_dd; |
edit_box edit1= {250,207,16,0xffffff,0x94AECE,0xffffff,0xffffff,0,248,#editURL,#mouse_dd,2,19,19}; |
scroll_bar scroll1 = { 18,200,398, 44,18,0,115,15,0,0xeeeeee,0xD2CED0,0x555555,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1}; //details in scroll_lib.h-- |
proc_info Form; |
43,20 → 41,16 |
mouse m; |
int btn; |
byte key; |
int scroll_size; |
//Asper [ |
mem_Init(); |
$or eax, eax |
$jnz loc00 |
return; |
@loc00: |
load_dll2(libio, #libio_init,1); |
load_dll2(libimg, #libimg_init,1); |
load_dll2(boxlib, #edit_box_draw,0); |
//] Asper |
load_dll2(#abox_lib, #boxlib_init,0); |
IF (param) copystr(#param,#URL); |
ELSE copystr("/sys/index.htm",#URL); |
if (param) copystr(#param,#URL); |
else copystr("/sys/index.htm",#URL); |
copystr(#URL,#editURL); |
67,15 → 61,28 |
SetEventMask(0x27); |
loop() |
{ |
switch(WaitEvent()) |
WaitEventTimeout(1); |
switch(EAX & 0xFF) |
//switch(WaitEvent()) |
{ |
CASE evMouse: |
edit_box_mouse stdcall (#edit1); |
/*scrollbar_v_mouse (#scroll1); //êîí÷åíûé ñêðîëë ïðèòîðìàæèìàåò, èä¸ì "ñâîèì ïóò¸ì" |
if (za_kadrom <> scroll1.position) |
{ |
za_kadrom = scroll1.position; |
WB1.ParseHTML(buf, filesize); |
//break; |
};*/ |
m.get(); |
IF (m.vert==65535) //ïðîêðóòêà êîë¸ñèêîì |
{ |
IF (za_kadrom==0) break; |
IF (za_kadrom>3) za_kadrom-=2; ELSE za_kadrom=1; |
WB1.Scan(ID1); |
break; |
} |
IF (m.vert==1) |
{ |
84,8 → 91,11 |
za_kadrom+=2; |
WB1.Scan(ID2); |
} |
break; |
} |
//IF (count<max_kolvo_strok) break; |
IF (count<max_kolvo_strok) break; |
scroll_size = WB1.height - 16 * max_kolvo_strok / count - 3; |
if (m.x>=WB1.width-14) && (m.x<=WB1.width+6) |
&& (m.y>WB1.top+16) && (m.y<WB1.top+WB1.height-16) |
&& (count>max_kolvo_strok) while (m.lkm) |
98,6 → 108,7 |
IF (btn<>za_kadrom) WB1.ParseHTML(buf, filesize); //÷òîá ëèøíèé ðàç íå ïåðåðèñîâûâàòü |
m.get(); |
} |
break; |
case evButton: |
btn=GetButtonID(); |
119,10 → 130,16 |
case evReDraw: |
Draw_Window(); |
break; |
default: |
if (downloader_id<>0) |
{ |
if (GetProcessSlot(downloader_id)<>0) break; |
downloader_id=0; |
Draw_Window(); |
} |
edit_box_mouse stdcall (#edit1); |
} |
} |
} |
void Draw_Window() |
148,15 → 165,17 |
PutImage(#URLgoto,40,19,onLeft(57,0),14); |
DefineButton(onLeft(37,0),15, 18, 16, GOTOURL+BT_HIDE, 0xE4DFE1); |
DefineButton(onLeft(56,0),15, 17, 16, SEARCHWEB+BT_HIDE, 0xE4DFE1); |
DrawRegion_3D(205,14,onLeft(58,205),18,0x94AECE,0x94AECE); //îáîäîê ïîëîñû àäðåñà |
DrawRegion_3D(206,15,onLeft(59,205),16,0xE4ECF3,0xE4ECF3); |
DrawRegion(205,14,onLeft(58,205),18,0x94AECE); //îáîäîê ïîëîñû àäðåñà |
DrawRegion(206,15,onLeft(59,205),16,0xE4ECF3); |
edit1.width=Form.width-266; |
//edit_box_draw stdcall(#edit1); //ðèñóåì ñòðîêó àäðåñà //shis is right |
WB1.top=44; |
WB1.width=Form.width-11; |
WB1.width=Form.width-13; |
WB1.height=onTop(43,5); |
WB1.ShowPage(#URL); |
//WB1.ParseHTML(buf, filesize); //shis is right |
} |
/programs/network/htmlv/browser/History.txt |
---|
1,3 → 1,18 |
04.06.12 -- v0.90 |
- íîâûé ñêðîëëáàð èç box_lib (ñïàñèáî lev); |
- íîðìàëüíàÿ çàãðóçêà ñòðàíèö áåç ñêèäûâàíèÿ ôîêóñà ñ îêíà; |
- ãåíèàëüíûé è ãðÿçíûé õàê äëÿ ðàáîòû ñ downloader'îì, êîòîðûé |
ó ìåíÿ íà ìàøèíå äà¸ò 99% çàãðóçêè ñòðàíèö âìåñòî 50% ðàíåå; |
- ìàññà èñïðàâëåíèé â ðàáîòå ñ èñòîðèåé ïîñåùåíèé è íàâèãàöèåé; |
- â òåãå <font> èñïðàâëåíà ðåãðåññèÿ. |
27.05.12 -- v0.83 |
- íîâàÿ èêîíêà êíîïêè "äîìîé"; |
- îïòèìèçàöèÿ òåãà <b>; |
- óëó÷øåíèÿ ïðè ðàáîòå ñ êíèãàìè xml-ïîäîáíîãî ôîðìàòà fb2. |
13.04.12 -- v0.80 |
- ïîääåðæêà <body> "bgcolor=" è "text="; |
- îáðàáîòêà ïåðåõîäà ââåðõ "../"; |
20,7 → 35,8 |
27.02.12 -- v0.75 -- 11.? Êá |
- ïðè çàêðûòèè HTMLv, downloader òîæå çàâåðøàåòñÿ; |
- íåâîçìîæíî çàïóñòèòü áîëüøå îäíîãî downloader'a; |
- îòîáðàæåíèå ïðîöåññà çàãðóçêè ñòðàíèöû èç Èíòåðíåòà ÷åðåç êíîïî÷êó "îñòàíîâèòü", íàäïèñü "Loading...", âîçìîæíîñòü ïðåðâàòü ïðîöåññ; |
- îòîáðàæåíèå ïðîöåññà çàãðóçêè ñòðàíèöû èç Èíòåðíåòà ÷åðåç êíîïî÷êó |
"îñòàíîâèòü", íàäïèñü "Loading...", âîçìîæíîñòü ïðåðâàòü ïðîöåññ; |
- îáíîâëåíèå ñòðàíèöû èç Èíòåðíåòà ïðèâîäèò ê å¸ ïîâòîðíîé çàãðóçêå. |
/programs/network/htmlv/browser/TWB.h |
---|
1,9 → 1,7 |
//èäåÿ - ëåâûå ôàéëû îòêðûâàòü ñîîòâåòñòâóþùèìè ïðîãàìè |
//ol - öèôåðêè |
//èç õòòï-ëîàä â ðåàäõòìë |
int downloader_id; |
dword j, |
15,14 → 13,11 |
char download_path[]="/rd/1/.download"; |
//char search_path[]="http://nova.rambler.ru/search?words="; |
char search_path[]="http://nigma.ru/index.php?s="; |
char version[]=" Text-based Browser 0.83"; |
char version[]=" Text-based Browser 0.9"; |
struct TWebBrowser { |
int left, |
top, |
width, |
height; |
int left, top, width, height; |
void DrawScroller(); |
void ShowPage(); |
void ParseHTML(dword, dword); |
111,20 → 106,12 |
utf8rutodos(buf); |
break; |
case BACK: |
BrowserHistory.GoBack(); |
copystr(#URL, #editURL); |
za_kadrom = count = 0; |
if (!strcmp(get_URL_part(5),"http:"))) HttpLoad(); |
ShowPage(#URL); |
if (!BrowserHistory.GoBack()) return; |
OpenPage(); |
return; |
case FORWARD: |
BrowserHistory.GoForward(); |
copystr(#URL, #editURL); |
za_kadrom = count = 0; |
if (!strcmp(get_URL_part(5),"http:"))) HttpLoad(); |
ShowPage(#URL); |
if (!BrowserHistory.GoForward()) return; |
OpenPage(); |
return; |
case 054: //F5 |
IF(edit1.flags == 66) break; |
156,17 → 143,13 |
case GOTOURL: |
case 0x0D: //enter |
copystr(#editURL, #URL); |
if (!strcmp(get_URL_part(5),"http:"))) HttpLoad(); |
za_kadrom = count = 0; |
ShowPage(#URL); |
OpenPage(); |
return; |
case 173: //ctrl+enter |
case SEARCHWEB: |
copystr(#search_path, #URL); |
copystr(#editURL, #URL + strlen(#URL)); |
if (!strcmp(get_URL_part(5),"http:"))) HttpLoad(); |
za_kadrom = count = 0; |
ShowPage(#URL); |
OpenPage(); |
return; |
case ID1: //ìîòàåì ââåðõ |
201,6 → 184,16 |
ParseHTML(buf, filesize); |
} |
void OpenPage() |
{ |
if (GetProcessSlot(downloader_id)<>0) PutPaletteImage(#toolbar,200,42,0,0,8,#toolbar_pal); |
KillProcess(downloader_id); |
copystr(#URL, #editURL); |
za_kadrom = count = 0; |
if (!strcmp(get_URL_part(5),"http:"))) HttpLoad(); |
WB1.ShowPage(#URL); |
} |
void GetNewUrl(){ |
IF (!strcmp(get_URL_part(2),"./")) copystr(#URL+2,#URL); //èãíîðèì :) |
238,6 → 231,11 |
DeleteFile(#download_path); |
IF (URL[strlen(#URL)-1]=='/') URL[strlen(#URL)-1]=''; |
downloader_id = RunProgram("/sys/network/downloader", #URL); |
//ýòî ãåíèàëüíî è ýòî ïèçäåö!!! |
Pause(60); |
KillProcess(downloader_id); //óáèâàåì ñòàðûé ïðîöåññ |
downloader_id = RunProgram("/sys/network/downloader", #URL); |
// |
IF (downloader_id<0) RunProgram("@notify", "Error running Downloader. Internet unavilable."); |
Draw_Window(); |
} |
275,7 → 273,7 |
if (!filesize) |
{ |
DrawBar(left, top, width+2, height, 0xFFFFFF); //çàêðàøèâàåì âñ¸ äîíèçó |
DrawBar(left, top, width+4, height, 0xFFFFFF); //çàêðàøèâàåì âñ¸ äîíèçó |
if (GetProcessSlot(downloader_id)<>0) WriteText(left + 10, top + 18, 0x80, 0, "Loading...", 0); |
else |
{ |
410,7 → 408,7 |
GOTO DEFAULT_MARK; //îáðàáàòûâàåì áóêâó |
} |
WriteDebug(#tag); //òýã íå íàéäåí - âûâîäèì íà äîñêó îòëàäêè |
//WriteDebug(#tag); //òýã íå íàéäåí - âûâîäèì íà äîñêó îòëàäêè |
copystr(#tag, #line + strlen(#line)); //âûâîäèì íà ýêðàí íåîáðàáîòàííûé òåã, òàê áðàóçåðû çà÷åì-òî äåëàþò |
break; |
default: |
595,7 → 593,7 |
///////////////////////// |
if (!chTag("font")) |
{ |
IF(stroka < 0) || (stroka - 1 > max_kolvo_strok) return; |
IF (stroka - 1 > max_kolvo_strok) return; |
COL_MARK: |
if (strcmp(#parametr, "color=") == 0) //&& (parametr[1] == '#') |
{ |
766,7 → 764,8 |
} |
void TextGoDown(int left1, top1, width1) { |
void TextGoDown(int left1, top1, width1) |
{ |
stroka++; |
IF(blq_text == 1) stolbec = 8; |
ELSE stolbec = 0; |
776,23 → 775,18 |
//ñêðîëë |
void TWebBrowser::DrawScroller() { |
dword on_y; |
DrawBar(left + width - 15, top + 17, 1, height - 34, 0x94AECE); //ëèíèÿ ñëåâà îò ïðîêðóòêè |
DrawFlatButton(left + width - 15, top + height - 17, 16, 16, ID2, 0xE4DFE1, "\x19"); |
DrawFlatButton(left + width - 15, top, 16, 16, ID1, 0xE4DFE1, "\x18"); |
void TWebBrowser::DrawScroller() //íå îïòèìàëüíàÿ îòðèñîâêà, íî çàòî â îäíîì ìåñòå |
{ |
scroll1.max_area = count; |
scroll1.cur_area = max_kolvo_strok; |
scroll1.position = za_kadrom; |
IF(count <= max_kolvo_strok) { |
DrawBar(left + width - 14, top+17, 16, height - 34, 0xCED0D0); |
return; |
} |
scroll1.all_redraw=1; |
scroll1.start_x=Form.width-28; //left + width - 15 |
scroll1.size_y=WB1.height; |
scroll_size = height - 16 * max_kolvo_strok / count - 3; |
IF(scroll_size < 10) scroll_size = 10; |
IF(za_kadrom + max_kolvo_strok >= count) on_y = height - scroll_size + top - 17; |
ELSE on_y = height - 32 * za_kadrom / count + top + 16; |
DrawFlatButton(left + width - 15, on_y, 16, scroll_size, 0, 0xE4DFE1, ""); //ïîëçóíîê |
IF(on_y > top + 17) DrawBar(left + width - 14, top + 17, 16, on_y - top - 17, 0xCED0D0); //ïîëå äî ïîëçóíêà |
IF(height - scroll_size + top - 17 > on_y) |
DrawBar(left + width - 14, on_y + scroll_size + 1, 16, height - scroll_size - on_y + top - 18, 0xCED0D0); //ïîëå ïîñëå ïîëçóíêà |
scrollbar_v_draw(#scroll1); |
DefineButton(scroll1.start_x+1, scroll1.start_y+1, 16, 16, ID1+BT_HIDE, 0xE4DFE1); |
DefineButton(scroll1.start_x+1, scroll1.start_y+scroll1.size_y-18, 16, 16, ID2+BT_HIDE, 0xE4DFE1); |
} |
/programs/network/htmlv/browser/include/history.h |
---|
1,8 → 1,8 |
struct UrlsHistory { |
dword CurrentUrl(); |
void AddUrl(); |
void GoBack(); |
void GoForward(); |
byte GoBack(); |
byte GoForward(); |
}; |
UrlsHistory BrowserHistory; |
39,17 → 39,20 |
} |
void UrlsHistory::GoBack() |
byte UrlsHistory::GoBack() |
{ |
if (history_current<=1) return; |
if (history_current<=1) return 0; |
history_current--; |
copystr(#history_list[history_current].Item,#URL); |
return 1; |
} |
void UrlsHistory::GoForward() |
byte UrlsHistory::GoForward() |
{ |
if (history_current==history_num) return; |
if (history_current==history_num) return 0; |
history_current++; |
copystr(#history_list[history_current].Item,#URL); |
return 1; |
} |
/programs/network/htmlv/lib/random.h-- |
---|
0,0 → 1,52 |
/******************************************************************************* |
MenuetOS MineSweeper |
Copyright (C) 2003 Ivan Poddubny |
This program is free software; you can redistribute it and/or modify |
it under the terms of the GNU General Public License as published by |
the Free Software Foundation; either version 2 of the License, or |
(at your option) any later version. |
This program is distributed in the hope that it will be useful, |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
GNU General Public License for more details. |
You should have received a copy of the GNU General Public License |
along with this program; if not, write to the Free Software |
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
*******************************************************************************/ |
dword generator; // random number generator - äëÿ ãåíåðàöèè ñëó÷àéíûõ ÷èñåë |
:int random(int max) |
// get pseudo-random number - ïîëó÷èòü ïñåâäîñëó÷àéíîå ÷èñëî |
{ |
$rdtsc // eax & edx |
$xor eax,edx |
$not eax |
EBX = generator; |
$ror ebx,3 |
$xor ebx,0xdeadbeef |
EBX += EAX; |
generator = EBX; |
EAX += EBX; |
EAX = EAX % max; |
return EAX; |
} |
:randomize() |
// initialize random number generator - èíèöèàëèçèðîâàòü ãåíåðàòîð ñëó÷àéíûõ ÷èñåë |
{ |
asm |
{ |
mov eax,3 |
int 0x40 |
ror eax,16 |
} |
generator = EAX; |
} |
/programs/network/htmlv/lib/scroll_bar/scroll_dll.h-- |
---|
0,0 → 1,43 |
:int load_dll3(dword dllname, import_table) |
{ |
EAX = 68; |
EBX = 19; |
ECX = dllname; |
$int 0x40 |
IF(EAX==0) GOTO exit3; |
EDX = EAX; |
ESI = import_table; |
@import_loop3: |
$lodsd |
IF(EAX==0) GOTO import_done3; |
$push edx |
@import_find3: |
EBX = DSDWORD[EDX]; |
IF(EBX==0) GOTO exit3; |
$push eax |
@next3: |
CL = DSBYTE[EAX]; |
$cmp CL,DSBYTE[EBX]; |
$jnz import_find_next3 |
IF (CL==0) GOTO import_found3; |
EAX++; |
EBX++; |
goto next3; |
@import_find_next3: |
$pop eax |
EDX = EDX + 8; |
goto import_find3; |
@import_found3: |
$pop ebx |
EAX = DSDWORD[EDX+4]; |
DSDWORD[ESI-4] = EAX; |
$pop edx |
goto import_loop3; |
@import_done3: |
return 0; |
@exit3: |
return -1; |
} |
/programs/network/htmlv/lib/scroll_bar/scroll_lib.h-- |
---|
0,0 → 1,95 |
//lev |
//:dword boxlib = #abox_lib; |
:char abox_lib[]="/sys/lib/box_lib.obj"; |
:char aboxlib_init[] = "lib_init"; |
:char aScrollbar_v_draw = "scrollbar_v_draw"; |
:char aScrollbar_v_mouse = "scrollbar_v_mouse"; |
:char aScrollbar_h_draw = "scrollbar_h_draw"; |
:char aScrollbar_h_mouse = "scrollbar_h_mouse"; |
:char aVersion_scrollbar = "version_scrollbar"; |
dword boxlib_init = #aboxlib_init; |
dword scrollbar_v_draw = #aScrollbar_v_draw; |
dword scrollbar_v_mouse = #aScrollbar_v_mouse; |
dword scrollbar_h_draw = #aScrollbar_h_draw; |
dword scrollbar_h_mouse = #aScrollbar_h_mouse; |
:dword version_scrollbar = #aVersion_scrollbar; |
dword sc_am__ = 0x0; |
dword sc_bm__ = 0x0; |
struct scroll_bar |
{ |
//scroll_bar: |
word size_x,// equ [edi] |
start_x,// equ [edi+2] |
size_y,// equ [edi+4] |
start_y;// equ [edi+6] |
dword btn_height, // equ [edi+8] |
type,// equ [edi+12] |
max_area,// equ [edi+16] |
cur_area,// equ [edi+20] |
position,// equ [edi+24] |
bckg_col,// equ [edi+28] |
frnt_col,// equ [edi+32] |
line_col,// equ [edi+36] |
redraw;// equ [edi+40] |
word delta,// equ [edi+44] |
delta2,// equ [edi+46] |
r_size_x,// equ [edi+48] |
r_start_x,// equ [edi+50] |
r_size_y,// equ [edi+52] |
r_start_y;// equ [edi+54] |
dword m_pos,// equ [edi+56] |
m_pos_2,// equ [edi+60] |
m_keys,// equ [edi+64] |
run_size,// equ [edi+68] |
position2,// equ [edi+72] |
work_size,// equ [edi+76] |
all_redraw,// equ [edi+80] |
ar_offset;// equ [edi+84] |
}; |
/*scroll_bar scroll1 = { |
18,//word size_x, |
200, //start_x, |
398, //size_y, |
44,//start_y; |
18,//dword btn_height, |
0,//type, |
115,//max_area, (100+cur_area) |
15,//cur_area, |
0,//position, |
0xeeeeee,//bckg_col, |
0xD2CED0,//frnt_col, |
0x555555,//line_col, |
0,//redraw; |
0,//word delta, |
0,//delta2, |
0,//r_size_x, |
0,//r_start_x, |
0,//r_size_y, |
0,//r_start_y; |
0,//dword m_pos, |
0,//m_pos_2, |
0,//m_keys, |
0,//run_size, |
0,//position2, |
0,//work_size, |
1,//all_redraw, |
1//ar_offset; |
};*/ |
//btn_height - ¢ëá®â ¡®ª®¢ëå ª®¯®ª («¥¢ ï ¨ ¯à ¢ ï ¤«ï £®à¨§. ¨ ¢¥àåïï ¨ ¨¦ïï ¤«ï ¢¥àâ.) |
//type - type - 0-1-2, ®áâ «ìë¥ ¢ë£«ï¤ïâ ª ª 0. |
//max_area - ®¡« áâì ¬ ªá¨¬ «ì ï, ªâã «ì® ª®£¤ ¥ ¢« §¨â ¢ ®â®¡à ¦ ¥¬ãî ®¡« áâì, â.¥. á«ãç © ªâ¨¢®á⨠ª®¬¯®¥â (¢¥áì ¬ ªá¨¬ «ìë© à §¬¥à ¤®ªã¬¥â ) |
//cur_area - à §¬¥à ¡¥£ãª //®¡« áâì ®â®¡à ¦ ¥¬ ï (ª ª ï ç áâì ¤®ªã¬¥â ¢« §¨â ¢ íªà ) |
//position - ¯®§¨æ¨ï ¡¥£ãª ¨§¬¥ï¥¬ ï ®â 0 ¤® § 票ï (max_area-cur_area) |
//bckg_col - 梥⠢ãâ२©, ¯à¨¬¥ï¥âáï ¤«ï ®¡« á⥩ ¬¥¦¤ã ¡¥£ãª®¬ ¨ ª®ª ¬¨ |
//frnt_col - 梥â àã¦ë©, ¯à¨¬¥ï¥âáï ¤«ï ®¡« á⥩ ®â«¨çëå ®â ¯à¨¬¥ï¥¬ëå ¢ bckg_col |
//line_col - 梥⠫¨¨© ¨ áâ५®ª ª®¯ª å |
//redraw - ¨¤¨ª â®à ¥®¡å®¤¨¬®á⨠¯¥à¥à¨á®¢ª¨ ã¯à ¢«ï¥¬®© ®¡« á⨠ãç¨âë¢ ï ¨§¬¥¥¨¥ position ¨ cur_area |
//delta2 - ¨¤¨ª â®à § å¢ â 䮪ãá áªà®««¡ ஬ (㤥ঠ¨¥ ¡¥£ãª ) |
//all_redraw - ä« £ ãáâ ¢«¨¢ ¥¬ë© ¢ 1 ¤«ï ¯¥à¥à¨á®¢ª¨ ¢á¥£® ª®¬¯®¥â , ¥á«¨ ¯®áâ ¢¨âì 0, â® ¯¥à¥à¨á®¢ª ¯à®¨á室¨â ⮫쪮 ¤«ï ®¡« á⨠¡¥£ãª . ¢¥¤¥® ¤«ï ãáª®à¥¨ï ®âà¨á®¢ª¨, ¯®áª®«ìªã ¥ ¢® ¢á¥å á«ãç ïå âॡã¥âáï ¯à¨ã¤¨â¥ì® ®âà¨á®¢ë¢ âì ¢á¥ ç á⨠ª®¬¯®¥â . ®£¤ ¢ë§ë¢ ¥âáï ¯® ᮡëâ¨î ¬ëè¨ ¢á¥£¤ ®âà¨á®¢ë¢ ¥âáï á ¬¨¬ ª®¬¯®¥â®¬ á® § 票¥¬ 0. |
//ar_offset - ¢¥«¨ç¨ á¬¥é¥¨ï ¯à¨ ®¤®ªà ⮬ ¦ ⨨ ¡®ª®¢®© ª®¯ª¨. |
/programs/network/htmlv/lib/scroll_bar |
---|
Property changes: |
Added: tsvn:logminsize |
+5 |
\ No newline at end of property |