virtual void SetFocusFromKbd() { SetFocus(); }
// return the window which currently has the focus or NULL
- static wxWindow *FindFocus() /* = 0: implement in derived classes */;
+ static wxWindow *FindFocus();
+
+ static wxWindow *DoFindFocus() /* = 0: implement in derived classes */;
// can this window have focus?
virtual bool AcceptsFocus() const { return IsShown() && IsEnabled(); }
// Send the wxWindowDestroyEvent
void SendDestroyEvent();
+ // returns the main window of composite control; this is the window
+ // that FindFocus returns if the focus is in one of composite control's
+ // windows
+ virtual wxWindow *GetMainWindowOfCompositeControl()
+ { return (wxWindow*)this; }
+
// the window id - a number which uniquely identifies a window among
// its siblings unless it is wxID_ANY
wxWindowID m_windowId;
}
// Get the window with the focus
-wxWindow *wxWindowBase::FindFocus()
+wxWindow *wxWindowBase::DoFindFocus()
{
// TODO
return NULL;
}
}
+// ----------------------------------------------------------------------------
+// focus handling
+// ----------------------------------------------------------------------------
+
+/*static*/ wxWindow* wxWindowBase::FindFocus()
+{
+ wxWindow *win = DoFindFocus();
+ return win ? win->GetMainWindowOfCompositeControl() : NULL;
+}
+
// ----------------------------------------------------------------------------
// global functions
// ----------------------------------------------------------------------------
const wxString &name = _T("listctrlmainwindow") );
virtual ~wxListMainWindow();
+
+ wxWindow *GetMainWindowOfCompositeControl() { return GetParent(); }
bool HasFlag(int flag) const { return m_parent->HasFlag(flag); }
// because it is static and so couldn't be made virtual
// ----------------------------------------------------------------------------
-wxWindow *wxWindowBase::FindFocus()
+wxWindow *wxWindowBase::DoFindFocus()
{
// the cast is necessary when we compile in wxUniversal mode
return (wxWindow *)g_focusWindow;
// because it is static and so couldn't be made virtual
// ----------------------------------------------------------------------------
-wxWindow *wxWindowBase::FindFocus()
+wxWindow *wxWindowBase::DoFindFocus()
{
// the cast is necessary when we compile in wxUniversal mode
return (wxWindow *)g_focusWindow;
}
// Get the window with the focus
-wxWindowMac *wxWindowBase::FindFocus()
+wxWindowMac *wxWindowBase::DoFindFocus()
{
ControlRef control ;
GetKeyboardFocus( GetUserFocusWindow() , &control ) ;
}
// Get the window with the focus
-wxWindowMac *wxWindowBase::FindFocus()
+wxWindowMac *wxWindowBase::DoFindFocus()
{
return gFocusWindow ;
}
// this wxWindowBase function is implemented here (in platform-specific file)
// because it is static and so couldn't be made virtual
// ----------------------------------------------------------------------------
-wxWindow *wxWindowBase::FindFocus()
+wxWindow *wxWindowBase::DoFindFocus()
{
return (wxWindow*)gs_focusedWindow;
}
}
// Get the window with the focus
-wxWindow *wxWindowBase::FindFocus()
+wxWindow *wxWindowBase::DoFindFocus()
{
// TODO Problems:
// (1) Can there be multiple focussed widgets in an application?
}
// Get the window with the focus
-wxWindow *wxWindowBase::FindFocus()
+wxWindow *wxWindowBase::DoFindFocus()
{
HWND hWnd = ::GetFocus();
if ( hWnd )
wxWindowBase::SetFocusFromKbd();
} // end of wxWindowOS2::SetFocus
-wxWindow* wxWindowBase::FindFocus()
+wxWindow* wxWindowBase::DoFindFocus()
{
HWND hWnd = ::WinQueryFocus(HWND_DESKTOP);
return wxFindWinFromHandle((WXHWND)hWnd);
}
return NULL;
-} // wxWindowBase::FindFocus
+} // wxWindowBase::DoFindFocus
bool wxWindowOS2::Enable(
bool bEnable
DoMoveWindow__8wxWindowFiN31
;wxWindow::DoClientToScreen(int*,int*) const
DoClientToScreen__8wxWindowCFPiT1
- ;wxWindowBase::FindFocus()
+ ;wxWindowBase::DoFindFocus()
FindFocus__12wxWindowBaseFv
;wxWindow::OS2OnDrawItem(int,void**)
OS2OnDrawItem__8wxWindowFiPPv
}
// Get the window with the focus
-wxWindow *wxWindowBase::FindFocus()
+wxWindow *wxWindowBase::DoFindFocus()
{
Window xfocus = (Window) 0;
int revert = 0;