From 09ffaca3a6d4d6b5f9cd513a26b0f264623f2109 Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Tue, 4 Jun 2013 06:54:50 +0000 Subject: [PATCH] adding a more extensive version to arrive at the impl when given a native control, taking into account eg the composited controls of a scrollview git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74105 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/osx/core/private.h | 7 +++++++ src/osx/carbon/window.cpp | 6 ++++++ src/osx/cocoa/window.mm | 15 ++++++++++++++- 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/include/wx/osx/core/private.h b/include/wx/osx/core/private.h index 0bf016b71f..f6fe11ee68 100644 --- a/include/wx/osx/core/private.h +++ b/include/wx/osx/core/private.h @@ -341,9 +341,16 @@ public : // static methods for associating native controls and their implementations + // finds the impl associated with this native control static wxWidgetImpl* FindFromWXWidget(WXWidget control); + // finds the impl associated with this native control, if the native control itself is not known + // also checks whether its parent is eg a registered scrollview, ie whether the control is a native subpart + // of a known control + static wxWidgetImpl* + FindBestFromWXWidget(WXWidget control); + static void RemoveAssociations( wxWidgetImpl* impl); static void Associate( WXWidget control, wxWidgetImpl *impl ); diff --git a/src/osx/carbon/window.cpp b/src/osx/carbon/window.cpp index 48ae71bbfb..b918d152d8 100644 --- a/src/osx/carbon/window.cpp +++ b/src/osx/carbon/window.cpp @@ -87,6 +87,12 @@ WXWidget wxWidgetImpl::FindFocus() return control; } +// no compositing to take into account under carbon +wxWidgetImpl* wxWidgetImpl::FindBestFromWXWidget(WXWidget control) +{ + return FindFromWXWidget(control); +} + // --------------------------------------------------------------------------- // Carbon Events // --------------------------------------------------------------------------- diff --git a/src/osx/cocoa/window.mm b/src/osx/cocoa/window.mm index a5aaeac505..f7c6fcb8c3 100644 --- a/src/osx/cocoa/window.mm +++ b/src/osx/cocoa/window.mm @@ -71,9 +71,22 @@ NSView* GetFocusedViewInWindow( NSWindow* keyWindow ) WXWidget wxWidgetImpl::FindFocus() { - return GetFocusedViewInWindow( [NSApp keyWindow] ); + return GetFocusedViewInWindow( [NSApp keyWindow] );; } +wxWidgetImpl* wxWidgetImpl::FindBestFromWXWidget(WXWidget control) +{ + wxWidgetImpl* impl = FindFromWXWidget(control); + + // NSScrollViews can have their subviews like NSClipView + // therefore check and use the NSScrollView peer in that case + if ( impl == NULL && [[control superview] isKindOfClass:[NSScrollView class]]) + impl = FindFromWXWidget([control superview]); + + return impl; +} + + NSRect wxOSXGetFrameForControl( wxWindowMac* window , const wxPoint& pos , const wxSize &size , bool adjustForOrigin ) { int x, y, w, h ; -- 2.47.2