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:
@@ -152,6 +152,7 @@ wxMSW:
|
|||||||
- wxFileDialog now returns correct filter index for multiple-file dialogs
|
- wxFileDialog now returns correct filter index for multiple-file dialogs
|
||||||
- added wxTextCtrl::HitTest()
|
- added wxTextCtrl::HitTest()
|
||||||
- experimental wxURL implementation using WinInet functions (Hajo Kirchhoff)
|
- experimental wxURL implementation using WinInet functions (Hajo Kirchhoff)
|
||||||
|
- fixed several bugs in wxNotebook with wxNB_MULTILINE style
|
||||||
|
|
||||||
wxGTK:
|
wxGTK:
|
||||||
|
|
||||||
|
@@ -619,10 +619,11 @@ bool wxNotebook::InsertPage(size_t nPage,
|
|||||||
// succeeded: save the pointer to the page
|
// succeeded: save the pointer to the page
|
||||||
m_pages.Insert(pPage, nPage);
|
m_pages.Insert(pPage, nPage);
|
||||||
|
|
||||||
// for the first page (only) we need to adjust the size again because the
|
// we may need to adjust the size again if the notebook size changed:
|
||||||
// notebook size changed: the tabs which hadn't been there before are now
|
// normally this only happens for the first page we add (the tabs which
|
||||||
// shown
|
// hadn't been there before are now shown) but for a multiline notebook it
|
||||||
if ( m_pages.GetCount() == 1 )
|
// 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);
|
AdjustPageSize(pPage);
|
||||||
}
|
}
|
||||||
@@ -698,6 +699,29 @@ void wxNotebook::OnSize(wxSizeEvent& event)
|
|||||||
rc.left = rc.top = 0;
|
rc.left = rc.top = 0;
|
||||||
GetSize((int *)&rc.right, (int *)&rc.bottom);
|
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);
|
TabCtrl_AdjustRect(m_hwnd, false, &rc);
|
||||||
|
|
||||||
int width = rc.right - rc.left,
|
int width = rc.right - rc.left,
|
||||||
|
Reference in New Issue
Block a user