parent
7146bd0fe6
commit
5d69525909
|
|
@ -1263,6 +1263,12 @@ type TWinControl = class(tcontrol)
|
|||
//rc := ps._getvalue_("rcpaint");
|
||||
img := _wapi.cairo_image_surface_create(1,cr[2]-cr[0]+100,cr[3]-cr[1]+100);
|
||||
memdc := _wapi.cairo_create(img);
|
||||
|
||||
rcpaint := ps.rcpaint;
|
||||
_wapi.gtk_object_set_data(memdc,nil);
|
||||
_wapi.cairo_reset_clip(memdc);
|
||||
rng := _wapi.CreateRectRgn(rcpaint[0],rcpaint[1],rcpaint[2],rcpaint[3]);
|
||||
_wapi.SelectClipRgn(memdc,rng);
|
||||
{$endif}
|
||||
e.wparam := memdc;
|
||||
if Color then
|
||||
|
|
@ -1272,9 +1278,11 @@ type TWinControl = class(tcontrol)
|
|||
Dispatch(o,e);
|
||||
e.wparam := 0;
|
||||
rc := ps.rcpaint;
|
||||
|
||||
{$ifdef gdipaint}
|
||||
_wapi.BitBlt(dc,rc[0],rc[1],rc[2]-rc[0],rc[3]-rc[1],memdc,rc[0],rc[1],SRCCOPY); //_wapi.BitBlt(dc,c[0],c[1],c[2],c[3],memdc,0,0,SRCCOPY);
|
||||
{$else}
|
||||
_wapi.SelectClipRgn(memdc,0);
|
||||
_wapi.cairo_set_source_surface(dc, img, 0, 0);
|
||||
_wapi.cairo_rectangle(dc,rc[0],rc[1],rc[2]-rc[0],rc[3]-rc[1]);
|
||||
_wapi.cairo_clip(dc);
|
||||
|
|
@ -1417,8 +1425,8 @@ type TWinControl = class(tcontrol)
|
|||
c := array(0,0); //设置基准点,为00 20201112 修改
|
||||
rcpaint := PaintStruct().rcpaint;
|
||||
if sum(rcpaint)<4 then exit;
|
||||
rgC := _wapi.CreateRectRgn(0,0,10,10);
|
||||
rga := _wapi.CreateRectRgn(rcpaint[0],rcpaint[1],rcpaint[2],rcpaint[3]);
|
||||
//rgC := _wapi.CreateRectRgn(0,0,10,10);
|
||||
//rga := _wapi.CreateRectRgn(rcpaint[0],rcpaint[1],rcpaint[2],rcpaint[3]);
|
||||
try
|
||||
for i := 0 to ControlCount-1 do
|
||||
begin
|
||||
|
|
@ -1433,8 +1441,9 @@ type TWinControl = class(tcontrol)
|
|||
end
|
||||
//rgb := _wapi.CreateRectRgn(itbounds[0],itbounds[1],itbounds[2],itbounds[3]); //控件区域
|
||||
rgb := _wapi.CreateRectRgn(outrect[0],outrect[1],outrect[2],outrect[3]); //控件区域
|
||||
_wapi.CombineRgn(rgC,rga,rgb,RGN_AND); //控件绘画区域
|
||||
bkrg := _wapi.SelectClipRgn(TheMessage.wparam,rgc); //裁剪区域
|
||||
//_wapi.CombineRgn(rgC,rga,rgb,RGN_AND); //控件绘画区域
|
||||
//bkrg := _wapi.SelectClipRgn(TheMessage.wparam,rgc); //裁剪区域
|
||||
bkrg := _wapi.SelectClipRgn(TheMessage.wparam,rgb); //裁剪区域
|
||||
try
|
||||
pts := it.PaintStruct();
|
||||
pts._setvalue_("rcpaint",array(outrect[0]-itbounds[0],outrect[1]-itbounds[1],outrect[2]-itbounds[0],outrect[3]-itbounds[1]));
|
||||
|
|
@ -1449,8 +1458,8 @@ type TWinControl = class(tcontrol)
|
|||
end
|
||||
end
|
||||
finally
|
||||
_wapi.DeleteObject(rga);
|
||||
_wapi.DeleteObject(rgc);
|
||||
//_wapi.DeleteObject(rga);
|
||||
//_wapi.DeleteObject(rgc);
|
||||
end;
|
||||
end
|
||||
procedure PaintWindow(DC:HDC);virtual;
|
||||
|
|
|
|||
|
|
@ -741,17 +741,24 @@ type tsgtkapi = class(tgtkapis)
|
|||
InvalidateRect(hwnd,0,f);
|
||||
end
|
||||
//////////////////////////////gdi///////////////////////////////////////////
|
||||
function cairo_clear_clip(hdc,rc);
|
||||
begin
|
||||
cairo_reset_clip(hdc);
|
||||
cairo_rectangle(hdc,rc[0],rc[1],rc[2]-rc[0],rc[3]-rc[1]);
|
||||
cairo_clip(hdc);
|
||||
end
|
||||
function SelectObject(hdc :pointer;gdiobj:pointer);
|
||||
begin
|
||||
//
|
||||
if not hdc then return 0;
|
||||
if not(gdiobj>0 or gdiobj<0) then return 0;
|
||||
global gtk_gdi_object_globals;
|
||||
if not ifarray(gtk_gdi_object_globals) then return 0;
|
||||
obj := gtk_gdi_object_globals[inttostr(gdiobj)];
|
||||
gdiindex := inttostr(gdiobj);
|
||||
obj := gtk_gdi_object_globals[gdiindex];
|
||||
if not obj then return 0;
|
||||
t := obj[1];
|
||||
o := obj[0];
|
||||
//gtk_gdi_object_globals[gdiindex,"hdc"] := hdc;
|
||||
case obj[1] of
|
||||
"pen":
|
||||
begin
|
||||
|
|
@ -774,10 +781,24 @@ type tsgtkapi = class(tgtkapis)
|
|||
end
|
||||
"rgn":
|
||||
begin
|
||||
x := gtk_object_get_data(dc,"viewport.x");
|
||||
y := gtk_object_get_data(dc,"viewport.y");
|
||||
r := gtk_object_get_data(hdc,"rgn");
|
||||
gtk_object_set_data(hdc,"rgn",gdiobj);
|
||||
rc := (new TCRect(gdiobj))._getdata_();
|
||||
rc[0]+=x;
|
||||
rc[2]+=x;
|
||||
rc[1]+=y;
|
||||
rc[3]+=y;
|
||||
gtk_object_set_data(hdc,"rgn-rec",rc);
|
||||
cairo_clear_clip(hdc,rc);
|
||||
|
||||
end
|
||||
end ;
|
||||
if r then
|
||||
begin
|
||||
//if ifarray(gtk_gdi_object_globals[inttostr(r)]) then gtk_gdi_object_globals[inttostr(r),"hdc"] := nil;
|
||||
end
|
||||
return r;
|
||||
end
|
||||
function textoutexa(hdc :pointer;X:integer;y:integer;txt:string;len:integer):integer;
|
||||
|
|
@ -786,8 +807,7 @@ type tsgtkapi = class(tgtkapis)
|
|||
// gtk_rgb_color_rgb(cl,r,g,b);
|
||||
// cairo_set_source_rgb(hdc, r, g, b);
|
||||
xb := gtk_object_get_data(hdc,"viewport.x");
|
||||
yb := gtk_object_get_data(hdc,"viewport.y");
|
||||
make_sure_rgn(hdc,xb,yb);
|
||||
yb := gtk_object_get_data(hdc,"viewport.y");
|
||||
ft := gtk_object_get_data(hdc,"font");
|
||||
global gtk_gdi_object_globals;
|
||||
if ft and ifarray(gtk_gdi_object_globals) then
|
||||
|
|
@ -1038,17 +1058,17 @@ type tsgtkapi = class(tgtkapis)
|
|||
begin
|
||||
sy := rec[3]-3-ht;
|
||||
end
|
||||
bk := gtk_object_get_data(hdc,"rgn-rec");
|
||||
gtk_object_set_data(hdc,"rgn-rec",rec);
|
||||
r := TextOutexA(hdc,sx,sy,txt,slen);
|
||||
if ifarray(bk) then
|
||||
rgnrec := gtk_object_get_data(hdc,"rgn-rec");
|
||||
if rgnrec then
|
||||
begin
|
||||
|
||||
end else
|
||||
begin
|
||||
cairo_reset_clip(hdc);
|
||||
end
|
||||
gtk_object_set_data(hdc,"rgn-rec",bk);
|
||||
x := gtk_object_get_data(hdc,"viewport.x");
|
||||
y := gtk_object_get_data(hdc,"viewport.y");
|
||||
reci := array(rec[0]+x,rec[1]+y,rec[2]+x,rec[3]+y);
|
||||
if not intersectrect(rgnrec,reci,reco) then return 0;
|
||||
cairo_clear_clip(hdc,reco);
|
||||
end
|
||||
r := TextOutexA(hdc,sx,sy,txt,slen);
|
||||
if rgnrec then cairo_clear_clip(hdc,rgnrec);
|
||||
return r;
|
||||
end
|
||||
Function SetTextColor(hdc :pointer;col:integer):integer;
|
||||
|
|
@ -1086,7 +1106,6 @@ type tsgtkapi = class(tgtkapis)
|
|||
cl := brs[0].Color;
|
||||
x := gtk_object_get_data(dc,"viewport.x");
|
||||
y := gtk_object_get_data(dc,"viewport.y");
|
||||
make_sure_rgn(hdc,x,y);
|
||||
cairo_rectangle(dc, x+rec[0], y+rec[1], rec[2]-rec[0], rec[3]-rec[1]);
|
||||
gtk_rgb_color_rgb(cl,r,g,b);
|
||||
cairo_set_source_rgb(dc,r,g,b);
|
||||
|
|
@ -1105,22 +1124,12 @@ type tsgtkapi = class(tgtkapis)
|
|||
cl := brs[0].Color;
|
||||
x := gtk_object_get_data(dc,"viewport.x");
|
||||
y := gtk_object_get_data(dc,"viewport.y");
|
||||
make_sure_rgn(hdc,x,y);
|
||||
cairo_rectangle(dc, x+rec[0], y+rec[1], rec[2]-rec[0], rec[3]-rec[1]);
|
||||
gtk_rgb_color_rgb(cl,r,g,b);
|
||||
cairo_set_source_rgb(dc,1-r,1-g,1-b);
|
||||
cairo_fill(dc);
|
||||
end
|
||||
end
|
||||
function make_sure_rgn(hdc,x,y);
|
||||
begin
|
||||
rc := gtk_object_get_data(hdc,"rgn-rec");
|
||||
if rc then
|
||||
begin
|
||||
cairo_rectangle(hdc,rc[0]+x,rc[1]+y,rc[2]-rc[0],rc[3]-rc[1]);
|
||||
cairo_clip(hdc);
|
||||
end
|
||||
end
|
||||
function ReleaseDC(hwd :pointer;hdc:pointer):integer;
|
||||
begin
|
||||
DeleteDC(hdc);
|
||||
|
|
@ -1134,42 +1143,11 @@ type tsgtkapi = class(tgtkapis)
|
|||
gtk_object_set_data(hdc,"rgn-rec",nil);
|
||||
cairo_reset_clip(hdc);
|
||||
end
|
||||
else
|
||||
begin
|
||||
rr := gtk_object_get_data(hdc,"rgn");
|
||||
if rr = gdiobj then return ;
|
||||
p := new TCRect(gdiobj);
|
||||
rc := p._getdata_();
|
||||
gtk_object_set_data(hdc,"rgn-rec",rc);
|
||||
end
|
||||
return r;
|
||||
|
||||
return r;
|
||||
r := SelectObject(hdc,gdiobj);
|
||||
if not(gdiobj) then
|
||||
begin
|
||||
gtk_object_set_data(hdc,"rgn",nil);
|
||||
cairo_reset_clip(hdc);
|
||||
end
|
||||
else
|
||||
begin
|
||||
rr := gtk_object_get_data(hdc,"rgn");
|
||||
if rr = gdiobj then return ;
|
||||
p := new TCRect(gdiobj);
|
||||
rc := p._getdata_();
|
||||
cairo_reset_clip(hdc);
|
||||
x := gtk_object_get_data(dc,"viewport.x"); //¿ØÖÆ»ù׼λÖÃ
|
||||
y := gtk_object_get_data(dc,"viewport.y");
|
||||
cairo_rectangle(hdc,rc[0]+x,rc[1]+y,rc[2]-rc[0],rc[3]-rc[1]);
|
||||
cairo_clip(hdc);
|
||||
//gtk_object_set_data(hdc,"rgn",gdiobj);
|
||||
end
|
||||
return r;
|
||||
end
|
||||
function CreateRectRgn(nLeftRect:integer;nTopRect:integer;nRightRect:integer;nBottomRect:integer):pointer;
|
||||
begin
|
||||
global gtk_gdi_object_globals;
|
||||
if not ifarray(gtk_gdi_object_globals) then gtk_gdi_object_globals := array();
|
||||
global gtk_gdi_object_globals;
|
||||
p := new TCRect();
|
||||
p.left := nLeftRect;
|
||||
p.top := nTopRect;
|
||||
|
|
@ -1213,10 +1191,11 @@ type tsgtkapi = class(tgtkapis)
|
|||
function DeleteObject(gdiobj :pointer);//ɾ³ýgdi¶ÔÏó
|
||||
begin
|
||||
global gtk_gdi_object_globals;
|
||||
if not ifarray(gtk_gdi_object_globals) then return 0;
|
||||
r := gtk_gdi_object_globals[inttostr( gdiobj)];
|
||||
gdiindex := inttostr( gdiobj);
|
||||
r := gtk_gdi_object_globals[gdiindex];
|
||||
if r then
|
||||
begin
|
||||
//if ifarray(gtk_gdi_object_globals[inttostr(r)]) then gtk_gdi_object_globals[inttostr(r),"hdc"] := nil;
|
||||
reindex(gtk_gdi_object_globals,array(inttostr(gdiobj):nil));
|
||||
return true;
|
||||
end
|
||||
|
|
@ -1242,7 +1221,6 @@ type tsgtkapi = class(tgtkapis)
|
|||
function CreatePen(FS,w,FC); //gtk Ä£Äâ pen
|
||||
begin
|
||||
global gtk_gdi_object_globals;
|
||||
if not ifarray(gtk_gdi_object_globals) then gtk_gdi_object_globals := array();
|
||||
p := new ttgtk_pen();
|
||||
p.width := w;
|
||||
p.color := FC;
|
||||
|
|
@ -1255,7 +1233,6 @@ type tsgtkapi = class(tgtkapis)
|
|||
function CreateSolidBrush(crColor:integer);
|
||||
begin
|
||||
global gtk_gdi_object_globals;
|
||||
if not ifarray(gtk_gdi_object_globals) then gtk_gdi_object_globals := array();
|
||||
p := new ttgtk_brush();
|
||||
p.color := crColor;
|
||||
ptr := p._getptr_();
|
||||
|
|
@ -1263,10 +1240,8 @@ type tsgtkapi = class(tgtkapis)
|
|||
return ptr;
|
||||
end
|
||||
function CreateFontIndirectA(lplf:pointer);
|
||||
begin
|
||||
|
||||
begin
|
||||
global gtk_gdi_object_globals;
|
||||
if not ifarray(gtk_gdi_object_globals) then gtk_gdi_object_globals := array();
|
||||
p := new ttgtk_font();
|
||||
p2 := new ttgtk_font(lplf);
|
||||
for i,v in array("height","width","escapement","orientation","weight","italic","underline","strikeout","charset","outprecision","clipprecision","quality","pitchandfamily","facename") do
|
||||
|
|
@ -1308,8 +1283,7 @@ type tsgtkapi = class(tgtkapis)
|
|||
gtk_rgb_color_rgb(pc,rc,gc,bc);
|
||||
cairo_set_source_rgb(dc,rc,gc,bc);
|
||||
end
|
||||
cairo_applay_pen_style(dc);
|
||||
make_sure_rgn(hdc,xb,yb);
|
||||
cairo_applay_pen_style(dc); //LineTo
|
||||
xy := gtk_object_get_data(dc,"movepointto");
|
||||
if xy then
|
||||
begin
|
||||
|
|
@ -1508,7 +1482,7 @@ type tsgtkapi = class(tgtkapis)
|
|||
global gtk_gdi_object_globals;
|
||||
wd := 8;
|
||||
ht := 16;
|
||||
if ft and ifarray(gtk_gdi_object_globals) then
|
||||
if ft then
|
||||
begin
|
||||
fto := gtk_gdi_object_globals[inttostr(ft)];
|
||||
if fto then fto := fto[0];
|
||||
|
|
@ -1861,7 +1835,7 @@ type tsgtkapi = class(tgtkapis)
|
|||
y := gtk_object_get_data(dc,"viewport.y");
|
||||
pc := gtk_object_get_data(dc,"pen.color");
|
||||
pw := gtk_object_get_data(dc,"pen.width");
|
||||
if pw>0 then cairo_set_line_width(dc,pw);
|
||||
if pw>0 then cairo_set_line_width(dc,pw);
|
||||
else cairo_set_line_width(dc,1);
|
||||
if pc=0 then
|
||||
begin
|
||||
|
|
@ -2543,6 +2517,7 @@ type tsgtkapi = class(tgtkapis)
|
|||
global g_gtk_ttimer_cache;
|
||||
if not ifarray(g_gtk_ttimer_cache) then return 0;
|
||||
obj := g_gtk_ttimer_cache[nIDEvent] ;
|
||||
if not obj then return 0;
|
||||
g_source_remove(obj._getvalue_(0));
|
||||
reindex(g_gtk_ttimer_cache,array(nIDEvent:nil));
|
||||
return true;
|
||||
|
|
@ -3011,6 +2986,7 @@ type tsgtkapi = class(tgtkapis)
|
|||
SetActiveWindow(hwd);
|
||||
end
|
||||
//socket
|
||||
{
|
||||
function socket(af:integer;tp:integer;protocol:integer):pointer;begin end
|
||||
function WSAStartup(af:SHORT;DA:pointer):integer;begin end
|
||||
function WSACleanup():integer;begin end
|
||||
|
|
@ -3032,6 +3008,7 @@ type tsgtkapi = class(tgtkapis)
|
|||
function ioctlsocket(s:pointer;cmd:integer;var argp:integer):integer;begin end
|
||||
function setsockopt(s:pointer;level:integer;optname:integer;optval:string;optlen:integer):integer;begin end
|
||||
function getsockopt(s:pointer;level:integer;optname:integer;var optval:string;var optlen:integer):integer;begin end
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
|
|
@ -4009,6 +3986,11 @@ type tgtkapis = class() //gtk
|
|||
_f_ := static function(kmp:pointer):integer;cdecl;external getfuncptrbyname(0,functionname());
|
||||
return ##_f_(kmp);
|
||||
end
|
||||
function gdk_keymap_get_caps_lock_state(kmp:pointer):integer;
|
||||
begin
|
||||
_f_ := static function(kmp:pointer):integer;cdecl;external getfuncptrbyname(0,functionname());
|
||||
return ##_f_(kmp);
|
||||
end
|
||||
|
||||
function gdk_screen_get_default():pointer;
|
||||
begin
|
||||
|
|
@ -4669,9 +4651,9 @@ type tgtkapis = class() //gtk
|
|||
_f_ := static procedure(c:pointer;var x1:double;var y1:double;var x2:double;var y2:double);cdecl;external getfuncptrbyname(0,functionname());
|
||||
return ##_f_(c,x1,y1,x2,y2);
|
||||
end
|
||||
function cairo_in_clip(c:pointer;x:double;y:double);
|
||||
function cairo_in_clip(c:pointer;x:double;y:double):integer;
|
||||
begin
|
||||
_f_ := static function(c:pointer;x:double;y:double);cdecl;external getfuncptrbyname(0,functionname());
|
||||
_f_ := static function(c:pointer;x:double;y:double):integer;cdecl;external getfuncptrbyname(0,functionname());
|
||||
return ##_f_(c,x,y);
|
||||
end
|
||||
procedure cairo_reset_clip(c:pointer);
|
||||
|
|
@ -4844,10 +4826,18 @@ type tgtkapis = class() //gtk
|
|||
begin
|
||||
_f_ := static procedure(c:pointer;offset:double;r:double;g:double;b:double;a:double);cdecl;external getfuncptrbyname(0,functionname());
|
||||
return ##_f_(c,offset,r,g,b,a);
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
/////////////////////////window//////////
|
||||
procedure gtk_window_set_keep_above(w:pointer;f:integer);
|
||||
begin
|
||||
_f_ := static procedure(w:pointer;f:integer);cdecl;external getfuncptrbyname(0,functionname());
|
||||
return ##_f_(w,f);
|
||||
end
|
||||
procedure gtk_window_set_keep_below(w:pointer;f:integer);
|
||||
begin
|
||||
_f_ := static procedure(w:pointer;f:integer);cdecl;external getfuncptrbyname(0,functionname());
|
||||
return ##_f_(w,f);
|
||||
end
|
||||
function gtk_window_list_toplevels():pointer;
|
||||
begin
|
||||
_f_ := static function():pointer;cdecl;external getfuncptrbyname(0,functionname());
|
||||
|
|
@ -8124,6 +8114,7 @@ type tgtk_ctl_scroll_window = class(tgtk_ctl_object)
|
|||
//cr := _wapi.gdk_cairo_create(_wapi.gtk_widget_get_window(hd));
|
||||
cr :=c;//rec := r;
|
||||
rec := zeros(4); _wapi.gdk_cairo_get_clip_rectangle(cr,rec);
|
||||
_Wapi.g_object_get_data(cr,nil);
|
||||
//_wapi.cairo_clip_extents(cr,x,y,w,h);
|
||||
hwd := handle;
|
||||
_wapi.g_object_set_data(hwd,"paint_dc",cr);
|
||||
|
|
@ -8151,7 +8142,7 @@ type tgtk_ctl_scroll_window = class(tgtk_ctl_object)
|
|||
CallTslVclProc(_const.WM_NCPAINT,0,cr); //»æÖÆ
|
||||
end
|
||||
end
|
||||
//_wapi.cairo_destroy(cr);
|
||||
//_wapi.cairo_destroy(cr);
|
||||
_wapi.gtk_object_set_data(cr);
|
||||
end;
|
||||
function CreateWnd(dwExStyle,lpClassName,lpWindowName,dwStyle,x,y,nwidth,nheight,hwndparent,hmenu,hinstance,lpParam);override;
|
||||
|
|
@ -8452,7 +8443,7 @@ type tgtk_ctl_scroll_window = class(tgtk_ctl_object)
|
|||
private
|
||||
ftarget ;
|
||||
fscrollinfos;
|
||||
ftimerobj;
|
||||
ftimerobj;ftimerfptr;
|
||||
Fscrolltimedo;
|
||||
FStatscrollTime;
|
||||
public
|
||||
|
|
@ -8498,8 +8489,22 @@ type tgtk_ctl_scroll_window = class(tgtk_ctl_object)
|
|||
dr := ed.direction;
|
||||
if dr<>0 and dr<>1 then return ;
|
||||
x := ed.x;//ed.x_root;
|
||||
y := ed.y;//ed.y_root;
|
||||
r := array();
|
||||
y := ed.y;//ed.y_root;-_wapi.gtk_object_get_data_title_height(h);
|
||||
//////////////λÖô¦Àí////////////////////////////////////////////////////////
|
||||
mb := _wapi.g_object_get_data(h,"menubar");
|
||||
if mb and _wapi.gtk_widget_is_visible(mb) then
|
||||
begin
|
||||
rec := zeros(4);
|
||||
_wapi.gtk_widget_get_allocation(mb,rec);
|
||||
y-=rec[3];
|
||||
end
|
||||
if _wapi.gdk_backend_is_wayland() then
|
||||
begin
|
||||
global g_gtk_shadow_width,g_gtk_shadow_heigt;
|
||||
y-=integer(g_gtk_shadow_heigt/2);//_wapi.gtk_object_get_data_title_height(h);
|
||||
end
|
||||
////////////////////////////////////////////////////////
|
||||
r := array();
|
||||
_wapi.GetTopWidgetList(h,x,y,r);
|
||||
lenr := length(r)-1;
|
||||
for i := lenr downto 0 do
|
||||
|
|
@ -8523,7 +8528,8 @@ type tgtk_ctl_scroll_window = class(tgtk_ctl_object)
|
|||
if not ftimerobj then
|
||||
begin
|
||||
fscrollinfos := array();
|
||||
Fscrolltimedo := makeinstance(thisfunction(scrolltimedo));
|
||||
ftimerfptr := makeinstance(weakref_get(thisfunction(scrolltimedo)));
|
||||
Fscrolltimedo := ftimerfptr;
|
||||
ftimerobj := new ttmstruct(nil);
|
||||
rt := _wapi.g_timeout_add(8,Fscrolltimedo,ftimerobj._getptr_() );
|
||||
ftimerobj._setvalue_(0,rt);
|
||||
|
|
@ -8541,6 +8547,14 @@ type tgtk_ctl_scroll_window = class(tgtk_ctl_object)
|
|||
function Destroy();override;
|
||||
begin
|
||||
inherited;
|
||||
if ftimerobj then
|
||||
begin
|
||||
_wapi.g_source_remove(ftimerobj._getvalue_(0));
|
||||
deleteinstance(ftimerfptr);
|
||||
ftimerfptr := 0;
|
||||
ftimerobj := nil;
|
||||
end
|
||||
|
||||
get_instance_u(thisfunction(do_motion));
|
||||
get_instance_u(thisfunction(do_received));
|
||||
get_instance_u(thisfunction(do_drop));
|
||||
|
|
@ -8677,7 +8691,7 @@ type tgtk_ctl_window_PoPup = class(tgtk_ctl_scroll_window)
|
|||
eheight := cf.height;
|
||||
dw := abs(AWidth-ewidth);
|
||||
dh := abs(AHeight-eheight);
|
||||
if dw>10 and dh>10 then
|
||||
if dw>10 and dh>10 and dw<200 and dh<200 then
|
||||
begin
|
||||
g_gtk_shadow_width := dw;
|
||||
g_gtk_shadow_heigt := dh;
|
||||
|
|
@ -9613,8 +9627,9 @@ begin
|
|||
global g_w_i_datas,g_w_c_width, g_gtk_buttontable,g_gtk_keytable,
|
||||
g_gtk_call_handler_manager,g_gtk_font_get_size,g_gtk_dragxy,
|
||||
g_gtk_shadow_width,g_gtk_shadow_heigt,g_gtk_shadow_size_nset,
|
||||
G_E_ID_Name_1,G_E_ID_Name_2,g_Caret_Blink_Time,g_ansi_unit_cache;
|
||||
G_E_ID_Name_1,G_E_ID_Name_2,g_Caret_Blink_Time,g_ansi_unit_cache,gtk_gdi_object_globals;
|
||||
g_ansi_unit_cache := array();
|
||||
gtk_gdi_object_globals := array();
|
||||
G_E_ID_Name_2 := array();
|
||||
G_E_ID_Name_1 := array(
|
||||
"wm-user":10,
|
||||
|
|
|
|||
|
|
@ -1067,7 +1067,6 @@ type TcustomInPutQuerys= class(tcustomscrollcontrol)
|
|||
static SFInputType;
|
||||
static SHashInited;
|
||||
end
|
||||
implementation
|
||||
type TInputEditor=class()
|
||||
{**
|
||||
@ignore(ºöÂÔ) %%
|
||||
|
|
@ -1121,6 +1120,7 @@ type TInputEditor=class()
|
|||
end
|
||||
FNextCtrl;
|
||||
end
|
||||
implementation
|
||||
type tinputbool=class(tcustomcheckbtn,TInputEditor)
|
||||
{**
|
||||
@explan(˵Ã÷) ÊäÈë¿ò %%
|
||||
|
|
@ -1429,7 +1429,7 @@ begin
|
|||
global g_dlg_call_back;
|
||||
if not g_dlg_call_back then
|
||||
begin
|
||||
g_dlg_call_back := makeinstance(thisfunction(folderdlgcall));
|
||||
g_dlg_call_back := makeinstance(weakref_get( thisfunction(folderdlgcall)));
|
||||
end
|
||||
return g_dlg_call_back;
|
||||
end
|
||||
|
|
|
|||
|
|
@ -729,6 +729,12 @@ type tcustompagecontrol = class(TCustomControl)
|
|||
function acceptsheettype(ty,del);
|
||||
begin
|
||||
idx := 0;
|
||||
if ifstring(ty) and ty then
|
||||
begin
|
||||
ob := findclass(ty);
|
||||
if ob then return acceptsheettype(ob,del);
|
||||
return false;
|
||||
end
|
||||
if ty is class(tcontrol) then
|
||||
begin
|
||||
idx := inttostr(int64(ty));
|
||||
|
|
@ -741,6 +747,7 @@ type tcustompagecontrol = class(TCustomControl)
|
|||
begin
|
||||
faccepttype[idx] := ty;
|
||||
end
|
||||
return true;
|
||||
end
|
||||
{**
|
||||
@param(cursel)(integer) 当前选中序号 %%
|
||||
|
|
|
|||
|
|
@ -6767,7 +6767,65 @@ type tcustomprocess = class(tcomponent) //
|
|||
ftm.Interval := 500;
|
||||
ftm.Ontimer := thisfunction(dispatchproc);
|
||||
end
|
||||
end
|
||||
end
|
||||
function executeblock(exe,cmd); //阻塞执行
|
||||
begin
|
||||
if fprocesshandle then return 0;
|
||||
if fexecstr then
|
||||
begin
|
||||
e := exe;
|
||||
if not(ifstring(e) and e) then return 0;
|
||||
arg := cmd;
|
||||
end else
|
||||
begin
|
||||
if not parserasexeclevparam(exe,cmd,e,arg,envp) then return 0;
|
||||
end
|
||||
//////////////处理linux启动路径/////////////////////
|
||||
{$ifdef linux}
|
||||
for i := length(e) downto 2 do
|
||||
begin
|
||||
if e[i]="/" then
|
||||
begin
|
||||
ph := e[1:i];
|
||||
break;
|
||||
end
|
||||
end
|
||||
envp := array();
|
||||
if ph then
|
||||
begin
|
||||
envp[length(envp)] := "LD_LIBRARY_PATH="+ph;
|
||||
end
|
||||
Sysexecsetenvs(envp,1);
|
||||
{$endif}
|
||||
///////////////////////////处理管道////////////////////////
|
||||
Sysexecnewpipe(0);
|
||||
ferrinfo := nil;
|
||||
sdir :=nil;
|
||||
if ifstring(fStartupDirectory) and fStartupDirectory then
|
||||
begin
|
||||
if fStartupDirectory[length(fStartupDirectory)]=iofileseparator() then
|
||||
begin
|
||||
if filelist("",fStartupDirectory+"*") then
|
||||
begin
|
||||
sdir := fStartupDirectory;
|
||||
end
|
||||
end else
|
||||
begin
|
||||
if filelist("",fStartupDirectory) then
|
||||
begin
|
||||
sdir := fStartupDirectory+iofileseparator();
|
||||
end
|
||||
end
|
||||
end
|
||||
hd := sysexec(e,arg,sdir,true,code);
|
||||
if ifarray(code) then
|
||||
begin
|
||||
doprocecho(self(true),code["out"]);
|
||||
ferrinfo:=code["code"];
|
||||
end
|
||||
Sysexecdeletepipe(0);
|
||||
return hd;
|
||||
end
|
||||
function CreateProcess(exe,cmd,exitWithParent);
|
||||
begin
|
||||
{**
|
||||
|
|
|
|||
Loading…
Reference in New Issue