Add wxRibbonControl::GetAncestorRibbonBar() helper.

New method allowing to find the ribbon bar containing the given window.

See #14283.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71641 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2012-06-03 19:17:03 +00:00
parent 017dc06b50
commit 07c7226468
3 changed files with 25 additions and 0 deletions

View File

@@ -19,6 +19,7 @@
#include "wx/control.h" #include "wx/control.h"
#include "wx/dynarray.h" #include "wx/dynarray.h"
class wxRibbonBar;
class wxRibbonArtProvider; class wxRibbonArtProvider;
class WXDLLIMPEXP_RIBBON wxRibbonControl : public wxControl class WXDLLIMPEXP_RIBBON wxRibbonControl : public wxControl
@@ -55,6 +56,8 @@ public:
virtual bool Realize(); virtual bool Realize();
bool Realise() {return Realize();} bool Realise() {return Realize();}
virtual wxRibbonBar* GetAncestorRibbonBar()const;
// Finds the best width and height given the parent's width and height // Finds the best width and height given the parent's width and height
virtual wxSize GetBestSizeForParentSize(const wxSize& WXUNUSED(parentSize)) const { return GetBestSize(); } virtual wxSize GetBestSizeForParentSize(const wxSize& WXUNUSED(parentSize)) const { return GetBestSize(); }

View File

@@ -148,6 +148,15 @@ public:
*/ */
bool Realise(); bool Realise();
/**
Get the first ancestor which is a wxRibbonBar (or derived) or NULL
if not having such parent.
@since 2.9.4
*/
virtual wxRibbonBar* GetAncestorRibbonBar()const;
/** /**
Finds the best width and height given the parent's width and height. Finds the best width and height given the parent's width and height.
Used to implement the wxRIBBON_PANEL_FLEXIBLE panel style. Used to implement the wxRIBBON_PANEL_FLEXIBLE panel style.

View File

@@ -18,6 +18,7 @@
#if wxUSE_RIBBON #if wxUSE_RIBBON
#include "wx/ribbon/control.h" #include "wx/ribbon/control.h"
#include "wx/ribbon/bar.h"
#ifndef WX_PRECOMP #ifndef WX_PRECOMP
#endif #endif
@@ -109,4 +110,16 @@ bool wxRibbonControl::Realize()
return true; return true;
} }
wxRibbonBar* wxRibbonControl::GetAncestorRibbonBar()const
{
for ( wxWindow* win = GetParent(); win; win = win->GetParent() )
{
wxRibbonBar* bar = wxDynamicCast(win, wxRibbonBar);
if ( bar )
return bar;
}
return NULL;
}
#endif // wxUSE_RIBBON #endif // wxUSE_RIBBON