From c59a98a83eb8eff8764ca332fc8213c2675f7bf2 Mon Sep 17 00:00:00 2001 From: paul Date: Tue, 20 Dec 2011 02:24:14 +0000 Subject: [PATCH] cocoa: implement SetActiveWindow and SetForegroundWindow git-svn-id: trunk@34307 - --- lcl/interfaces/cocoa/cocoawinapi.inc | 37 +++++++++++++++++++++++++++ lcl/interfaces/cocoa/cocoawinapih.inc | 8 +++--- 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/lcl/interfaces/cocoa/cocoawinapi.inc b/lcl/interfaces/cocoa/cocoawinapi.inc index 6433eb9f74..1d6747eaf9 100644 --- a/lcl/interfaces/cocoa/cocoawinapi.inc +++ b/lcl/interfaces/cocoa/cocoawinapi.inc @@ -1127,6 +1127,24 @@ begin {$ENDIF} end; +function TCocoaWidgetSet.SetActiveWindow(Handle: HWND): HWND; +var + Obj: NSObject; +begin + Obj := NSObject(Handle); + if Assigned(Obj) and NSApp.isActive then + begin + Result := HWND(NSApp.keyWindow); + if Obj.isKindOfClass(NSWindow) then + NSwindow(Obj).makeKeyWindow + else + if Obj.isKindOfClass(NSView) then + NSView(Obj).window.makeKeyWindow + else + Result := 0; + end; +end; + function TCocoaWidgetSet.SetBKColor(DC: HDC; Color: TColorRef): TColorRef; var ctx: TCocoaContext; @@ -1218,6 +1236,25 @@ begin Result := True; end; +function TCocoaWidgetSet.SetForegroundWindow(HWnd: HWND): boolean; +var + Obj: NSObject; +begin + Result := HWnd <> 0; + if Result then + begin + NSApp.activateIgnoringOtherApps(True); + Obj := NSObject(HWnd); + if Obj.isKindOfClass(NSWindow) then + NSwindow(Obj).makeKeyAndOrderFront(NSApp) + else + if Obj.isKindOfClass(NSView) then + NSView(Obj).window.makeKeyAndOrderFront(NSApp) + else + Result := False; + end; +end; + {------------------------------- FONT AND TEXT --------------------------------} function TCocoaWidgetSet.SetTextColor(DC: HDC; Color: TColorRef): TColorRef; diff --git a/lcl/interfaces/cocoa/cocoawinapih.inc b/lcl/interfaces/cocoa/cocoawinapih.inc index ad4cf585ae..4ff2ac5b35 100644 --- a/lcl/interfaces/cocoa/cocoawinapih.inc +++ b/lcl/interfaces/cocoa/cocoawinapih.inc @@ -162,8 +162,8 @@ function SaveDC(DC: HDC): Integer; override; function ScreenToClient(Handle: HWND; var P: TPoint): Integer; override; function SelectClipRGN(DC : hDC; RGN : HRGN) : Longint; override; function SelectObject(ADC: HDC; GDIObj: HGDIOBJ): HGDIOBJ; override; -{function SendMessage(HandleWnd: HWND; Msg: Cardinal; WParam: WParam; LParam: LParam): LResult; override; -function SetActiveWindow(Handle: HWND): HWND; override;} +{function SendMessage(HandleWnd: HWND; Msg: Cardinal; WParam: WParam; LParam: LParam): LResult; override;} +function SetActiveWindow(Handle: HWND): HWND; override; function SetBKColor(DC: HDC; Color: TColorRef): TColorRef; override; function SetBkMode(DC: HDC; bkMode : Integer) : Integer; override; {function SetCapture(AHandle: HWND): HWND; override; @@ -172,8 +172,8 @@ function SetCaretPosEx(Handle: HWnd; X, Y: Integer): Boolean; override; function SetCaretRespondToFocus(handle: HWND; ShowHideOnFocus: boolean): Boolean; override;} function SetCursor(ACursor: HCURSOR): HCURSOR; override; function SetCursorPos(X, Y: Integer): Boolean; override; -{function SetFocus(hWnd: HWND): HWND; override; -function SetForegroundWindow(HWnd: HWND): boolean; override;} +{function SetFocus(hWnd: HWND): HWND; override;} +function SetForegroundWindow(HWnd: HWND): boolean; override; function SetProp(Handle: hwnd; Str: PChar; Data: Pointer) : Boolean; override; function SetROP2(DC: HDC; Mode: Integer): Integer; override; function SetScrollInfo(Handle : HWND; SBStyle : Integer; ScrollInfo: TScrollInfo; bRedraw : Boolean): Integer; override;