diff --git a/lcl/interfaces/cocoa/cocoaprivate.pp b/lcl/interfaces/cocoa/cocoaprivate.pp index 5504c2f3bc..7590da9082 100644 --- a/lcl/interfaces/cocoa/cocoaprivate.pp +++ b/lcl/interfaces/cocoa/cocoaprivate.pp @@ -345,6 +345,7 @@ type procedure viewDidMoveToWindow; override; procedure viewWillMoveToWindow(newWindow: NSWindow); override; procedure dealloc; override; + procedure setHidden(aisHidden: Boolean); override; end; { TCocoaScrollView } @@ -533,6 +534,22 @@ begin inherited dealloc; end; +procedure TCocoaWindowContent.setHidden(aisHidden: Boolean); +begin + if isembedded then + begin + inherited setHidden(aisHidden); + end + else + begin + if aisHidden and window.isVisible then + window.orderOut(nil) + else + if not aisHidden and not window.isVisible then + window.orderBack(nil); + end; +end; + { TCocoaPanel } function TCocoaPanel.windowShouldClose(sender: id): LongBool; diff --git a/lcl/interfaces/cocoa/cocoawsforms.pp b/lcl/interfaces/cocoa/cocoawsforms.pp index 7069b78ea7..c11a3ffc49 100644 --- a/lcl/interfaces/cocoa/cocoawsforms.pp +++ b/lcl/interfaces/cocoa/cocoawsforms.pp @@ -330,7 +330,6 @@ begin end; cnt := TCocoaWindowContent.alloc.initWithFrame(R); - cnt.callback := TCocoaPanel(win).callback; if (AParams.Style and WS_CHILD) = 0 then begin @@ -349,6 +348,7 @@ begin R.origin.x := 0; R.origin.y := 0; + cnt.callback := TCocoaPanel(win).callback; win.setContentView(cnt); if AParams.WndParent <> 0 then @@ -356,6 +356,7 @@ begin end else begin + cnt.callback := TLCLCustomControlCallback.Create(cnt, AWinControl); if AParams.WndParent <> 0 then NSView(APArams.WndParent).addSubView(cnt); end;