diff options
Diffstat (limited to 'src/corelib')
-rw-r--r-- | src/corelib/gfx_popupwindow.pas | 5 | ||||
-rw-r--r-- | src/corelib/x11/gfx_x11.pas | 21 |
2 files changed, 16 insertions, 10 deletions
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; |