added macros for checking for conflicts between flags values; use it in wxSizer code

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52310 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2008-03-04 12:03:02 +00:00
parent 0ba6faaeee
commit df44dcedaa
2 changed files with 143 additions and 0 deletions

View File

@@ -19,6 +19,7 @@
#include "wx/display.h"
#include "wx/sizer.h"
#include "wx/private/flagscheck.h"
#ifndef WX_PRECOMP
#include "wx/string.h"
@@ -87,6 +88,31 @@ WX_DEFINE_EXPORTED_LIST( wxSizerItemList )
// wxSizerItem
// ----------------------------------------------------------------------------
// check for flags conflicts
static const int SIZER_FLAGS_MASK =
wxADD_FLAG(wxCENTRE,
wxADD_FLAG(wxHORIZONTAL,
wxADD_FLAG(wxVERTICAL,
wxADD_FLAG(wxLEFT,
wxADD_FLAG(wxRIGHT,
wxADD_FLAG(wxUP,
wxADD_FLAG(wxDOWN,
wxADD_FLAG(wxALIGN_NOT,
wxADD_FLAG(wxALIGN_CENTER_HORIZONTAL,
wxADD_FLAG(wxALIGN_RIGHT,
wxADD_FLAG(wxALIGN_BOTTOM,
wxADD_FLAG(wxALIGN_CENTER_VERTICAL,
wxADD_FLAG(wxFIXED_MINSIZE,
wxADD_FLAG(wxRESERVE_SPACE_EVEN_IF_HIDDEN,
wxADD_FLAG(wxSTRETCH_NOT,
wxADD_FLAG(wxSHRINK,
wxADD_FLAG(wxGROW,
wxADD_FLAG(wxSHAPED,
0))))))))))))))))));
#define ASSERT_VALID_SIZER_FLAGS(f) wxASSERT_VALID_FLAGS(f, SIZER_FLAGS_MASK)
void wxSizerItem::Init(const wxSizerFlags& flags)
{
Init();
@@ -94,6 +120,8 @@ void wxSizerItem::Init(const wxSizerFlags& flags)
m_proportion = flags.GetProportion();
m_flag = flags.GetFlags();
m_border = flags.GetBorderInPixels();
ASSERT_VALID_SIZER_FLAGS( m_flag );
}
wxSizerItem::wxSizerItem()
@@ -136,6 +164,8 @@ wxSizerItem::wxSizerItem(wxWindow *window,
m_id(wxID_NONE),
m_userData(userData)
{
ASSERT_VALID_SIZER_FLAGS( m_flag );
DoSetWindow(window);
}
@@ -160,6 +190,8 @@ wxSizerItem::wxSizerItem(wxSizer *sizer,
m_ratio(0.0),
m_userData(userData)
{
ASSERT_VALID_SIZER_FLAGS( m_flag );
DoSetSizer(sizer);
// m_minSize is set later
@@ -189,6 +221,8 @@ wxSizerItem::wxSizerItem(int width,
m_id(wxID_NONE),
m_userData(userData)
{
ASSERT_VALID_SIZER_FLAGS( m_flag );
DoSetSpacer(wxSize(width, height));
}