更新
1.优化gtk滚动 2.优化文件查找返回结果
This commit is contained in:
@@ -2238,13 +2238,29 @@ type tsgtkapi = class(tgtkapis)
|
||||
end
|
||||
////////////////////////////////////////////////////////////////////
|
||||
function GetOpenFileNameA(LPOPENFILENAMEA:pointer):integer;
|
||||
begin
|
||||
r := GetSaveFileNameA(LPOPENFILENAMEA);
|
||||
begin
|
||||
global g_open_file_flag;
|
||||
g_open_file_flag := 1;
|
||||
r := GetSaveFileNameA(LPOPENFILENAMEA);
|
||||
g_open_file_flag := 0;
|
||||
return r;
|
||||
end
|
||||
function GetSaveFileNameA(LPOPENFILENAMEA:pointer):integer;
|
||||
begin
|
||||
global g_open_file_flag;
|
||||
///////////////////////////////////////////////
|
||||
GTK_RESPONSE_HELP := -11;
|
||||
GTK_RESPONSE_APPLY := -10;
|
||||
GTK_RESPONSE_NO := -9;
|
||||
GTK_RESPONSE_YES := -8;
|
||||
GTK_RESPONSE_CLOSE := -7;
|
||||
GTK_RESPONSE_CANCEL := -6;
|
||||
GTK_RESPONSE_OK := -5;
|
||||
GTK_RESPONSE_DELETE_EVENT := -4;
|
||||
GTK_RESPONSE_ACCEPT := -3;
|
||||
GTK_RESPONSE_REJECT := -2;
|
||||
GTK_RESPONSE_NONE := -1;
|
||||
/////////////////////////////////////////
|
||||
r := false;
|
||||
obj := new TtagOFNA_(LPOPENFILENAMEA);
|
||||
wd := obj._getvalue_("hwndowner");
|
||||
@@ -2252,14 +2268,12 @@ type tsgtkapi = class(tgtkapis)
|
||||
if wd then wd := gtk_widget_get_toplevel(wd);
|
||||
mulsel := false;
|
||||
if obj._getvalue_("flags") .& 0x200 then mulsel := true;
|
||||
//echo "\r\n>>>", obj._getvalue_("nmaxfiletitle");
|
||||
//echo "\r\n>>>", obj._getvalue_("nmaxfiletitle");
|
||||
opaction := g_open_file_flag?false:true; //´ò¿ª»òÕßsave
|
||||
cdlg := gtk_file_chooser_dialog_new("file selector",wd,opaction,"open",GTK_RESPONSE_ACCEPT,"cancel",GTK_RESPONSE_CANCEL,nil);
|
||||
if mulsel then
|
||||
begin
|
||||
cdlg := gtk_file_chooser_dialog_new("file selector",wd,0,"open",100,"cancel",50,nil);
|
||||
begin
|
||||
gtk_file_chooser_set_select_multiple(cdlg,true);
|
||||
end else
|
||||
begin
|
||||
cdlg := gtk_file_chooser_dialog_new("file selector",wd,1,"open",100,"cancel",50,nil);
|
||||
end
|
||||
dfdir := obj._getvalue_("lpstrinitialdir");
|
||||
if dfdir then //ĬÈÏλÖÃ
|
||||
@@ -2270,7 +2284,7 @@ type tsgtkapi = class(tgtkapis)
|
||||
gtk_file_chooser_set_filename(cdlg,TslStringToGtk( df));
|
||||
end
|
||||
end
|
||||
if 100=gtk_dialog_run(cdlg)then
|
||||
if GTK_RESPONSE_ACCEPT=gtk_dialog_run(cdlg)then
|
||||
begin
|
||||
mf := obj._getvalue_("nmaxfile");
|
||||
if mulsel then
|
||||
@@ -2467,12 +2481,26 @@ type tsgtkapi = class(tgtkapis)
|
||||
|
||||
function SHBrowseForFolderA(LPITEMIDLIST:pointer):pointer;
|
||||
begin
|
||||
|
||||
///////////////////////////////////////////////
|
||||
GTK_RESPONSE_HELP := -11;
|
||||
GTK_RESPONSE_APPLY := -10;
|
||||
GTK_RESPONSE_NO := -9;
|
||||
GTK_RESPONSE_YES := -8;
|
||||
GTK_RESPONSE_CLOSE := -7;
|
||||
GTK_RESPONSE_CANCEL := -6;
|
||||
GTK_RESPONSE_OK := -5;
|
||||
GTK_RESPONSE_DELETE_EVENT := -4;
|
||||
GTK_RESPONSE_ACCEPT := -3;
|
||||
GTK_RESPONSE_REJECT := -2;
|
||||
GTK_RESPONSE_NONE := -1;
|
||||
/////////////////////////////////////////
|
||||
obj := new TBrowseinfoA_(LPITEMIDLIST);
|
||||
wd := obj._getvalue_("hwndowner");
|
||||
wd := wd?:nil;
|
||||
if wd and not(gtk_widget_is_toplevel(wd)) then wd := gtk_widget_get_toplevel(wd); //top level
|
||||
r := 0;
|
||||
cdlg := gtk_file_chooser_dialog_new("folder selector",wd,3,"open",100,"cancel",50,nil);
|
||||
cdlg := gtk_file_chooser_dialog_new("folder selector",wd,3,"open",GTK_RESPONSE_ACCEPT,"cancel",GTK_RESPONSE_CANCEL,nil);
|
||||
dir := obj._getvalue_("pidlroot");
|
||||
if dir then //ĬÈÏλÖÃ
|
||||
begin
|
||||
@@ -2482,7 +2510,7 @@ type tsgtkapi = class(tgtkapis)
|
||||
gtk_file_chooser_set_filename(cdlg,TslStringToGtk( df));
|
||||
end
|
||||
end
|
||||
if 100=gtk_dialog_run(cdlg) then
|
||||
if GTK_RESPONSE_ACCEPT=gtk_dialog_run(cdlg) then
|
||||
begin
|
||||
r := GtkStringToTsl( gtk_file_chooser_get_filename(cdlg));
|
||||
end
|
||||
@@ -6382,7 +6410,7 @@ type tgtk_ctl_scroll_window = class(tgtk_ctl_object)
|
||||
h := a.handle;
|
||||
|
||||
nt := now();
|
||||
if (nt-(1/24/3600/20))<FScrollT then
|
||||
if (nt-(1/24/3600/100))<FScrollT then
|
||||
begin
|
||||
return true;
|
||||
end
|
||||
@@ -6413,11 +6441,11 @@ type tgtk_ctl_scroll_window = class(tgtk_ctl_object)
|
||||
end
|
||||
if ri and rxy then
|
||||
begin
|
||||
if hasMessageFromGtkMessageQueue(-1,_const.LM_MOUSEWHEEL) then return true;
|
||||
//if hasMessageFromGtkMessageQueue(-1,_const.LM_MOUSEWHEEL) then return true; //20230417ÔÝʱÆÁ±Î
|
||||
if hasMessageFromGtkMessageQueue(-1,_const.WM_SIZE) then return true;
|
||||
if hasMessageFromGtkMessageQueue(-1,_const.WM_MOUSEMOVE) then return true;
|
||||
|
||||
FScrollT := now();
|
||||
FScrollT := now();
|
||||
dr := (dr=1)?-1:1;
|
||||
|
||||
xy := makelong(rxy[0],rxy[1]);
|
||||
|
||||
Reference in New Issue
Block a user