mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-12 00:37:47 +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);
|
||||
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
|
||||
TheDialog: TFileDialog;
|
||||
cFilename: PChar;
|
||||
@ -218,7 +229,8 @@ begin
|
||||
cFilename := PChar(cFilenames1^.data);
|
||||
if Assigned(cFilename) then
|
||||
begin
|
||||
AddFile(Files, cFilename);
|
||||
if not SkipDirectory(cFileName) then
|
||||
AddFile(Files, cFilename);
|
||||
g_free(cFilename);
|
||||
end;
|
||||
cFilenames1 := cFilenames1^.next;
|
||||
@ -229,9 +241,13 @@ begin
|
||||
end;
|
||||
|
||||
cFilename := gtk_file_chooser_get_filename(widget);
|
||||
|
||||
if Assigned(cFilename) then
|
||||
begin
|
||||
TheDialog.FileName := cFilename;
|
||||
if SkipDirectory(cFileName) then
|
||||
TheDialog.FileName := ''
|
||||
else
|
||||
TheDialog.FileName := cFilename;
|
||||
g_free(cFilename);
|
||||
end;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user