summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--extras/code_templates/lazarus.dci2
-rw-r--r--src/corelib/gfx_popupwindow.pas5
-rw-r--r--src/corelib/x11/gfx_x11.pas21
-rw-r--r--src/gui/gui_dialogs.pas13
4 files changed, 26 insertions, 15 deletions
diff --git a/extras/code_templates/lazarus.dci b/extras/code_templates/lazarus.dci
index c551de04..d3dd368c 100644
--- a/extras/code_templates/lazarus.dci
+++ b/extras/code_templates/lazarus.dci
@@ -44,7 +44,7 @@ end.
{
fpGUI - Free Pascal GUI Library
- Copyright (C) 2006 - 2007 See the file AUTHORS.txt, included in this
+ Copyright (C) 2006 - 2008 See the file AUTHORS.txt, included in this
distribution, for details of the copyright.
See the file COPYING.modifiedLGPL, included in this distribution,
diff --git a/src/corelib/gfx_popupwindow.pas b/src/corelib/gfx_popupwindow.pas
index cf75b5da..def8e47c 100644
--- a/src/corelib/gfx_popupwindow.pas
+++ b/src/corelib/gfx_popupwindow.pas
@@ -64,7 +64,7 @@ implementation
type
- // Popup window linked list. Maybe we can implemnt it via a TList as well.
+ // Popup window linked list. Maybe we can implement it via a TList as well.
PPopupListRec = ^PopupListRec;
PopupListRec = record
Widget: TfpgPopupWindow;
@@ -83,6 +83,9 @@ procedure ClosePopups;
begin
while uFirstPopup <> nil do
begin
+ {$IFDEF DEBUG}
+ writeln('...closing ', uFirstPopup^.Widget.Name);
+ {$ENDIF}
TfpgPopupWindow(uFirstPopup^.Widget).Close;
end;
end;
diff --git a/src/corelib/x11/gfx_x11.pas b/src/corelib/x11/gfx_x11.pas
index ed9e93c5..60bba3d1 100644
--- a/src/corelib/x11/gfx_x11.pas
+++ b/src/corelib/x11/gfx_x11.pas
@@ -935,17 +935,20 @@ begin
}
{ This closes popup windows when you click the mouse elsewhere }
- if (Popup <> nil) then
+ if ev._type = X.ButtonPress then
begin
- ew := w;
- while (w <> nil) and (w.Parent <> nil) do
- w := TfpgWindowImpl(w.Parent);
-
- if (w <> nil) and (PopupListFind(w.WinHandle) = nil) and
- (not PopupDontCloseWidget(TfpgWidget(ew))) then
+ if (Popup <> nil) then
begin
- ClosePopups;
- fpgPostMessage(nil, ew, FPGM_POPUPCLOSE);
+ ew := w;
+ while (w <> nil) and (w.Parent <> nil) do
+ w := TfpgWindowImpl(w.Parent);
+
+ if (w <> nil) and (PopupListFind(w.WinHandle) = nil) and
+ (not PopupDontCloseWidget(TfpgWidget(ew))) then
+ begin
+ ClosePopups;
+// fpgPostMessage(nil, ew, FPGM_POPUPCLOSE);
+ end;
end;
end;
diff --git a/src/gui/gui_dialogs.pas b/src/gui/gui_dialogs.pas
index 1a606d28..9d8836cc 100644
--- a/src/gui/gui_dialogs.pas
+++ b/src/gui/gui_dialogs.pas
@@ -1085,11 +1085,14 @@ procedure TfpgFileDialog.btnOKClick(Sender: TObject);
var
e: TFileEntry;
begin
- e := grid.CurrentEntry;
- if e.EntryType = etDir then
+ if FOpenMode then
begin
- SetCurrentDirectory(e.Name);
- Exit; //==>
+ e := grid.CurrentEntry;
+ if e.EntryType = etDir then
+ begin
+ SetCurrentDirectory(e.Name);
+ Exit; //==>
+ end;
end;
if not FOpenMode or fpgFileExists(edFileName.Text) then
@@ -1288,8 +1291,10 @@ begin
sdir := ExtractFileDir(FileName);
if sdir = '' then
sdir := '.';
+
SetCurrentDirectory(sdir);
fname := ExtractFileName(FileName);
+
if not SelectFile(fname) then
edFilename.Text := fname;