fixes for page positioning for notebooks with wxNB_MULTILINE style (closes bugs 709099 and 645323)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25581 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
9a6c9e31b0
commit
56b9925b11
@ -152,6 +152,7 @@ wxMSW:
|
||||
- wxFileDialog now returns correct filter index for multiple-file dialogs
|
||||
- added wxTextCtrl::HitTest()
|
||||
- experimental wxURL implementation using WinInet functions (Hajo Kirchhoff)
|
||||
- fixed several bugs in wxNotebook with wxNB_MULTILINE style
|
||||
|
||||
wxGTK:
|
||||
|
||||
|
@ -619,10 +619,11 @@ bool wxNotebook::InsertPage(size_t nPage,
|
||||
// succeeded: save the pointer to the page
|
||||
m_pages.Insert(pPage, nPage);
|
||||
|
||||
// for the first page (only) we need to adjust the size again because the
|
||||
// notebook size changed: the tabs which hadn't been there before are now
|
||||
// shown
|
||||
if ( m_pages.GetCount() == 1 )
|
||||
// we may need to adjust the size again if the notebook size changed:
|
||||
// normally this only happens for the first page we add (the tabs which
|
||||
// hadn't been there before are now shown) but for a multiline notebook it
|
||||
// can happen for any page at all as a new row could have been started
|
||||
if ( m_pages.GetCount() == 1 || HasFlag(wxNB_MULTILINE) )
|
||||
{
|
||||
AdjustPageSize(pPage);
|
||||
}
|
||||
@ -698,6 +699,29 @@ void wxNotebook::OnSize(wxSizeEvent& event)
|
||||
rc.left = rc.top = 0;
|
||||
GetSize((int *)&rc.right, (int *)&rc.bottom);
|
||||
|
||||
// there seems to be a bug in the implementation of TabCtrl_AdjustRect(): it
|
||||
// returns completely false values for multiline tab controls after the tabs
|
||||
// are added but before getting the first WM_SIZE (off by ~50 pixels, see
|
||||
//
|
||||
// http://sf.net/tracker/index.php?func=detail&aid=645323&group_id=9863&atid=109863
|
||||
//
|
||||
// and the only work around I could find was this ugly hack... without it
|
||||
// simply toggling the "multiline" checkbox in the notebook sample resulted
|
||||
// in a noticeable page displacement
|
||||
if ( HasFlag(wxNB_MULTILINE) )
|
||||
{
|
||||
// avoid an infinite recursion: we get another notification too!
|
||||
static bool s_isInOnSize = false;
|
||||
|
||||
if ( !s_isInOnSize )
|
||||
{
|
||||
s_isInOnSize = true;
|
||||
SendMessage(GetHwnd(), WM_SIZE, SIZE_RESTORED,
|
||||
MAKELPARAM(rc.right, rc.bottom));
|
||||
s_isInOnSize = false;
|
||||
}
|
||||
}
|
||||
|
||||
TabCtrl_AdjustRect(m_hwnd, false, &rc);
|
||||
|
||||
int width = rc.right - rc.left,
|
||||
|
Loading…
Reference in New Issue
Block a user