From 33b494d643e42a2e2963987cbc3637f4593ea43a Mon Sep 17 00:00:00 2001
From: Vadim Zeitlin <vadim@wxwidgets.org>
Date: Sat, 20 Apr 2002 13:51:28 +0000
Subject: [PATCH] added wxGetTopLevelParent()

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15217 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 docs/latex/wx/function.tex | 12 ++++++++++++
 include/wx/window.h        |  4 +++-
 src/common/wincmn.cpp      | 13 ++++++++++++-
 3 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/docs/latex/wx/function.tex b/docs/latex/wx/function.tex
index f3c4777e4b..33ee4e679e 100644
--- a/docs/latex/wx/function.tex
+++ b/docs/latex/wx/function.tex
@@ -120,6 +120,7 @@ the corresponding topic.
 \helpref{wxGetSingleChoice}{wxgetsinglechoice}\\
 \helpref{wxGetTempFileName}{wxgettempfilename}\\
 \helpref{wxGetTextFromUser}{wxgettextfromuser}\\
+\helpref{wxGetTopLevelParent}{wxgettoplevelparent}\\
 \helpref{wxGetTranslation}{wxgettranslation}\\
 \helpref{wxGetUTCTime}{wxgetutctime}\\
 \helpref{wxGetUserHome}{wxgetuserhome}\\
@@ -2233,6 +2234,17 @@ See also \helpref{wxWriteResource}{wxwriteresource}, \helpref{wxConfigBase}{wxco
 
 <wx/utils.h>
 
+\membersection{::wxGetTopLevelParent}\label{wxgettoplevelparent}
+
+\func{wxWindow *}{wxGetTopLevelParent}{\param{wxWindow }{*win}}
+
+Returns the first top level parent of the given window, or in other words, the
+frame or dialog containing it, or {\tt NULL}.
+
+\wxheading{Include files}
+
+<wx/window.h>
+
 \membersection{::wxLoadUserResource}\label{wxloaduserresource}
 
 \func{wxString}{wxLoadUserResource}{\param{const wxString\& }{resourceName}, \param{const wxString\& }{resourceType=``TEXT"}}
diff --git a/include/wx/window.h b/include/wx/window.h
index 25cb7ad47b..86a38edd76 100644
--- a/include/wx/window.h
+++ b/include/wx/window.h
@@ -1114,10 +1114,12 @@ WXDLLEXPORT extern wxPoint wxGetMousePosition();
 // get the currently active window of this application or NULL
 WXDLLEXPORT extern wxWindow *wxGetActiveWindow();
 
+// get the (first) top level parent window
+WXDLLEXPORT wxWindow* wxGetTopLevelParent(wxWindow *win);
+
 // deprecated (doesn't start with 'wx' prefix), use wxWindow::NewControlId()
 inline int NewControlId() { return wxWindowBase::NewControlId(); }
 
 #endif
     // _WX_WINDOW_H_BASE_
 
-// vi:sts=4:sw=4:et
diff --git a/src/common/wincmn.cpp b/src/common/wincmn.cpp
index ec06700081..5922d27f4a 100644
--- a/src/common/wincmn.cpp
+++ b/src/common/wincmn.cpp
@@ -1795,4 +1795,15 @@ void wxWindowBase::ReleaseMouse()
                GetCapture());
 }
 
-// vi:sts=4:sw=4:et
+// ----------------------------------------------------------------------------
+// global functions
+// ----------------------------------------------------------------------------
+
+wxWindow* wxGetTopLevelParent(wxWindow *win)
+{
+    while ( win && !win->IsTopLevel() )
+         win = win->GetParent();
+
+    return win;
+}
+
-- 
2.50.0

