界面库

优化gtk滚动条优化gtk滚动条
This commit is contained in:
JianjunLiu
2022-11-25 15:23:51 +08:00
parent 9831a0260f
commit 4693fd70c6
5 changed files with 108 additions and 26 deletions
+3 -3
View File
@@ -215,10 +215,10 @@ type tapplication=class(tcomponent)
**}
initialize();
{$ifdef linuxgtk}
//idledata :=(new tcbytearray(4))._getptr_();
//id := tsl_gtk_idle_interface(idledata);//_wapi.tsl_gtk_idle_interface(idledata); //构造idle
idledata :=(new tcbytearray(4))._getptr_();
id := tsl_gtk_idle_interface(idledata);//_wapi.tsl_gtk_idle_interface(idledata); //构造idle
_wapi.gtk_main();
//_Wapi.g_idle_remove_by_data(idledata); //删除idle
_Wapi.g_idle_remove_by_data(idledata); //删除idle
return 1;
{$endif}
if not FMessageObj then FMessageObj := new TTagMSG();
+26 -20
View File
@@ -6189,7 +6189,8 @@ type tgtk_ctl_scroll_window = class(tgtk_ctl_object)
end
dosetchange := false;
////移动到公用 之前在 page change
if (rgchanged or pgchanged) and ((gsi.nmax-gsi.npage)<=0) {and osi.npos>0} then //»¹Ô­
//////////////ÔÝʱÆÁ±Î///////////////////
(* if (rgchanged or pgchanged) and ((gsi.nmax-gsi.npage)<=0) {and osi.npos>0} then //»¹Ô­
begin
w := makelong(_const.SB_TOP,0);
//osi.ntrackpos := 0;
@@ -6203,7 +6204,8 @@ type tgtk_ctl_scroll_window = class(tgtk_ctl_object)
CallTslVclProc(_const.WM_VSCROLL,w,0,1);
end
//dosetchange := true;
end
end *)
//////////////////////////////////////
if msk .& _const.SIF_TRACKPOS then
begin
@@ -6641,12 +6643,9 @@ type tGtkMessageQueue=class //
function Add(h,m,l,w,obj);
begin
lock();
FData[FLen]:= array(h,m,l,w,obj);
if FCurrent=FLen then
begin
createidle();
end
FData[FLen]:= array(h,m,l,w,obj);
FLen++;
//createidle();
unlock();
end
function Feach();
@@ -6695,18 +6694,27 @@ type tGtkMessageQueue=class //
idx++;
end
end
property idleworked write fidleworked;
private
fidleworked;
FData;
FCurrent;
FLen;
FLock;
FMainContext;
function createidle();
begin
if fidleworked then return ;
idledata :=(new tcbytearray(4))._getptr_();
id := tsl_gtk_idle_interface(idledata);
fidleworked := true;
end
function Clean();
begin
FData := array();
FLen := 0;
FCurrent :=0;
end
FData;
FCurrent;
FLen;
FLock;
FMainContext;
function lock()
begin
return;
@@ -6838,11 +6846,7 @@ begin
_wapi.cairo_destroy(cr);
_wapi.gtk_object_set_data(cr);
end
function createidle();
begin
idledata :=(new tcbytearray(4))._getptr_();
id := tsl_gtk_idle_interface(idledata);
end
function _gtkidledo_(); //回调
begin
d := FeachMessageFromGtkMessageQueue();
@@ -6875,8 +6879,7 @@ begin
AddMessageToGtkMessageQueue(h,d[1],h,d[3],true);
end
return 1;
end
end
return 1; //r
end
else
@@ -6892,7 +6895,10 @@ begin
//sleep(10);//休息一下
end
unit(uvclthreadworker).RunThreadWorkerHost();
return r;
GLobal G_GTK_MESSAGE_QUEUE_A;
if r=0 then sleep(1);
//G_GTK_MESSAGE_QUEUE_A.idleworked := r;
return true;
end
procedure tslprocessmessages()begin end;
function InitGtkWindowClass(); //初始化窗口类
+2 -2
View File
@@ -6770,8 +6770,8 @@ function uinit();
begin
{$ifdef linux}
class(tUIglobalData).uisetdata("G_T_TTIMER_",class(TCustomTimer));
o := new TSLUIBASE();
o._wapi.SetTimer(nil,10000,100,getwinprocptr(2));
//o := new TSLUIBASE();
//o._wapi.SetTimer(nil,10000,200,getwinprocptr(2));
{$endif}
end
initialization