// 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;
}
tcItem.pszText = (wxChar *)strText.c_str(); // const_cast
}
+ // hide the page: unless it is selected, it shouldn't be shown (and if it
+ // is selected it will be shown later)
+ HWND hwnd = GetWinHwnd(pPage);
+ SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_VISIBLE);
+
+ // this updates internal flag too -- otherwise it would get out of sync
+ // with the real state
+ pPage->Show(false);
+
+
// fit the notebook page to the tab control's display area: this should be
// done before adding it to the notebook or TabCtrl_InsertItem() will
// change the notebooks size itself!
AdjustPageSize(pPage);
}
- // hide the page: unless it is selected, it shouldn't be shown (and if it
- // is selected it will be shown later)
- HWND hwnd = GetWinHwnd(pPage);
- SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_STYLE) & ~WS_VISIBLE);
-
- // this updates internal flag too -- otherwise it would get out of sync
- // with the real state
- pPage->Show(false);
-
-
// now deal with the selection
// ---------------------------
if ( selNew != -1 )
SetSelection(selNew);
+ InvalidateBestSize();
return true;
}