don't send dummy scroll events from wxNotebook when the page is changed using the built-in spin control

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15069 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2002-04-10 00:22:49 +00:00
parent 4e4a5fed9f
commit 0df3fbd72a
2 changed files with 53 additions and 31 deletions

View File

@ -120,6 +120,8 @@ public:
// base class virtuals
// -------------------
virtual bool MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result);
virtual bool MSWOnScroll(int orientation, WXWORD nSBCode,
WXWORD pos, WXHWND control);
virtual void SetConstraintSizes(bool recurse = TRUE);
virtual bool DoPhase(int nPhase);
@ -127,6 +129,9 @@ protected:
// common part of all ctors
void Init();
// translate wxWin styles to the Windows ones
virtual WXDWORD MSWGetStyle(long flags, WXDWORD *exstyle = NULL) const;
// remove one page from the notebook, without deleting
virtual wxNotebookPage *DoRemovePage(int nPage);

View File

@ -141,45 +141,47 @@ bool wxNotebook::Create(wxWindow *parent,
long style,
const wxString& name)
{
// base init
if ( !CreateBase(parent, id, pos, size, style, wxDefaultValidator, name) )
return FALSE;
// base init
if ( !CreateControl(parent, id, pos, size, style, wxDefaultValidator, name) )
return FALSE;
parent->AddChild(this);
// notebook, so explicitly specify 0 as last parameter
if ( !MSWCreateControl(WC_TABCONTROL, _T(""), pos, size,
style | wxTAB_TRAVERSAL) )
return FALSE;
// style
m_windowStyle = style | wxTAB_TRAVERSAL;
SetBackgroundColour(wxColour(::GetSysColor(COLOR_BTNFACE)));
long tabStyle = WS_TABSTOP | TCS_TABS;
return TRUE;
}
if ( m_windowStyle & wxBORDER )
tabStyle |= WS_BORDER;
if ( m_windowStyle & wxCLIP_SIBLINGS )
tabStyle |= WS_CLIPSIBLINGS;
if (m_windowStyle & wxCLIP_CHILDREN)
tabStyle |= WS_CLIPCHILDREN;
WXDWORD wxNotebook::MSWGetStyle(long style, WXDWORD *exstyle) const
{
WXDWORD tabStyle = wxControl::MSWGetStyle(style, exstyle);
if ( m_windowStyle & wxTC_MULTILINE )
tabStyle |= TCS_MULTILINE;
if (m_windowStyle & wxNB_FIXEDWIDTH)
tabStyle |= TCS_FIXEDWIDTH ;
if (m_windowStyle & wxNB_BOTTOM)
tabStyle |= TCS_RIGHT;
if (m_windowStyle & wxNB_LEFT)
tabStyle |= TCS_VERTICAL;
if (m_windowStyle & wxNB_RIGHT)
tabStyle |= TCS_VERTICAL|TCS_RIGHT;
tabStyle |= WS_TABSTOP | TCS_TABS;
// note that we don't want to have the default WS_EX_CLIENTEDGE style for the
// notebook, so explicitly specify 0 as last parameter
if ( !MSWCreateControl(WC_TABCONTROL, tabStyle, pos, size, _T(""), 0) )
{
return FALSE;
}
if ( style & wxTC_MULTILINE )
tabStyle |= TCS_MULTILINE;
if ( style & wxNB_FIXEDWIDTH )
tabStyle |= TCS_FIXEDWIDTH;
SetBackgroundColour(wxColour(::GetSysColor(COLOR_BTNFACE)));
if ( style & wxNB_BOTTOM )
tabStyle |= TCS_RIGHT;
else if ( style & wxNB_LEFT )
tabStyle |= TCS_VERTICAL;
else if ( style & wxNB_RIGHT )
tabStyle |= TCS_VERTICAL | TCS_RIGHT;
return TRUE;
// ex style
if ( exstyle )
{
// note that we never want to have the default WS_EX_CLIENTEDGE style
// as it looks too ugly for the notebooks
*exstyle = 0;
}
return tabStyle;
}
// ----------------------------------------------------------------------------
@ -579,6 +581,21 @@ bool wxNotebook::DoPhase(int WXUNUSED(nPhase))
return TRUE;
}
// ----------------------------------------------------------------------------
// wxNotebook Windows message handlers
// ----------------------------------------------------------------------------
bool wxNotebook::MSWOnScroll(int orientation, WXWORD nSBCode,
WXWORD pos, WXHWND control)
{
// don't generate EVT_SCROLLWIN events for the WM_SCROLLs coming from the
// up-down control
if ( control )
return FALSE;
return wxNotebookBase::MSWOnScroll(orientation, nSBCode, pos, control);
}
bool wxNotebook::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM* result)
{
wxNotebookEvent event(wxEVT_NULL, m_windowId);