#if wxUSE_NOTEBOOK
-// wxWindows
+// wxWidgets
#ifndef WX_PRECOMP
#include "wx/string.h"
#endif // WX_PRECOMP
wxEVENT_PROPERTY( PageChanged , wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED , wxNotebookEvent )
wxPROPERTY_COLLECTION( PageInfos , wxNotebookPageInfoList , wxNotebookPageInfo* , AddPageInfo , GetPageInfos , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
- wxPROPERTY_FLAGS( WindowStyle , wxNotebookStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style
+ wxPROPERTY_FLAGS( WindowStyle , wxNotebookStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , EMPTY_MACROVALUE , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style
wxEND_PROPERTIES_TABLE()
wxBEGIN_HANDLERS_TABLE(wxNotebook)
wxBEGIN_PROPERTIES_TABLE(wxNotebookPageInfo)
- wxREADONLY_PROPERTY( Page , wxNotebookPage* , GetPage , , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
+ wxREADONLY_PROPERTY( Page , wxNotebookPage* , GetPage , EMPTY_MACROVALUE , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
wxREADONLY_PROPERTY( Text , wxString , GetText , wxString() , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
wxREADONLY_PROPERTY( Selected , bool , GetSelected , false, 0 /*flags*/ , wxT("Helpstring") , wxT("group") )
wxREADONLY_PROPERTY( ImageId , int , GetImageId , -1 , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
{
wxSize sizeTotal = sizePage;
- // We need to make getting tab size part of the wxWindows API.
+ // We need to make getting tab size part of the wxWidgets API.
wxSize tabSize(0, 0);
if (GetPageCount() > 0)
{
// get the page size from the notebook size
GetSize((int *)&rc.right, (int *)&rc.bottom);
- TabCtrl_AdjustRect(m_hwnd, false, &rc);
- page->SetSize(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top);
+ // This check is to work around a bug in TabCtrl_AdjustRect which will
+ // cause a crash on win2k, or on XP with themes disabled, if the
+ // wxNB_MULTILINE style is used and the rectangle is very small, (such as
+ // when the notebook is first created.) The value of 20 is just
+ // arbitrarily chosen, if there is a better way to determine this value
+ // then please do so. --RD
+ if (rc.right > 20 && rc.bottom > 20)
+ {
+ TabCtrl_AdjustRect(m_hwnd, false, &rc);
+ page->SetSize(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top);
+ }
}
// ----------------------------------------------------------------------------
m_nSelection = -1;
+ InvalidateBestSize();
return true;
}
if ( selNew != -1 )
SetSelection(selNew);
+ InvalidateBestSize();
return true;
}