parent
6dd3e015b9
commit
afdfe2e2f7
|
|
@ -22,7 +22,7 @@ type tsgtkapi = class(tgtkapis)
|
||||||
function AnsiToWidChar(c);
|
function AnsiToWidChar(c);
|
||||||
begin
|
begin
|
||||||
if not ifstring(c) then return "";
|
if not ifstring(c) then return "";
|
||||||
return c;
|
return widestring(c);
|
||||||
end
|
end
|
||||||
function GetModuleFileNameExA();
|
function GetModuleFileNameExA();
|
||||||
begin
|
begin
|
||||||
|
|
@ -113,12 +113,16 @@ type tsgtkapi = class(tgtkapis)
|
||||||
global g_w_c_width;
|
global g_w_c_width;
|
||||||
pcd := gtk_object_get_data(hwd,"gtk_wnd_hs_caption")?g_w_c_width:0;
|
pcd := gtk_object_get_data(hwd,"gtk_wnd_hs_caption")?g_w_c_width:0;
|
||||||
gtk_window_move(hwd,x,max(0,y-pcd));
|
gtk_window_move(hwd,x,max(0,y-pcd));
|
||||||
if w>=0 and h>=0 then
|
if w>=0 and h>=0 then
|
||||||
gtk_widget_set_size_request(hwd,w,max(0,h-pcd));
|
begin
|
||||||
|
//gtk_window_set_default_size(hwd,w,max(0,h-pcd));
|
||||||
|
//gtk_widget_set_size_request(hwd,w,max(0,h-pcd));
|
||||||
|
gtk_window_resize(hwd,w,max(0,h-pcd));
|
||||||
|
end
|
||||||
end
|
end
|
||||||
if f=0x4 then
|
if f=0x4 then
|
||||||
begin
|
begin
|
||||||
if not gtk_window_get_decorated(hwd) then
|
//if not gtk_window_get_decorated(hwd) then
|
||||||
gtk_window_set_type_hint(hwd,3);
|
gtk_window_set_type_hint(hwd,3);
|
||||||
if cf and cf<>g_current_get_focus_widget then //设置一下focus
|
if cf and cf<>g_current_get_focus_widget then //设置一下focus
|
||||||
begin
|
begin
|
||||||
|
|
@ -303,28 +307,41 @@ type tsgtkapi = class(tgtkapis)
|
||||||
h0 := g_object_get_data(h,"gtk_layout_height");
|
h0 := g_object_get_data(h,"gtk_layout_height");
|
||||||
if (cx>=0 and cy>=0) and ( cx<>w0 or cy<>h0) then
|
if (cx>=0 and cy>=0) and ( cx<>w0 or cy<>h0) then
|
||||||
begin
|
begin
|
||||||
if gtk_window_get_resizable(h) then
|
{if gtk_window_get_resizable(h) then
|
||||||
begin
|
begin
|
||||||
gtk_widget_get_size_request(h,cx0,cy0); //改小一点
|
gtk_widget_get_size_request(h,cx0,cy0); //改小一点
|
||||||
if cx0>cx or cy0>cy then
|
if cx0>cx or cy0>cy then
|
||||||
begin
|
begin
|
||||||
gtk_widget_set_size_request(h,cx,max(0,cy-pcd));
|
gtk_widget_set_size_request(h,cx,max(0,cy-pcd));
|
||||||
end
|
end
|
||||||
gtk_window_resize(h,cx,max(0,cy-pcd));
|
//gtk_widget_set_size_request(h,cx,max(0,cy-pcd));
|
||||||
|
//gtk_window_set_default_size(h,cx,max(0,cy-pcd));
|
||||||
|
//echo "\r\nresize:",cx,"===",cy;
|
||||||
|
//gtk_window_resize(h,cx,max(0,cy-pcd));
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
//gtk_widget_get_size_request(h,cx0,cy0);
|
//gtk_widget_get_size_request(h,cx0,cy0);
|
||||||
//echo "\r\noldsize:",cx0,"====",cy0;
|
//echo "\r\noldsize:",cx0,"====",cy0;
|
||||||
//gtk_window_resize(wh,cx,cy);
|
//
|
||||||
gtk_widget_set_size_request(h,cx,max(0,cy-pcd));
|
gtk_widget_set_size_request(h,cx,max(0,cy-pcd));
|
||||||
|
//gtk_window_resize(wh,cx,max(0,cy-pcd));
|
||||||
|
//gtk_window_set_default_size(h,cx,max(0,cy-pcd));
|
||||||
//gtk_window_set_decorated(h,true);
|
//gtk_window_set_decorated(h,true);
|
||||||
//gtk_window_set_resizable(h,true);
|
//gtk_window_set_resizable(h,true);
|
||||||
|
|
||||||
//gtk_window_resize(h,cx,cy);
|
//gtk_window_resize(h,cx,cy);
|
||||||
//gtk_window_set_decorated(h,false);
|
//gtk_window_set_decorated(h,false);
|
||||||
//gtk_window_resize_to_geometry(h,cx,cy);
|
//gtk_window_resize_to_geometry(h,cx,cy);
|
||||||
end
|
end }
|
||||||
|
if gtk_window_get_resizable(h) then
|
||||||
|
begin
|
||||||
|
gtk_widget_set_size_request(h,1,1);
|
||||||
|
end else
|
||||||
|
begin
|
||||||
|
gtk_widget_set_size_request(h,cx,max(0,cy-pcd));
|
||||||
|
end
|
||||||
|
gtk_window_resize(h,cx,max(0,cy-pcd));
|
||||||
g_object_set_data(h,"gtk_layout_width",cx);
|
g_object_set_data(h,"gtk_layout_width",cx);
|
||||||
g_object_set_data(h,"gtk_layout_height",cy);
|
g_object_set_data(h,"gtk_layout_height",cy);
|
||||||
flg .|=1;
|
flg .|=1;
|
||||||
|
|
@ -3995,6 +4012,18 @@ type tgtkapis = class() //gtk
|
||||||
_f_ := static function():pointer;cdecl;external getfuncptrbyname(0,functionname());
|
_f_ := static function():pointer;cdecl;external getfuncptrbyname(0,functionname());
|
||||||
return ##_f_();
|
return ##_f_();
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function gdk_keymap_get_for_display(disp:pointer):pointer;
|
||||||
|
begin
|
||||||
|
_f_ := static function(disp:pointer):pointer;cdecl;external getfuncptrbyname(0,functionname());
|
||||||
|
return ##_f_(disp);
|
||||||
|
end
|
||||||
|
function gdk_keymap_get_modifier_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;
|
function gdk_screen_get_default():pointer;
|
||||||
begin
|
begin
|
||||||
_f_ := static function():pointer;cdecl;external getfuncptrbyname(0,functionname());
|
_f_ := static function():pointer;cdecl;external getfuncptrbyname(0,functionname());
|
||||||
|
|
@ -4231,10 +4260,10 @@ type tgtkapis = class() //gtk
|
||||||
_f_ := static procedure(w:pointer;tip:string);cdecl;external getfuncptrbyname(0,functionname());
|
_f_ := static procedure(w:pointer;tip:string);cdecl;external getfuncptrbyname(0,functionname());
|
||||||
return ##_f_(w,tip);
|
return ##_f_(w,tip);
|
||||||
end
|
end
|
||||||
procedure gtk_widget_set_size_request(wd:pointer;h:integer;w:integer);
|
procedure gtk_widget_set_size_request(wd:pointer;w:integer;h:integer);
|
||||||
begin
|
begin
|
||||||
_f_ := static procedure(wd:pointer;h:integer;w:integer);cdecl;external getfuncptrbyname(0,functionname());
|
_f_ := static procedure(wd:pointer;w:integer;h:integer);cdecl;external getfuncptrbyname(0,functionname());
|
||||||
return ##_f_(wd,h,w);
|
return ##_f_(wd,w,h);
|
||||||
end
|
end
|
||||||
procedure gtk_widget_get_size_request(wd:pointer;var h:integer;var w:integer);
|
procedure gtk_widget_get_size_request(wd:pointer;var h:integer;var w:integer);
|
||||||
begin
|
begin
|
||||||
|
|
@ -4831,6 +4860,11 @@ type tgtkapis = class() //gtk
|
||||||
_f_ := static function():pointer;cdecl;external getfuncptrbyname(0,functionname());
|
_f_ := static function():pointer;cdecl;external getfuncptrbyname(0,functionname());
|
||||||
return ##_f_();
|
return ##_f_();
|
||||||
end
|
end
|
||||||
|
function gdk_window_get_window_type(w:pointer);
|
||||||
|
begin
|
||||||
|
_f_ := static function(w:pointer):integer;cdecl;external getfuncptrbyname(0,functionname());
|
||||||
|
return ##_f_(w);
|
||||||
|
end
|
||||||
procedure gdk_window_move_resize(w:pointer;x:integer;y:integer;wd:integer;h:integer);
|
procedure gdk_window_move_resize(w:pointer;x:integer;y:integer;wd:integer;h:integer);
|
||||||
begin
|
begin
|
||||||
_f_ := static procedure(w:pointer;x:integer;y:integer;wd:integer;h:integer);cdecl;external getfuncptrbyname(0,functionname());
|
_f_ := static procedure(w:pointer;x:integer;y:integer;wd:integer;h:integer);cdecl;external getfuncptrbyname(0,functionname());
|
||||||
|
|
@ -4897,10 +4931,10 @@ type tgtkapis = class() //gtk
|
||||||
_f_ := static function(w:pointer;p:pointer);cdecl;external getfuncptrbyname(0,functionname());
|
_f_ := static function(w:pointer;p:pointer);cdecl;external getfuncptrbyname(0,functionname());
|
||||||
return ##_f_(w,p);
|
return ##_f_(w,p);
|
||||||
end
|
end
|
||||||
procedure gtk_window_get_size(wd:pointer;var h:integer;var w:integer);
|
procedure gtk_window_get_size(wg:pointer;var w:integer;var h:integer);
|
||||||
begin
|
begin
|
||||||
_f_ := static procedure(wd:pointer;var h:integer;var w:integer);cdecl;external getfuncptrbyname(0,functionname());
|
_f_ := static procedure(wg:pointer;var w:integer;var h:integer);cdecl;external getfuncptrbyname(0,functionname());
|
||||||
return ##_f_(wd,h,w);
|
return ##_f_(wg,w,h);
|
||||||
end
|
end
|
||||||
procedure gtk_window_set_icon(w:pointer;ico:pointer);
|
procedure gtk_window_set_icon(w:pointer;ico:pointer);
|
||||||
begin
|
begin
|
||||||
|
|
@ -4912,6 +4946,11 @@ type tgtkapis = class() //gtk
|
||||||
_f_ := static procedure(w:pointer;p:integer);cdecl;external getfuncptrbyname(0,functionname());
|
_f_ := static procedure(w:pointer;p:integer);cdecl;external getfuncptrbyname(0,functionname());
|
||||||
return ##_f_(wd,ps);
|
return ##_f_(wd,ps);
|
||||||
end
|
end
|
||||||
|
procedure gtk_window_set_default_size(p:pointer;w:integer;h:integer);
|
||||||
|
begin
|
||||||
|
_f_ := static procedure(p:pointer;w:integer;h:integer);cdecl;external getfuncptrbyname(0,functionname());
|
||||||
|
return ##_f_(p,w,h);
|
||||||
|
end
|
||||||
procedure gtk_window_set_resizable(p:pointer;f:integer);
|
procedure gtk_window_set_resizable(p:pointer;f:integer);
|
||||||
begin
|
begin
|
||||||
_f_ := static procedure(p:pointer;f:integer);cdecl;external getfuncptrbyname(0,functionname());
|
_f_ := static procedure(p:pointer;f:integer);cdecl;external getfuncptrbyname(0,functionname());
|
||||||
|
|
@ -4937,6 +4976,16 @@ type tgtkapis = class() //gtk
|
||||||
_f_ := static procedure(w:pointer;t:string);cdecl;external getfuncptrbyname(0,functionname());
|
_f_ := static procedure(w:pointer;t:string);cdecl;external getfuncptrbyname(0,functionname());
|
||||||
return ##_f_(w,t);
|
return ##_f_(w,t);
|
||||||
end
|
end
|
||||||
|
procedure gtk_window_set_titlebar(w:pointer;t:pointer);
|
||||||
|
begin
|
||||||
|
_f_ := static procedure(w:pointer;t:pointer);cdecl;external getfuncptrbyname(0,functionname());
|
||||||
|
return ##_f_(w,t);
|
||||||
|
end
|
||||||
|
function gtk_window_get_titlebar(w:pointer);
|
||||||
|
begin
|
||||||
|
_f_ := static function(w:pointer):pointer;cdecl;external getfuncptrbyname(0,functionname());
|
||||||
|
return ##_f_(w);
|
||||||
|
end
|
||||||
procedure gtk_window_set_geometry_hints (window:pointer;eometry_widget:pointer;geometry:pointer;geom_mask:integer);
|
procedure gtk_window_set_geometry_hints (window:pointer;eometry_widget:pointer;geometry:pointer;geom_mask:integer);
|
||||||
begin
|
begin
|
||||||
_f_ := static procedure(window:pointer;eometry_widget:pointer;geometry:pointer;geom_mask:integer);cdecl;external getfuncptrbyname(0,functionname());
|
_f_ := static procedure(window:pointer;eometry_widget:pointer;geometry:pointer;geom_mask:integer);cdecl;external getfuncptrbyname(0,functionname());
|
||||||
|
|
@ -6560,8 +6609,9 @@ type tgtk_ctl_object = class(_gtkeventtype)
|
||||||
Fdwstyle;
|
Fdwstyle;
|
||||||
FExdwstyle;
|
FExdwstyle;
|
||||||
///////////////////////////////////
|
///////////////////////////////////
|
||||||
function CanignoreBtnpress();virtual;
|
function CanignoreBtnpress();virtual; //忽略
|
||||||
begin
|
begin
|
||||||
|
// return false;
|
||||||
return true;
|
return true;
|
||||||
end
|
end
|
||||||
public
|
public
|
||||||
|
|
@ -6583,6 +6633,22 @@ type tgtk_ctl_object = class(_gtkeventtype)
|
||||||
FHitwidgetposition := 0;
|
FHitwidgetposition := 0;
|
||||||
end
|
end
|
||||||
static FLastPosition;
|
static FLastPosition;
|
||||||
|
class function mywidgetmousehit(id,p);
|
||||||
|
begin
|
||||||
|
return executeMessageA(id,_const.WM_NCHITTEST,0,makelong(p[0],p[1]));
|
||||||
|
end
|
||||||
|
class function mywidgetmousemovecall(id,p);
|
||||||
|
begin
|
||||||
|
if hasMessageFromGtkMessageQueue(id,_const.WM_MOUSEMOVE) then return ;
|
||||||
|
mp := makelong(p[0],p[1]);
|
||||||
|
global g_gtk_keytable,g_gtk_buttontable;
|
||||||
|
wp := 0;
|
||||||
|
if g_gtk_keytable[0x10] then wp .|= 0x0004;
|
||||||
|
if g_gtk_keytable[0x11] then wp .|= 0x0008;
|
||||||
|
wp .|= g_gtk_buttontable[0];
|
||||||
|
wp .|= g_gtk_buttontable[1];
|
||||||
|
AddMessageToGtkMessageQueue(id,_const.WM_MOUSEMOVE,wp,mp,0);
|
||||||
|
end
|
||||||
class function widgetmousehit(nfer,id);
|
class function widgetmousehit(nfer,id);
|
||||||
begin
|
begin
|
||||||
_wapi.GetCursorPos(p);
|
_wapi.GetCursorPos(p);
|
||||||
|
|
@ -6767,86 +6833,97 @@ type tgtk_ctl_object = class(_gtkeventtype)
|
||||||
_f_ := static function(w:pointer):integegr;cdecl;external getfuncptrbyname(0,functionname());
|
_f_ := static function(w:pointer):integegr;cdecl;external getfuncptrbyname(0,functionname());
|
||||||
return ##_f_(w);
|
return ##_f_(w);
|
||||||
end
|
end
|
||||||
|
function imitate_event_size();virtual; //模拟移动
|
||||||
|
begin
|
||||||
|
return true;
|
||||||
|
end
|
||||||
|
function get_ignore_event_type(tp);virtual;
|
||||||
|
begin
|
||||||
|
return false;
|
||||||
|
end
|
||||||
function GtkEventDispatchA(a,b,c,d);//gtk消息分发
|
function GtkEventDispatchA(a,b,c,d);//gtk消息分发
|
||||||
begin
|
begin
|
||||||
global g_gtk_scroll_lock;
|
if imitate_event_size() then
|
||||||
if g_gtk_scroll_lock then
|
begin
|
||||||
begin
|
global g_gtk_scroll_lock;
|
||||||
return true;
|
if g_gtk_scroll_lock then
|
||||||
end
|
|
||||||
if FHitwidgetposition in array(110,111,112,115) then
|
|
||||||
begin
|
|
||||||
mn := GetGtkEventNameOrId(b);
|
|
||||||
if mn="event" then
|
|
||||||
begin
|
begin
|
||||||
e := new _GdkEventAny(c);
|
return true;
|
||||||
if 3=e.ttype then
|
end
|
||||||
begin
|
if FHitwidgetposition in array(110,111,112,115) then
|
||||||
ogps := Fsyscommand0x12info[0];
|
|
||||||
xy := Fsyscommand0x12info[1];
|
|
||||||
cxy := array(0,0);
|
|
||||||
_wapi.GetCursorPos(cxy);
|
|
||||||
dx := cxy[0]-ogps[0];
|
|
||||||
dy := cxy[1]-ogps[1];
|
|
||||||
case FHitwidgetposition of //0 ÐÞ¸ÄΪ -1
|
|
||||||
110:
|
|
||||||
begin
|
|
||||||
if dx<>0 then _wapi.SetWindowPos(a.handle,-1,xy[0]+dx,xy[1],xy[2]-dx,xy[3],0);
|
|
||||||
end
|
|
||||||
111:
|
|
||||||
begin
|
|
||||||
if dx<>0 then _wapi.SetWindowPos(a.handle,-1,xy[0],xy[1],xy[2]+dx,xy[3],0);
|
|
||||||
end
|
|
||||||
112:
|
|
||||||
begin
|
|
||||||
if dy<>0 then _wapi.SetWindowPos(a.handle,-1,xy[0],xy[1]+dy,xy[2],xy[3]-dy,0);
|
|
||||||
end
|
|
||||||
115:
|
|
||||||
begin
|
|
||||||
if dy<>0 then _wapi.SetWindowPos(a.handle,-1,xy[0],xy[1],xy[2],xy[3]+dy,0);
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
end;
|
|
||||||
return 1;
|
|
||||||
end else
|
|
||||||
if 7 = e.ttype then
|
|
||||||
begin
|
|
||||||
FHitwidgetposition := 0;
|
|
||||||
Fsyscommand0x12info := nil;
|
|
||||||
FMousemoveernotify.unlock();
|
|
||||||
//return ;
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end else
|
|
||||||
if Fsyscommand0x12 and ifarray(Fsyscommand0x12info) then
|
|
||||||
begin
|
|
||||||
mn := GetGtkEventNameOrId(b);
|
|
||||||
if mn="event" then
|
|
||||||
begin
|
begin
|
||||||
e := new _GdkEventAny(c);
|
mn := GetGtkEventNameOrId(b);
|
||||||
if 3=e.ttype then
|
if mn="event" then
|
||||||
begin
|
begin
|
||||||
ogps := Fsyscommand0x12info[0];
|
e := new _GdkEventAny(c);
|
||||||
xy := Fsyscommand0x12info[1];
|
if 3=e.ttype then
|
||||||
cxy := array(0,0);
|
|
||||||
_wapi.GetCursorPos(cxy);
|
|
||||||
dx := cxy[0]-ogps[0];
|
|
||||||
dy := cxy[1]-ogps[1];
|
|
||||||
if dx>3 or dx<-3 or dy<-3 or dy>3 then
|
|
||||||
begin
|
begin
|
||||||
_wapi.SetWindowPos(a.handle,0,xy[0]+dx,xy[1]+dy,-1,-1,0);
|
ogps := Fsyscommand0x12info[0];
|
||||||
|
xy := Fsyscommand0x12info[1];
|
||||||
|
cxy := array(0,0);
|
||||||
|
_wapi.GetCursorPos(cxy);
|
||||||
|
dx := cxy[0]-ogps[0];
|
||||||
|
dy := cxy[1]-ogps[1];
|
||||||
|
case FHitwidgetposition of //0 修改为 -1
|
||||||
|
110:
|
||||||
|
begin
|
||||||
|
if dx<>0 then _wapi.SetWindowPos(a.handle,-1,xy[0]+dx,xy[1],xy[2]-dx,xy[3],0);
|
||||||
|
end
|
||||||
|
111:
|
||||||
|
begin
|
||||||
|
if dx<>0 then _wapi.SetWindowPos(a.handle,-1,xy[0],xy[1],xy[2]+dx,xy[3],0);
|
||||||
|
end
|
||||||
|
112:
|
||||||
|
begin
|
||||||
|
if dy<>0 then _wapi.SetWindowPos(a.handle,-1,xy[0],xy[1]+dy,xy[2],xy[3]-dy,0);
|
||||||
|
end
|
||||||
|
115:
|
||||||
|
begin
|
||||||
|
if dy<>0 then _wapi.SetWindowPos(a.handle,-1,xy[0],xy[1],xy[2],xy[3]+dy,0);
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
end;
|
||||||
|
return 1;
|
||||||
|
end else
|
||||||
|
if 7 = e.ttype then
|
||||||
|
begin
|
||||||
|
FHitwidgetposition := 0;
|
||||||
|
Fsyscommand0x12info := nil;
|
||||||
|
FMousemoveernotify.unlock();
|
||||||
|
//return ;
|
||||||
end
|
end
|
||||||
return 1;
|
end
|
||||||
end else
|
end else
|
||||||
if 7 = e.ttype then
|
if Fsyscommand0x12 and ifarray(Fsyscommand0x12info) then
|
||||||
|
begin
|
||||||
|
mn := GetGtkEventNameOrId(b);
|
||||||
|
if mn="event" then
|
||||||
begin
|
begin
|
||||||
Fsyscommand0x12 := false;
|
e := new _GdkEventAny(c);
|
||||||
Fsyscommand0x12info := nil;
|
if 3=e.ttype then
|
||||||
FMousemoveernotify.unlock();
|
begin
|
||||||
//return ;
|
ogps := Fsyscommand0x12info[0];
|
||||||
end
|
xy := Fsyscommand0x12info[1];
|
||||||
end
|
cxy := array(0,0);
|
||||||
|
_wapi.GetCursorPos(cxy);
|
||||||
|
dx := cxy[0]-ogps[0];
|
||||||
|
dy := cxy[1]-ogps[1];
|
||||||
|
if dx>3 or dx<-3 or dy<-3 or dy>3 then
|
||||||
|
begin
|
||||||
|
_wapi.SetWindowPos(a.handle,0,xy[0]+dx,xy[1]+dy,-1,-1,0);
|
||||||
|
end
|
||||||
|
return 1;
|
||||||
|
end else
|
||||||
|
if 7 = e.ttype then
|
||||||
|
begin
|
||||||
|
Fsyscommand0x12 := false;
|
||||||
|
Fsyscommand0x12info := nil;
|
||||||
|
FMousemoveernotify.unlock();
|
||||||
|
//return ;
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
return GtkEventDispatchb(a,b,c,d);
|
return GtkEventDispatchb(a,b,c,d);
|
||||||
end
|
end
|
||||||
|
|
@ -6856,7 +6933,9 @@ type tgtk_ctl_object = class(_gtkeventtype)
|
||||||
global g_current_get_focus_widget,g_current_loss_focus_widget,g_gtk_buttontable,G_GTK_WINDOW_ACTIVATE, g_gtk_keytable;
|
global g_current_get_focus_widget,g_current_loss_focus_widget,g_gtk_buttontable,G_GTK_WINDOW_ACTIVATE, g_gtk_keytable;
|
||||||
if mn = "event" then
|
if mn = "event" then
|
||||||
begin
|
begin
|
||||||
e := new _GdkEventAny(c);
|
e := new _GdkEventAny(c);
|
||||||
|
//echo "\r\nwindow:",_wapi.gtk_widget_get_window(a.handle)," ",e.window;
|
||||||
|
if get_ignore_event_type(e) then return false;
|
||||||
case e.ttype of
|
case e.ttype of
|
||||||
GDK_WINDOW_STATE:
|
GDK_WINDOW_STATE:
|
||||||
begin
|
begin
|
||||||
|
|
@ -6908,6 +6987,8 @@ type tgtk_ctl_object = class(_gtkeventtype)
|
||||||
end
|
end
|
||||||
GDK_BUTTON_PRESS:
|
GDK_BUTTON_PRESS:
|
||||||
begin
|
begin
|
||||||
|
//echo "\r\n bt press",datetimetostr(now())," ",handle," ",e.window," >>",_Wapi.gtk_widget_get_window(handle),"+++",_wapi.gdk_window_get_window_type(e.window),"***",
|
||||||
|
// _wapi.gtk_widget_get_toplevel(handle);
|
||||||
e := new _GdkEventButton(c);
|
e := new _GdkEventButton(c);
|
||||||
psi := makelong(integer(e.x),integer(e.y));
|
psi := makelong(integer(e.x),integer(e.y));
|
||||||
//r := array();
|
//r := array();
|
||||||
|
|
@ -7014,7 +7095,8 @@ type tgtk_ctl_object = class(_gtkeventtype)
|
||||||
CallTslVclProc(_const.WM_RBUTTONDBLCLK ,wp,psi);
|
CallTslVclProc(_const.WM_RBUTTONDBLCLK ,wp,psi);
|
||||||
end
|
end
|
||||||
end ;
|
end ;
|
||||||
return CanignoreBtnpress();
|
//return true; //此处处理
|
||||||
|
return CanignoreBtnpress();
|
||||||
end
|
end
|
||||||
8,9: //key
|
8,9: //key
|
||||||
begin
|
begin
|
||||||
|
|
@ -7024,7 +7106,7 @@ type tgtk_ctl_object = class(_gtkeventtype)
|
||||||
|
|
||||||
e := new _GdkEventKey(c);
|
e := new _GdkEventKey(c);
|
||||||
kv := e.keyval;
|
kv := e.keyval;
|
||||||
acskey := array(
|
{acskey := array(
|
||||||
65505: 0x10, //shift
|
65505: 0x10, //shift
|
||||||
65506: 0x10,
|
65506: 0x10,
|
||||||
65507: 0x11, //control
|
65507: 0x11, //control
|
||||||
|
|
@ -7041,7 +7123,7 @@ type tgtk_ctl_object = class(_gtkeventtype)
|
||||||
begin
|
begin
|
||||||
g_gtk_keytable[acskey[kv]] := 0;
|
g_gtk_keytable[acskey[kv]] := 0;
|
||||||
end
|
end
|
||||||
end
|
end }
|
||||||
///////////////菜单按键
|
///////////////菜单按键
|
||||||
if kv = 65513 or kv = 65514 then
|
if kv = 65513 or kv = 65514 then
|
||||||
begin
|
begin
|
||||||
|
|
@ -7371,7 +7453,7 @@ type tgtk_ctl_object = class(_gtkeventtype)
|
||||||
//e := new _GdkEventCrossing(c);
|
//e := new _GdkEventCrossing(c);
|
||||||
//echo tostn(e._getdata_());
|
//echo tostn(e._getdata_());
|
||||||
//echo "===enter\r\n";
|
//echo "===enter\r\n";
|
||||||
FMousemoveernotify.push(a.handle);
|
//FMousemoveernotify.push(a.handle);
|
||||||
//_wapi.GetCursorPos(ps);
|
//_wapi.GetCursorPos(ps);
|
||||||
//e := new _GdkEventMotion(c);
|
//e := new _GdkEventMotion(c);
|
||||||
//echo "\r\n enter:",a.handle,tostn(ps),tostn(e._getdata_());
|
//echo "\r\n enter:",a.handle,tostn(ps),tostn(e._getdata_());
|
||||||
|
|
@ -7379,18 +7461,16 @@ type tgtk_ctl_object = class(_gtkeventtype)
|
||||||
|
|
||||||
11: //mouse out
|
11: //mouse out
|
||||||
begin
|
begin
|
||||||
FMousemoveernotify.pop(a.handle);
|
//FMousemoveernotify.pop(a.handle);
|
||||||
//echo "\r\nleave:",a.handle;
|
//echo "\r\nleave:",a.handle;
|
||||||
end
|
end
|
||||||
3:
|
3:
|
||||||
begin
|
begin
|
||||||
// echo "\r\n move",datetimetostr(now()),"====",a.handle,"****",FMousemoveernotify.feach();
|
e := new _GdkEventMotion(c);
|
||||||
// if not(FMousemoveernotify.inner(a.handle)) then
|
//CallTslVclProc(_const.WM_MOUSEMOVE ,0,makelong(integer(e.x),integer(e.y)),true);
|
||||||
// begin
|
id := a.handle;
|
||||||
// echo "====move=====";
|
mywidgetmousehit(id,array(integer(e.x_root),integer(e.y_root)));
|
||||||
// e := new _GdkEventMotion(c);
|
mywidgetmousemovecall(id,array(integer(e.x),integer(e.y)));
|
||||||
// CallTslVclProc(_const.WM_MOUSEMOVE ,0,makelong(integer(e.x),integer(e.y)));
|
|
||||||
// end
|
|
||||||
|
|
||||||
end
|
end
|
||||||
12: //focus
|
12: //focus
|
||||||
|
|
@ -7436,10 +7516,10 @@ type tgtk_ctl_object = class(_gtkeventtype)
|
||||||
end ;
|
end ;
|
||||||
end
|
end
|
||||||
|
|
||||||
if mn="activate" then
|
//if mn="activate" then
|
||||||
begin
|
//begin
|
||||||
//echo "\r\nacive","==",b,"==",c,"d";
|
//echo "\r\nacive","==",b,"==",c,"d";
|
||||||
end
|
//end
|
||||||
//
|
//
|
||||||
r := GtkEventDispatch(a,mn,c,d);
|
r := GtkEventDispatch(a,mn,c,d);
|
||||||
return r;
|
return r;
|
||||||
|
|
@ -7567,6 +7647,14 @@ type tgtk_ctl_object = class(_gtkeventtype)
|
||||||
"activate-default":"tsl_gtk_activate_default_event_cb"
|
"activate-default":"tsl_gtk_activate_default_event_cb"
|
||||||
);
|
);
|
||||||
end
|
end
|
||||||
|
function connect_test(n,f); //测试使用
|
||||||
|
begin
|
||||||
|
if FHandle=0 then return 0;
|
||||||
|
if not ifstring(n) then return 0;
|
||||||
|
ln := FormularSignalName(lowercase(n));
|
||||||
|
eid := GetGtkEventNameOrId(ln);
|
||||||
|
lnid := g_signal_connect_data(FHandle, ln, makeinstance(fn), eid,nil,0);
|
||||||
|
end
|
||||||
function Connect(n,f); //连接消息
|
function Connect(n,f); //连接消息
|
||||||
begin
|
begin
|
||||||
//删除connect
|
//删除connect
|
||||||
|
|
@ -7574,7 +7662,7 @@ type tgtk_ctl_object = class(_gtkeventtype)
|
||||||
//connect id
|
//connect id
|
||||||
if FHandle=0 then return 0;
|
if FHandle=0 then return 0;
|
||||||
if not ifstring(n) then return 0;
|
if not ifstring(n) then return 0;
|
||||||
ln := FormularSingalName(lowercase(n));
|
ln := FormularSignalName(lowercase(n));
|
||||||
lnid := FConnectNameIds[ln];
|
lnid := FConnectNameIds[ln];
|
||||||
if lnid then
|
if lnid then
|
||||||
begin
|
begin
|
||||||
|
|
@ -7747,7 +7835,7 @@ type tgtk_ctl_object = class(_gtkeventtype)
|
||||||
function SetHandle(h);
|
function SetHandle(h);
|
||||||
begin
|
begin
|
||||||
if FHandle then return 0;
|
if FHandle then return 0;
|
||||||
initNewSingal();
|
initNewSignal();
|
||||||
FConnectNameIds := array();
|
FConnectNameIds := array();
|
||||||
FConnectHandlers := array();
|
FConnectHandlers := array();
|
||||||
FValues := array();
|
FValues := array();
|
||||||
|
|
@ -7764,7 +7852,7 @@ type tgtk_ctl_object = class(_gtkeventtype)
|
||||||
return true;
|
return true;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
function initNewSingal();
|
function initNewSignal();
|
||||||
begin
|
begin
|
||||||
return ;
|
return ;
|
||||||
//wm-user
|
//wm-user
|
||||||
|
|
@ -7785,7 +7873,7 @@ type tgtk_ctl_object = class(_gtkeventtype)
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
function FormularSingalName(n);
|
function FormularSignalName(n);
|
||||||
begin
|
begin
|
||||||
r := "";
|
r := "";
|
||||||
for i := 1 to length(n) do
|
for i := 1 to length(n) do
|
||||||
|
|
@ -7837,10 +7925,10 @@ type tgtk_im_object = class(tgtk_ctl_object)
|
||||||
function getsignalmap();override;
|
function getsignalmap();override;
|
||||||
begin
|
begin
|
||||||
return array(
|
return array(
|
||||||
"preedit-start":"dodeleteevents" ,
|
"preedit-start":"do_two_param_event" ,
|
||||||
"preedit-changed":"dodeleteevents" ,
|
"preedit-changed":"do_two_param_event" ,
|
||||||
"preedit-surrounding":"dodeleteevents" ,
|
"preedit-surrounding":"do_two_param_event" ,
|
||||||
"preedit-end":"dodeleteevents" ,
|
"preedit-end":"do_two_param_event" ,
|
||||||
"commit":"tsl_gtk_normal_event_cb"
|
"commit":"tsl_gtk_normal_event_cb"
|
||||||
);
|
);
|
||||||
end
|
end
|
||||||
|
|
@ -8502,7 +8590,7 @@ type tgtk_ctl_scroll_window = class(tgtk_ctl_object)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
protected
|
protected
|
||||||
function initadjustSingal();
|
function initadjustSignal();
|
||||||
begin
|
begin
|
||||||
FHadjustment := _wapi.gtk_adjustment_new(0.0,0.0,0.0,1.0,1.0,1.0);
|
FHadjustment := _wapi.gtk_adjustment_new(0.0,0.0,0.0,1.0,1.0,1.0);
|
||||||
FHscrollbar := _wapi.gtk_hscrollbar_new(FHadjustment);
|
FHscrollbar := _wapi.gtk_hscrollbar_new(FHadjustment);
|
||||||
|
|
@ -8562,6 +8650,21 @@ type tgtk_ctl_window_PoPup = class(tgtk_ctl_scroll_window)
|
||||||
end
|
end
|
||||||
inherited;
|
inherited;
|
||||||
end
|
end
|
||||||
|
function imitate_event_size();override;
|
||||||
|
begin
|
||||||
|
if _wapi.gtk_object_get_data(Handle,"gtk_wnd_hs_caption") then return false;
|
||||||
|
return true;
|
||||||
|
end
|
||||||
|
function get_ignore_event_type(e);override;
|
||||||
|
begin
|
||||||
|
tp := e.ttype;
|
||||||
|
h := handle;
|
||||||
|
if (tp in array(GDK_MOTION_NOTIFY,GDK_BUTTON_PRESS,GDK_BUTTON_RELEASE)) and _wapi.gtk_object_get_data(h,"gtk_wnd_hs_caption") and (e.window = _Wapi.gtk_widget_get_window(h)) then
|
||||||
|
begin
|
||||||
|
return true;
|
||||||
|
end
|
||||||
|
return false;
|
||||||
|
end
|
||||||
function GtkEventDispatch(a,mn,c,d);override;
|
function GtkEventDispatch(a,mn,c,d);override;
|
||||||
begin
|
begin
|
||||||
//消息分发
|
//消息分发
|
||||||
|
|
@ -8578,9 +8681,11 @@ type tgtk_ctl_window_PoPup = class(tgtk_ctl_scroll_window)
|
||||||
cf := new _GdkEventConfigure(c);
|
cf := new _GdkEventConfigure(c);
|
||||||
ALeft := integer(cf.x);
|
ALeft := integer(cf.x);
|
||||||
ATop := integer(cf.y);
|
ATop := integer(cf.y);
|
||||||
//echo "\r\n>>>",ALeft,"===",ATop;
|
//AWidth := integer(cf.width);
|
||||||
AWidth := integer(cf.width);
|
//AHeight := integer(cf.height);
|
||||||
AHeight := integer(cf.height);
|
//_wapi.gtk_window_get_position(h,aleft,atop);
|
||||||
|
_wapi.gtk_window_get_size(h,AWidth,AHeight);
|
||||||
|
//echo "\r\nconfigure:",AWidth," ",AHeight;
|
||||||
SizeChanged :=(cx <> AWidth)or(cy <> AHeight);
|
SizeChanged :=(cx <> AWidth)or(cy <> AHeight);
|
||||||
PosChanged :=(x <> ALeft)or(y <> ATop);
|
PosChanged :=(x <> ALeft)or(y <> ATop);
|
||||||
if(not SizeChanged)and(not PosChanged)then
|
if(not SizeChanged)and(not PosChanged)then
|
||||||
|
|
@ -8626,19 +8731,32 @@ type tgtk_ctl_window_PoPup = class(tgtk_ctl_scroll_window)
|
||||||
function CreateWnd(dwExStyle,lpClassName,lpWindowName,dwStyle,x,y,nwidth,nheight,hwndparent,hmenu,hinstance,lpParam);override;
|
function CreateWnd(dwExStyle,lpClassName,lpWindowName,dwStyle,x,y,nwidth,nheight,hwndparent,hmenu,hinstance,lpParam);override;
|
||||||
begin
|
begin
|
||||||
//echo "\r\nctl===popup:",tostn(params),tostn(__stack_frame),datetimetostr(now()),">>>>";
|
//echo "\r\nctl===popup:",tostn(params),tostn(__stack_frame),datetimetostr(now()),">>>>";
|
||||||
h := _wapi.gtk_window_new(0); //¿Ø¼þ²ã
|
|
||||||
srszie := (_const.WS_SIZEBOX .& dwStyle)=_const.WS_SIZEBOX;
|
hascap := (_const.WS_CAPTION .& dwStyle)= _const.WS_CAPTION or (_const.WS_SYSMENU .& dwStyle)=_const.WS_SYSMENU;
|
||||||
|
srszie :=((_const.WS_MAXIMIZEBOX .& dwStyle)=_const.WS_MAXIMIZEBOX) or ((_const.WS_SIZEBOX .& dwStyle)=_const.WS_SIZEBOX);
|
||||||
|
//h := _wapi.gtk_window_new(0); //控件层
|
||||||
|
if hascap or srszie then
|
||||||
|
begin
|
||||||
|
h := _wapi.gtk_window_new(0); //控件层
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
h := _wapi.gtk_window_new(0); //popup
|
||||||
|
end
|
||||||
|
|
||||||
|
//_wapi.gtk_widget_set_events(h,0x3FFFFFE);
|
||||||
|
_wapi.gtk_window_set_default_size(h,10,10);
|
||||||
|
//_wapi.gtk_widget_set_size_request(h,300,300);
|
||||||
_wapi.gtk_object_set_data(h,"gtk_wnd_hs_caption",1);
|
_wapi.gtk_object_set_data(h,"gtk_wnd_hs_caption",1);
|
||||||
if not((_const.WS_CAPTION .& dwStyle)= _const.WS_CAPTION or (_const.WS_SYSMENU .& dwStyle)=_const.WS_SYSMENU) then
|
if not(hascap or srszie) then
|
||||||
begin
|
begin
|
||||||
|
|
||||||
_wapi.gtk_window_set_decorated(h,false);
|
_wapi.gtk_window_set_decorated(h,false);
|
||||||
_wapi.gtk_object_set_data(h,"gtk_wnd_hs_caption",0);
|
_wapi.gtk_object_set_data(h,"gtk_wnd_hs_caption",0);
|
||||||
//无菜单顶层窗口
|
//无菜单顶层窗口
|
||||||
end else
|
end else
|
||||||
begin
|
begin
|
||||||
//nheight := max(10,nheight_-30);
|
_wapi.gtk_window_set_decorated(h,true);
|
||||||
_wapi.gtk_window_set_title(h,_wapi.TslStringToGtk(lpWindowName));
|
_wapi.gtk_window_set_title(h,_wapi.TslStringToGtk(lpWindowName));
|
||||||
//有标题 有菜单的顶层窗口
|
//有标题 有菜单的顶层窗口
|
||||||
end
|
end
|
||||||
if (_const.WS_BORDER .& dwStyle)=_const.WS_BORDER then //Border
|
if (_const.WS_BORDER .& dwStyle)=_const.WS_BORDER then //Border
|
||||||
|
|
@ -8663,41 +8781,40 @@ type tgtk_ctl_window_PoPup = class(tgtk_ctl_scroll_window)
|
||||||
|
|
||||||
FLayouter := ctllayout;
|
FLayouter := ctllayout;
|
||||||
/////////////////////////水平滚动条////////////////////////////////////
|
/////////////////////////水平滚动条////////////////////////////////////
|
||||||
initadjustSingal();
|
initadjustSignal();
|
||||||
evtdrawbox := _wapi.gtk_event_box_new(); //lot 放一个event box 便于绘制
|
evtdrawbox := _wapi.gtk_event_box_new(); //lot 放一个event box 便于绘制
|
||||||
|
_wapi.gtk_widget_set_events(evtdrawbox, 0x3FFFFFE);
|
||||||
_wapi.gtk_layout_put(ctllayout,evtdrawbox,0,0);
|
_wapi.gtk_layout_put(ctllayout,evtdrawbox,0,0);
|
||||||
clientLayout := _Wapi.gtk_layout_new(0,0);
|
clientLayout := _Wapi.gtk_layout_new(0,0);
|
||||||
_wapi.gtk_container_add(evtdrawbox,clientLayout);
|
_wapi.gtk_container_add(evtdrawbox,clientLayout);
|
||||||
global g_w_c_width;
|
global g_w_c_width;
|
||||||
pcd := _wapi.gtk_object_get_data(h,"gtk_wnd_hs_caption")?g_w_c_width:0;
|
pcd := _wapi.gtk_object_get_data(h,"gtk_wnd_hs_caption")?g_w_c_width:0;
|
||||||
_wapi.gtk_widget_set_size_request(evtdrawbox,nwidth,max(0,nheight-pcd));
|
//_wapi.gtk_widget_set_size_request(evtdrawbox,nwidth,max(0,nheight-pcd));
|
||||||
//_wapi.gtk_widget_set_size_request(evtdrawbox,2000,2000);
|
|
||||||
//_wapi.gtk_widget_set_events(eb,16777214);
|
|
||||||
_wapi.g_object_set_data(evtdrawbox,"gtk_client_parent",h);
|
_wapi.g_object_set_data(evtdrawbox,"gtk_client_parent",h);
|
||||||
FClientWideget := evtdrawbox;
|
FClientWideget := evtdrawbox;
|
||||||
//_wapi.gtk_widget_set_can_focus(eb,true);
|
//_wapi.gtk_widget_set_can_focus(eb,true);
|
||||||
_wapi.g_object_set_data(h,"gtk_layout",clientLayout);
|
_wapi.g_object_set_data(h,"gtk_layout",clientLayout);
|
||||||
_wapi.g_object_set_data(clientLayout,"gtk_layout_owner",h);
|
_wapi.g_object_set_data(clientLayout,"gtk_layout_owner",h);
|
||||||
|
|
||||||
InitWidgetSize(h,x,y,nwidth,nheight);
|
InitWidgetSize(h,x,y,nwidth,nheight);
|
||||||
|
|
||||||
_wapi.gtk_window_move(h,x,max(0,y-pcd));
|
|
||||||
if nwidth>0 and nheight>0 then
|
if nwidth>0 and nheight>0 then
|
||||||
begin
|
begin
|
||||||
_wapi.gtk_window_resize(h,nwidth,max(0,nheight-pcd));
|
_wapi.gtk_window_resize(h,nwidth,max(1,nheight-pcd));
|
||||||
end
|
end
|
||||||
|
_wapi.gtk_window_move(h,x,max(0,y-pcd));
|
||||||
_wapi.gtk_widget_show_all(vbox);
|
_wapi.gtk_widget_show_all(vbox);
|
||||||
InitContainerList(h); //ÈÝÆ÷list
|
InitContainerList(h); //容器list
|
||||||
|
handle := h;
|
||||||
|
_wapi.SetParent(h,hwndparent);
|
||||||
if (_const.WS_VISIBLE .& dwStyle)=_const.WS_VISIBLE then
|
if (_const.WS_VISIBLE .& dwStyle)=_const.WS_VISIBLE then
|
||||||
begin
|
begin
|
||||||
_wapi.ShowWindow(h);
|
//_wapi.ShowWindow(h);
|
||||||
|
_wapi.gtk_widget_show(h);
|
||||||
end else
|
end else
|
||||||
begin
|
begin
|
||||||
_wapi.gtk_widget_hide(h);
|
_wapi.gtk_widget_hide(h);
|
||||||
end
|
end
|
||||||
_wapi.SetParent(h,hwndparent);
|
|
||||||
handle := h;
|
|
||||||
return inherited;
|
return inherited;
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -8736,6 +8853,7 @@ type tgtk_ctl_window = class(tgtk_ctl_scroll_window)
|
||||||
ctllayout := _Wapi.gtk_layout_new(0,0);//控件布局层
|
ctllayout := _Wapi.gtk_layout_new(0,0);//控件布局层
|
||||||
_wapi.gtk_container_add(h,ctllayout);
|
_wapi.gtk_container_add(h,ctllayout);
|
||||||
evtdrawbox := _wapi.gtk_event_box_new(); //布局绘制层
|
evtdrawbox := _wapi.gtk_event_box_new(); //布局绘制层
|
||||||
|
_wapi.gtk_widget_set_events(evtdrawbox, 0x3FFFFFE);
|
||||||
clientlayout := _wapi.gtk_layout_new(0,0); //客户区布局层
|
clientlayout := _wapi.gtk_layout_new(0,0); //客户区布局层
|
||||||
_wapi.gtk_container_add(evtdrawbox,clientlayout);
|
_wapi.gtk_container_add(evtdrawbox,clientlayout);
|
||||||
_wapi.gtk_layout_put(ctllayout,evtdrawbox,0,0);
|
_wapi.gtk_layout_put(ctllayout,evtdrawbox,0,0);
|
||||||
|
|
@ -8755,7 +8873,7 @@ type tgtk_ctl_window = class(tgtk_ctl_scroll_window)
|
||||||
_wapi.gtk_widget_show(h);
|
_wapi.gtk_widget_show(h);
|
||||||
end
|
end
|
||||||
/////////////////////////滚动条////////////////////////////////////
|
/////////////////////////滚动条////////////////////////////////////
|
||||||
initadjustSingal();
|
initadjustSignal();
|
||||||
///////////////////////////颜色处理/////////////////////////////////////////
|
///////////////////////////颜色处理/////////////////////////////////////////
|
||||||
{c := new _GdkColor(nil);
|
{c := new _GdkColor(nil);
|
||||||
c.SetRgb(0,0xffff,0);
|
c.SetRgb(0,0xffff,0);
|
||||||
|
|
@ -9293,9 +9411,24 @@ begin
|
||||||
_f_ := static function(argc:string;argcv:string):integer;cdecl;external getfuncptrbyname(0,functionname());
|
_f_ := static function(argc:string;argcv:string):integer;cdecl;external getfuncptrbyname(0,functionname());
|
||||||
return ##_f_(argc,argcv);
|
return ##_f_(argc,argcv);
|
||||||
end
|
end
|
||||||
|
function signal_connect_data(instance:pointer; detailed_signal:string; c_handler:pointer;data:pointer;dd:pointer;f:integer):pointer;
|
||||||
|
begin
|
||||||
|
_f_ := static function(instance:pointer; detailed_signal:string; c_handler:pointer;data:pointer;dd:pointer;f:integer):pointer;cdecl;external getfuncptrbyname(0,"g_signal_connect_data");
|
||||||
|
return ##_f_(instance,detailed_signal,c_handler,data,dd,f);
|
||||||
|
end
|
||||||
|
function keymap_get_modifier_state(kmp:pointer):integer;
|
||||||
|
begin
|
||||||
|
_f_ := static function(kmp:pointer):integer;cdecl;external getfuncptrbyname(0,"gdk_keymap_get_modifier_state");
|
||||||
|
return ##_f_(kmp);
|
||||||
|
end
|
||||||
|
function keymap_get_default():pointer;
|
||||||
|
begin
|
||||||
|
_f_ := static function():pointer;cdecl;external getfuncptrbyname(0,"gdk_keymap_get_default");
|
||||||
|
return ##_f_();
|
||||||
|
end
|
||||||
function igtk();
|
function igtk();
|
||||||
begin
|
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;
|
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_font_get_size := array();
|
g_gtk_font_get_size := array();
|
||||||
gtk_init_check(nil,nil);
|
gtk_init_check(nil,nil);
|
||||||
g_w_i_datas := array();
|
g_w_i_datas := array();
|
||||||
|
|
@ -9303,6 +9436,8 @@ begin
|
||||||
g_gtk_buttontable := array(0,0);
|
g_gtk_buttontable := array(0,0);
|
||||||
g_gtk_keytable := array(0x10:0,0x11:0,0x12:0);
|
g_gtk_keytable := array(0x10:0,0x11:0,0x12:0);
|
||||||
g_gtk_call_handler_manager := new tinstancemanager();
|
g_gtk_call_handler_manager := new tinstancemanager();
|
||||||
|
kmp := keymap_get_default();
|
||||||
|
signal_connect_data(kmp,"state-changed",g_gtk_call_handler_manager.get(thisfunction(tsl_gtk_keymp_state)),0,0);
|
||||||
end
|
end
|
||||||
function ugtk();
|
function ugtk();
|
||||||
begin
|
begin
|
||||||
|
|
@ -9325,7 +9460,7 @@ begin
|
||||||
"tsl_gtk_day_select_event": return mgnr.get(thisfunction(tsl_gtk_day_select_event));
|
"tsl_gtk_day_select_event": return mgnr.get(thisfunction(tsl_gtk_day_select_event));
|
||||||
"tsl_gtk_changed_event": return mgnr.get(thisfunction(tsl_gtk_changed_event));
|
"tsl_gtk_changed_event": return mgnr.get(thisfunction(tsl_gtk_changed_event));
|
||||||
"tsl_gtk_preedit_changed_event": return mgnr.get(thisfunction(tsl_gtk_preedit_changed_event));
|
"tsl_gtk_preedit_changed_event": return mgnr.get(thisfunction(tsl_gtk_preedit_changed_event));
|
||||||
"dodeleteevents": return mgnr.get(thisfunction(dodeleteevents));
|
"do_two_param_event": return mgnr.get(thisfunction(do_two_param_event));
|
||||||
"tsl_gtk_normal_event_cb": return mgnr.get(thisfunction(tsl_gtk_normal_event_cb));
|
"tsl_gtk_normal_event_cb": return mgnr.get(thisfunction(tsl_gtk_normal_event_cb));
|
||||||
"tsl_gtk_normal_event_bc": return mgnr.get(thisfunction(tsl_gtk_normal_event_bc));
|
"tsl_gtk_normal_event_bc": return mgnr.get(thisfunction(tsl_gtk_normal_event_bc));
|
||||||
"tsl_gtk_idle": return mgnr.get(thisfunction(tsl_gtk_idle));
|
"tsl_gtk_idle": return mgnr.get(thisfunction(tsl_gtk_idle));
|
||||||
|
|
@ -9345,6 +9480,27 @@ begin
|
||||||
mgnr := g_gtk_call_handler_manager;
|
mgnr := g_gtk_call_handler_manager;
|
||||||
return mgnr.del(fn);
|
return mgnr.del(fn);
|
||||||
end
|
end
|
||||||
|
procedure tsl_gtk_keymp_state(kmp:pointer;d:pointer);
|
||||||
|
begin
|
||||||
|
global g_gtk_keytable;
|
||||||
|
g_gtk_keytable := array(0x10:0,0x11:0,0x12:0);
|
||||||
|
state := keymap_get_modifier_state(kmp);
|
||||||
|
if state>0 then
|
||||||
|
begin
|
||||||
|
if (state .& 1) = 1 then
|
||||||
|
begin
|
||||||
|
g_gtk_keytable[0x10] := _shl( 1,15);
|
||||||
|
end else
|
||||||
|
if (state .& 4) = 4 then
|
||||||
|
begin
|
||||||
|
g_gtk_keytable[0x11] := _shl( 1,15);
|
||||||
|
end else
|
||||||
|
if (state .& 8) = 8 then
|
||||||
|
begin
|
||||||
|
g_gtk_keytable[0x12] := _shl( 1,15);
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
function tsl_gtk_idle(dlg:pointer):integer;
|
function tsl_gtk_idle(dlg:pointer):integer;
|
||||||
begin
|
begin
|
||||||
return _gtkidledo_(dlg);
|
return _gtkidledo_(dlg);
|
||||||
|
|
@ -9361,7 +9517,7 @@ end
|
||||||
function tsl_gtk_activate_default_event_cb(a:pointer;b:pointer):integer;
|
function tsl_gtk_activate_default_event_cb(a:pointer;b:pointer):integer;
|
||||||
begin
|
begin
|
||||||
//return _gtkeventcall_(a,c,b);
|
//return _gtkeventcall_(a,c,b);
|
||||||
return dodeleteevents(a, "activate-default");
|
return do_two_param_event(a, "activate-default");
|
||||||
//activate-default;
|
//activate-default;
|
||||||
end
|
end
|
||||||
function tsl_gtk_preedit_changed_event(a:pointer;b:pointer;c:pointer):integer;
|
function tsl_gtk_preedit_changed_event(a:pointer;b:pointer;c:pointer):integer;
|
||||||
|
|
@ -9370,27 +9526,27 @@ begin
|
||||||
end
|
end
|
||||||
function tsl_gtk_changed_event(a:pointer;b:pointer):integer;
|
function tsl_gtk_changed_event(a:pointer;b:pointer):integer;
|
||||||
begin
|
begin
|
||||||
return dodeleteevents(a, "changed");
|
return do_two_param_event(a, "changed");
|
||||||
end
|
end
|
||||||
function tsl_gtk_day_select_event(a:pointer;b:pointer):integer;
|
function tsl_gtk_day_select_event(a:pointer;b:pointer):integer;
|
||||||
begin
|
begin
|
||||||
return dodeleteevents(a, "day-selected");
|
return do_two_param_event(a, "day-selected");
|
||||||
end
|
end
|
||||||
function tsl_gtk_delete_event(a:pointer;b:pointer):integer;
|
function tsl_gtk_delete_event(a:pointer;b:pointer):integer;
|
||||||
begin
|
begin
|
||||||
return dodeleteevents(a, "delete-event");
|
return do_two_param_event(a, "delete-event");
|
||||||
end
|
end
|
||||||
function tsl_gtk_adj_value_changed_event(a:pointer;b:pointer):integer;
|
function tsl_gtk_adj_value_changed_event(a:pointer;b:pointer):integer;
|
||||||
begin
|
begin
|
||||||
return dodeleteevents(a, "value-changed");
|
return do_two_param_event(a, "value-changed");
|
||||||
end
|
end
|
||||||
function tsl_gtk_clicked_event(a:pointer;b:pointer):integer;
|
function tsl_gtk_clicked_event(a:pointer;b:pointer):integer;
|
||||||
begin
|
begin
|
||||||
return dodeleteevents(a, "clicked");
|
return do_two_param_event(a, "clicked");
|
||||||
end
|
end
|
||||||
function tsl_gtk_activate_event(a:pointer;b:pointer):integer;
|
function tsl_gtk_activate_event(a:pointer;b:pointer):integer;
|
||||||
begin
|
begin
|
||||||
return dodeleteevents(a, "activate");
|
return do_two_param_event(a, "activate");
|
||||||
end
|
end
|
||||||
|
|
||||||
function tsl_gtk_destroy_event(a:pointer; b:pointer;c:pointer):integer;
|
function tsl_gtk_destroy_event(a:pointer; b:pointer;c:pointer):integer;
|
||||||
|
|
@ -9401,7 +9557,7 @@ function tsl_gtk_wmuser_event(a:pointer; p1:pointer;p2:pointer):integer;
|
||||||
begin
|
begin
|
||||||
return dotparamseevents(a, "wm-user", p1, p2);
|
return dotparamseevents(a, "wm-user", p1, p2);
|
||||||
end
|
end
|
||||||
function dodeleteevents( a:pointer;b:string):integer;
|
function do_two_param_event( a:pointer;b:string):integer;
|
||||||
begin
|
begin
|
||||||
return _gtkeventcall_(a,GetGtkEventNameOrId(b),0);
|
return _gtkeventcall_(a,GetGtkEventNameOrId(b),0);
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue