#include "wx/dcclient.h"
#include "wx/dcmemory.h"
#include "wx/control.h"
+ #include "wx/panel.h"
#endif // WX_PRECOMP
#include "wx/imaglist.h"
if ( !pageRemoved )
return NULL;
+ // hide the removed page to maintain the invariant that only the
+ // selected page is visible and others are hidden:
+ pageRemoved->Show(false);
+
TabCtrl_DeleteItem(GetHwnd(), nPage);
if ( m_pages.IsEmpty() )
if ( !strText.empty() )
{
tcItem.mask |= TCIF_TEXT;
- tcItem.pszText = (wxChar *)strText.wx_str(); // const_cast
+ tcItem.pszText = const_cast<wxChar *>(strText.wx_str());
}
// hide the page: unless it is selected, it shouldn't be shown (and if it
// the wxObject* casts are required to avoid MinGW GCC 2.95.3 ICE
const bool isFromParent = event.GetEventObject() == (wxObject*) parent;
const bool isFromSelf = event.GetEventObject() == (wxObject*) this;
+ const bool isForward = event.GetDirection();
- if ( isFromParent || isFromSelf )
+ if ( isFromSelf && !isForward )
+ {
+ // focus is currently on notebook tab and should leave
+ // it backwards (Shift-TAB)
+ event.SetCurrentFocus(this);
+ parent->HandleWindowEvent(event);
+ }
+ else if ( isFromParent || isFromSelf )
{
// no, it doesn't come from child, case (b) or (c): forward to a
- // page but only if direction is backwards (TAB) or from ourselves,
+ // page but only if entering notebook page (i.e. direction is
+ // backwards (Shift-TAB) comething from out-of-notebook, or
+ // direction is forward (TAB) from ourselves),
if ( m_nSelection != wxNOT_FOUND &&
(!event.GetDirection() || isFromSelf) )
{
// if the direction is forwards. Otherwise set the focus to the
// notebook itself. The notebook is always the 'first' control of a
// page.
- if ( !event.GetDirection() )
+ if ( !isForward )
{
SetFocus();
}
WXHBRUSH wxNotebook::MSWGetBgBrushForChild(WXHDC hDC, wxWindow *child)
{
- // Only apply to notebook pages and transparent children, see
- // wxWindow::MSWGetBgBrushForChild() for explanation
- bool shouldApply;
- if ( child->GetParent() == this )
- {
- // notebook page -- apply background
- shouldApply = true;
- }
- else
- {
- // controls in a notebook page with transparent background should
- // be handled too
- shouldApply = child->HasTransparentBackground() &&
- child->GetParent()->GetParent() == this;
- }
-
- if ( m_hbrBackground && shouldApply )
+ if ( m_hbrBackground )
{
// before drawing with the background brush, we need to position it
// correctly