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;