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
This commit is contained in:
Stefan Csomor
2013-06-04 06:54:50 +00:00
parent 3678169caa
commit 09ffaca3a6
3 changed files with 27 additions and 1 deletions

View File

@@ -341,9 +341,16 @@ public :
// static methods for associating native controls and their implementations // static methods for associating native controls and their implementations
// finds the impl associated with this native control
static wxWidgetImpl* static wxWidgetImpl*
FindFromWXWidget(WXWidget control); 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 RemoveAssociations( wxWidgetImpl* impl);
static void Associate( WXWidget control, wxWidgetImpl *impl ); static void Associate( WXWidget control, wxWidgetImpl *impl );

View File

@@ -87,6 +87,12 @@ WXWidget wxWidgetImpl::FindFocus()
return control; return control;
} }
// no compositing to take into account under carbon
wxWidgetImpl* wxWidgetImpl::FindBestFromWXWidget(WXWidget control)
{
return FindFromWXWidget(control);
}
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// Carbon Events // Carbon Events
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------

View File

@@ -71,9 +71,22 @@ NSView* GetFocusedViewInWindow( NSWindow* keyWindow )
WXWidget wxWidgetImpl::FindFocus() 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 ) NSRect wxOSXGetFrameForControl( wxWindowMac* window , const wxPoint& pos , const wxSize &size , bool adjustForOrigin )
{ {
int x, y, w, h ; int x, y, w, h ;