From 3358af0f8754020769c32f211cc9034f62716005 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Mon, 21 Jan 2008 13:30:24 +0000 Subject: [PATCH] added wxWindow::HasFocus() for more convenient way of determining if a (possibly composite) window has focus git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51308 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 1 + docs/latex/wx/window.tex | 20 +++++++++++++++++--- include/wx/window.h | 5 +++++ src/common/wincmn.cpp | 7 +++++++ 4 files changed, 30 insertions(+), 3 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 564e8e5b12..d84184c0eb 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -276,6 +276,7 @@ All (GUI): Also made it easier to derive from wxWizard and override behaviour. - Made wxSizer::Fit() set the client size of the target window - Add support for wxDatePickerCtrl in wxGenericValidator (Herry Ayen Yang) +- Added wxWindow::HasFocus(). wxGTK: diff --git a/docs/latex/wx/window.tex b/docs/latex/wx/window.tex index d7796285d0..48c53a7b4d 100644 --- a/docs/latex/wx/window.tex +++ b/docs/latex/wx/window.tex @@ -624,7 +624,8 @@ Note that this is a static function, so it can be called without needing a wxWin \wxheading{See also} -\helpref{wxWindow::SetFocus}{wxwindowsetfocus} +\helpref{wxWindow::SetFocus}{wxwindowsetfocus}, +\helpref{wxWindow::HasFocus}{wxwindowhasfocus} @@ -1556,6 +1557,18 @@ extra styles. Returns \texttt{true} if the window has the given \arg{flag} bit set. +\membersection{wxWindow::HasFocus}\label{wxwindowhasfocus} + +\constfunc{virtual bool}{HasFocus}{\void} + +Returns \true if the window (or in case of composite controls, its main +child window) has focus. + +\wxheading{See also} + +\helpref{FindFocus}{wxwindowfindfocus} + + \membersection{wxWindow::HasMultiplePages}\label{wxwindowhasmultiplepages} \constfunc{virtual bool}{HasMultiplePages}{\void} @@ -3083,8 +3096,9 @@ This sets the window to receive keyboard input. \wxheading{See also} -\helpref{wxFocusEvent}{wxfocusevent} -\helpref{wxPanel::SetFocus}{wxpanelsetfocus} +\helpref{HasFocus}{wxwindowhasfocus}, +\helpref{wxFocusEvent}{wxfocusevent}, +\helpref{wxPanel::SetFocus}{wxpanelsetfocus}, \helpref{wxPanel::SetFocusIgnoringChildren}{wxpanelsetfocusignoringchildren} diff --git a/include/wx/window.h b/include/wx/window.h index e1fb16519b..013426c8f8 100644 --- a/include/wx/window.h +++ b/include/wx/window.h @@ -620,6 +620,11 @@ public: static wxWindow *DoFindFocus() /* = 0: implement in derived classes */; + // return true if the window has focus (handles composite windows + // correctly - returns true if GetMainWindowOfCompositeControl() + // has focus) + virtual bool HasFocus() const; + // can this window have focus in principle? // // the difference between AcceptsFocus[FromKeyboard]() and CanAcceptFocus diff --git a/src/common/wincmn.cpp b/src/common/wincmn.cpp index 477c4d8c9d..b114571d5d 100644 --- a/src/common/wincmn.cpp +++ b/src/common/wincmn.cpp @@ -2733,6 +2733,13 @@ void wxWindowBase::DoMoveInTabOrder(wxWindow *win, WindowOrder move) return win ? win->GetMainWindowOfCompositeControl() : NULL; } +bool wxWindowBase::HasFocus() const +{ + wxWindowBase *win = DoFindFocus(); + return win == this || + win == wxConstCast(this, wxWindowBase)->GetMainWindowOfCompositeControl(); +} + // ---------------------------------------------------------------------------- // global functions // ---------------------------------------------------------------------------- -- 2.45.2