编辑器

修正namespace导致变慢的问题
This commit is contained in:
JianjunLiu
2023-04-18 16:10:47 +08:00
parent 97fbfda3ac
commit 1c0fe31233
4 changed files with 99 additions and 46 deletions
+8 -6
View File
@@ -26,7 +26,7 @@ type tcustomscrollcontrol = class(TCustomControl)
function SetWhileStep(v);
begin
if not v>=1 then return ;
if not(v>=1) then return ;
nv := integer(v);
if FWhileStep=nv then return ;
FWhileStep := nv;
@@ -333,16 +333,18 @@ type tcustomscrollcontrol = class(TCustomControl)
_wapi.GetScrollInfo(hwnd,SB_VERT,FSI._getptr_);
// 保存当前滑块位置,迟些进行比较
yPos := FSI.nPos;
dd := 0;
if e.delta<0 and FSI.nMax>yPos then
dd := 0;
edelta := e.delta;
ew := abs(round(edelta/120));
if edelta<0 and FSI.nMax>yPos then
begin
//dd++;
dd += FWhileStep;
dd += FWhileStep*ew;
end
if e.delta>0 and FSI.nMin<yPos then
if edelta>0 and FSI.nMin<yPos then
begin
//dd--;
dd -= FWhileStep;
dd -= FWhileStep*ew;
end
if not dd then return;
FSI.fMask := SIF_POS;
+64 -24
View File
@@ -6441,30 +6441,40 @@ type tgtk_ctl_scroll_window = class(tgtk_ctl_object)
end
if ri and rxy then
begin
//if hasMessageFromGtkMessageQueue(-1,_const.LM_MOUSEWHEEL) then return true; //20230417ÔÝʱÆÁ±Î
if hasMessageFromGtkMessageQueue(-1,_const.WM_SIZE) then return true;
if hasMessageFromGtkMessageQueue(-1,_const.WM_MOUSEMOVE) then return true;
FScrollT := now();
dr := (dr=1)?-1:1;
xy := makelong(rxy[0],rxy[1]);
ctl := 0;
global g_gtk_buttontable,g_gtk_keytable;
if ifarray(g_gtk_buttontable) then
begin
ctl .|= g_gtk_buttontable[0];
ctl .|= g_gtk_buttontable[1];
end
if ifarray(g_gtk_keytable) then
begin
if g_gtk_keytable[0x10] then ctl .|= _const.MK_Shift;
if g_gtk_keytable[0x11] then ctl .|= _const.MK_Control;
end
dr := makelong(ctl,dr);
//clearMessageFromGtkMessageQueue(ri,_const.LM_MOUSEWHEEL);
AddMessageToGtkMessageQueue(ri,_const.LM_MOUSEWHEEL,dr,xy,1);
return true;
//if hasMessageFromGtkMessageQueue(-1,_const.WM_MOUSEMOVE) then return true;
WHEEL_DELTA := 120;
FScrollT := now();
dr := (dr=1)?(-WHEEL_DELTA):(WHEEL_DELTA);
whist := feacheasylostMessageFromGtkMessageQueue(ri,_const.LM_MOUSEWHEEL);
for ii,iiv in whist do
begin
iivw := iiv[2];
lowuperdword(iivw,iivc,iivdir);
dr+=iivdir;
end
if dr=0 then return true;
xy := makelong(rxy[0],rxy[1]);
ctl := 0;
global g_gtk_buttontable,g_gtk_keytable;
if ifarray(g_gtk_buttontable) then
begin
ctl .|= g_gtk_buttontable[0];
ctl .|= g_gtk_buttontable[1];
end
if ifarray(g_gtk_keytable) then
begin
if g_gtk_keytable[0x10] then ctl .|= _const.MK_Shift;
if g_gtk_keytable[0x11] then ctl .|= _const.MK_Control;
end
dr := makelong(ctl,dr);
//clearMessageFromGtkMessageQueue(ri,_const.LM_MOUSEWHEEL);
AddMessageToGtkMessageQueue(ri,_const.LM_MOUSEWHEEL,dr,xy,1);
return true;
end
end
@@ -6793,16 +6803,40 @@ type tGtkMessageQueue=class //
begin
Clean();
end
///////////////处理一下////////////////
if r and r[1]=0x020a then
begin
end
///////////////////////
unlock();
return r;
end
function feacheasylostmessage(h,m);
begin
r := array();
ri := 0;
idx := FCurrent;
lock();
while idx<FLen do
begin
if FData[idx][0]=h and FData[idx][1]=m then
begin
r[ri++] := FData[idx];
FData[idx][0]:= 0;
end
idx++;
end
unlock();
return r;
end
function cleaneasyLostMessage(h,m);
begin
idx := FCurrent;
lock();
while idx<FLen do
begin
if FData[idx][0]=h and FData[idx][0]=m then
if FData[idx][0]=h and FData[idx][1]=m then
begin
FData[idx][0]:= 0;
end
@@ -6815,7 +6849,7 @@ type tGtkMessageQueue=class //
idx := FCurrent;
if idx<FLen then
begin
if((h=-1)or(FData[idx][0]=h))and FData[idx][0]=m then
if((h=-1)or(FData[idx][0]=h))and FData[idx][1]=m then
begin
return 1;
end
@@ -6881,6 +6915,12 @@ begin
GLobal G_GTK_MESSAGE_QUEUE_A;
if G_GTK_MESSAGE_QUEUE_A then G_GTK_MESSAGE_QUEUE_A.haseasyLostMessage(h,m);
end
function feacheasylostMessageFromGtkMessageQueue(h,m); //获取容丢失的消息
begin
GLobal G_GTK_MESSAGE_QUEUE_A;
if G_GTK_MESSAGE_QUEUE_A then return G_GTK_MESSAGE_QUEUE_A.feacheasylostmessage(h,m);
end
function clearMessageFromGtkMessageQueue(h,m); //Çå³ýÏûÏ¢
begin
GLobal G_GTK_MESSAGE_QUEUE_A;