mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-12 16:29:38 +02:00
Gtk2: dissallow opening directory as file (GtkFileChooser bug). issue #17278
git-svn-id: trunk@33380 -
This commit is contained in:
parent
2ab49d0d32
commit
4f22b9c783
@ -186,6 +186,17 @@ procedure Gtk2FileChooserResponseCB(widget: PGtkFileChooser; arg1: gint;
|
|||||||
List.Add(NewFile);
|
List.Add(NewFile);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function SkipDirectory(const AName: String): Boolean;
|
||||||
|
// gtk2-2.20 have problems.
|
||||||
|
// issue http://bugs.freepascal.org/view.php?id=17278
|
||||||
|
begin
|
||||||
|
Result := False;
|
||||||
|
if (gtk_major_version = 2) and (gtk_minor_version >= 20) and
|
||||||
|
(gtk_file_chooser_get_action(Widget) = GTK_FILE_CHOOSER_ACTION_OPEN) and
|
||||||
|
DirectoryExists(AName) then
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
TheDialog: TFileDialog;
|
TheDialog: TFileDialog;
|
||||||
cFilename: PChar;
|
cFilename: PChar;
|
||||||
@ -218,7 +229,8 @@ begin
|
|||||||
cFilename := PChar(cFilenames1^.data);
|
cFilename := PChar(cFilenames1^.data);
|
||||||
if Assigned(cFilename) then
|
if Assigned(cFilename) then
|
||||||
begin
|
begin
|
||||||
AddFile(Files, cFilename);
|
if not SkipDirectory(cFileName) then
|
||||||
|
AddFile(Files, cFilename);
|
||||||
g_free(cFilename);
|
g_free(cFilename);
|
||||||
end;
|
end;
|
||||||
cFilenames1 := cFilenames1^.next;
|
cFilenames1 := cFilenames1^.next;
|
||||||
@ -229,9 +241,13 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
cFilename := gtk_file_chooser_get_filename(widget);
|
cFilename := gtk_file_chooser_get_filename(widget);
|
||||||
|
|
||||||
if Assigned(cFilename) then
|
if Assigned(cFilename) then
|
||||||
begin
|
begin
|
||||||
TheDialog.FileName := cFilename;
|
if SkipDirectory(cFileName) then
|
||||||
|
TheDialog.FileName := ''
|
||||||
|
else
|
||||||
|
TheDialog.FileName := cFilename;
|
||||||
g_free(cFilename);
|
g_free(cFilename);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user