From 37ae664ae2cd4c83b3e3d6da24500ab7493bb02a Mon Sep 17 00:00:00 2001 From: Graeme Geldenhuys Date: Thu, 10 Dec 2009 17:16:28 +0200 Subject: When forms are embedded, don't show popup-menu components when the rest are shown. * I don't like the implementation dependency on fpg_menu though. I'll try and see if there is some better way of doing this. --- src/corelib/fpg_widget.pas | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) (limited to 'src/corelib/fpg_widget.pas') diff --git a/src/corelib/fpg_widget.pas b/src/corelib/fpg_widget.pas index f906b8bc..aaa810ad 100644 --- a/src/corelib/fpg_widget.pas +++ b/src/corelib/fpg_widget.pas @@ -172,7 +172,8 @@ implementation uses fpg_constants, - fpg_hint; + fpg_hint, + fpg_menu; var @@ -249,9 +250,13 @@ begin FVisible := AValue; if FOnScreen then if FVisible then - HandleShow + begin +// writeln('DEBUG: TfpgWidget.SetVisible - handleshow'); + HandleShow; + end else begin +// writeln('DEBUG: TfpgWidget.SetVisible - handlehide'); HandleHide; FOnScreen := True; end; @@ -429,7 +434,7 @@ end; destructor TfpgWidget.Destroy; begin {$IFDEF DEBUG} - writeln('TfpgWidget.Destroy [', Classname, ']'); + writeln('TfpgWidget.Destroy [', Classname, '.', Name, ']'); {$ENDIF} HandleHide; inherited; @@ -693,19 +698,21 @@ var n: integer; c: TComponent; begin -// writeln('Widget.HandleShow - ', ClassName, ' x:', Left, ' y:', Top, ' w:', Width, ' h:', Height); FOnScreen := True; -// FVisible := True; - AllocateWindowHandle; DoSetWindowVisible(FVisible); for n := 0 to ComponentCount - 1 do begin c := Components[n]; - if (c is TfpgWidget) and (TfpgWidget(c).Parent = self) and - (TfpgWidget(c).FOnScreen = False) then - TfpgWidget(c).HandleShow; + if (c is TfpgWidget) and (TfpgWidget(c).Parent = self) then + begin + if not (c is TfpgPopupMenu) then // these should not be created yet + begin + TfpgWidget(c).Visible := FVisible; + TfpgWidget(c).HandleShow; + end; + end; end; end; -- cgit v1.2.3-70-g09d2