From a69fded109fe9cc04190698915cd65ebd041da53 Mon Sep 17 00:00:00 2001 From: JianjunLiu Date: Fri, 9 Dec 2022 16:02:21 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 优化查找体验 --- designer/tslvcldesigner.tsf | 1 + designer/utslcodeeditor.tsf | 4 +--- funcext/tvclib/tslvcl.tsf | 35 +++++++++++++++++++++++++++----- funcext/tvclib/ugtkinterface.tsf | 2 ++ funcext/tvclib/utslvclstdctl.tsf | 4 ++++ 5 files changed, 38 insertions(+), 8 deletions(-) diff --git a/designer/tslvcldesigner.tsf b/designer/tslvcldesigner.tsf index 2879b95..a2790f6 100644 --- a/designer/tslvcldesigner.tsf +++ b/designer/tslvcldesigner.tsf @@ -831,6 +831,7 @@ type TVclDesigner = class(tvcform) FCurrentClikPos := o.ScreenToClient(xy[0],xy[1]); //FCurrentClikPos := array(e.lolparam,e.hilparam);//o1.screentoclient(e.lolparam,e.hilparam); r := CreateComponent(); + if not r then return MessageBoxA("¿Ø¼þ·ÅÖÃλÖò»¼æÈÝ!","Ìáʾ",0,self); o1 := r.Cwnd; o1.setpublish("left",o1.left,nil); o1.setpublish("top",o1.top,nil); diff --git a/designer/utslcodeeditor.tsf b/designer/utslcodeeditor.tsf index 048054e..c8f5412 100644 --- a/designer/utslcodeeditor.tsf +++ b/designer/utslcodeeditor.tsf @@ -3729,9 +3729,7 @@ type TEditer=class(TCustomcontrol) // end function TryDispatch(); begin - {$ifdef linux} - return; - {$endif} + t := now(); if(t-FLastDispathTime)>0.25e-5 then begin diff --git a/funcext/tvclib/tslvcl.tsf b/funcext/tvclib/tslvcl.tsf index 32201ab..b793470 100644 --- a/funcext/tvclib/tslvcl.tsf +++ b/funcext/tvclib/tslvcl.tsf @@ -6148,11 +6148,32 @@ begin @param(maxm)(integer) ×î´óÏûÏ¢Öµ ĬÈÏΪ¿Õ %% @return(integer)0±íʾWM_QUIT ,-1±íʾ´íÎó,ÆäËû·µ»Ø´óÓÚ0 %% **} + API := gettswin32api(); + {$ifdef linux} + dg := API.g_main_context_default(); + if dg then + begin + ct := 5; + while ct>0 do + begin + if API.g_main_context_pending(dg) and ct>0 then + begin + API.g_main_context_iteration(dg,false); + end + ct--; + end + end + tslprocessmessages(false); + RunWorkerThreadLoop(); + return; + {$endif} + FMSG := new TTagMSG(); ptr := FMSG._getptr_(); - API := gettswin32api(); + /////////////////////////////////////////////// - if(API.PeekMessageA(ptr,0,0,0,0x1))then + ct:=5; + if(API.PeekMessageA(ptr,0,0,0,0x1)) and ct>0 then begin if FMSG.message=0x12 then begin @@ -6162,11 +6183,15 @@ begin API.TranslateMessage(ptr); API.DispatchMessageA(ptr); end + ct--; end else begin - tslprocessmessages(false); - RunWorkerThreadLoop(); - API.WaitMessage(); + if ct>3 then + begin + tslprocessmessages(false); + RunWorkerThreadLoop(); + API.WaitMessage(); + end end return -1; ////////////////////////////////////////////////////// diff --git a/funcext/tvclib/ugtkinterface.tsf b/funcext/tvclib/ugtkinterface.tsf index ebdaba6..f102948 100644 --- a/funcext/tvclib/ugtkinterface.tsf +++ b/funcext/tvclib/ugtkinterface.tsf @@ -3754,6 +3754,8 @@ type tgtkapis = class() //gtk function gtk_get_micro_version ():integer;cdecl;external 'libgtk-3.so'; function gtk_get_binary_age ():integer;cdecl;external 'libgtk-3.so'; function g_main_context_default():pointer;cdecl;external 'libgtk-3.so'; + function g_main_context_pending(gc:pointer):integer;cdecl;external 'libgtk-3.so'; + function g_main_context_iteration(gc:pointer;bk:integer):integer;cdecl;external 'libgtk-3.so'; function g_main_context_get_poll_func(d:pointer):pointer;cdecl;external 'libgtk-3.so'; function gtk_main_level():integer;external 'libgtk-3.so'; diff --git a/funcext/tvclib/utslvclstdctl.tsf b/funcext/tvclib/utslvclstdctl.tsf index a1f0856..a1d1d19 100644 --- a/funcext/tvclib/utslvclstdctl.tsf +++ b/funcext/tvclib/utslvclstdctl.tsf @@ -637,6 +637,10 @@ type tcustomcheckbtn=class(tcustombtn) //checkbtn 1£ºÑ¡ÖС£ @param(leftText)(bool)Îı¾ÊÇ·ñÔÚ×ó%% **} + protected + function PaintMouseDown();override; + begin + end private FleftText; FcheckState;