界面库
优化gtk滚动条优化gtk滚动条
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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(); //初始化窗口类
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user