wxWidgets/include/wx/generic/panelg.h
Vadim Zeitlin d931703342 Inherit notebook background recursively under wxMSW.
With MSWSetTransparentBackground() hack only the panel which was the immediate
child of wxNotebook (i.e. its page) inherited the notebook background but not
its children. This resulted in jarring background discontinuities when nested
panels were used.

Fix this by inheriting notebook background in all child panels by testing for
the return value of the parents MSWHasInheritableBackground() method in
wxPanel::HasTransparentBackground() recursively.

Closes #12317.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65238 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-08-10 21:48:17 +00:00

102 lines
3.0 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: wx/generic/panelg.h
// Purpose: wxPanel: a container for child controls
// Author: Julian Smart
// Modified by:
// Created: 01/02/97
// RCS-ID: $Id$
// Copyright: (c) Julian Smart
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_GENERIC_PANEL_H_
#define _WX_GENERIC_PANEL_H_
// ----------------------------------------------------------------------------
// headers and forward declarations
// ----------------------------------------------------------------------------
#include "wx/window.h"
#include "wx/containr.h"
class WXDLLIMPEXP_FWD_CORE wxControlContainer;
extern WXDLLIMPEXP_DATA_CORE(const char) wxPanelNameStr[];
// ----------------------------------------------------------------------------
// wxPanel contains other controls and implements TAB traversal between them
// ----------------------------------------------------------------------------
class WXDLLIMPEXP_CORE wxPanel : public wxWindow
{
public:
wxPanel() { Init(); }
// Old-style constructor (no default values for coordinates to avoid
// ambiguity with the new one)
wxPanel(wxWindow *parent,
int x, int y, int width, int height,
long style = wxTAB_TRAVERSAL | wxNO_BORDER,
const wxString& name = wxPanelNameStr)
{
Init();
Create(parent, wxID_ANY, wxPoint(x, y), wxSize(width, height), style, name);
}
// Constructor
wxPanel(wxWindow *parent,
wxWindowID winid = wxID_ANY,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxTAB_TRAVERSAL | wxNO_BORDER,
const wxString& name = wxPanelNameStr)
{
Init();
Create(parent, winid, pos, size, style, name);
}
// Pseudo ctor
bool Create(wxWindow *parent,
wxWindowID winid = wxID_ANY,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxTAB_TRAVERSAL | wxNO_BORDER,
const wxString& name = wxPanelNameStr);
virtual ~wxPanel();
// implementation from now on
// --------------------------
virtual void InitDialog();
#ifdef __WXUNIVERSAL__
virtual bool IsCanvasWindow() const { return true; }
#endif
#ifdef __WXMSW__
// This is overridden for MSW to return true for all panels that are child
// of a window with themed background (such as wxNotebook) which should
// show through the child panels.
virtual bool HasTransparentBackground();
#endif // __WXMSW__
WX_DECLARE_CONTROL_CONTAINER();
protected:
// common part of all ctors
void Init();
// choose the default border for this window
virtual wxBorder GetDefaultBorder() const { return wxWindowBase::GetDefaultBorder(); }
private:
DECLARE_DYNAMIC_CLASS_NO_COPY(wxPanel)
DECLARE_EVENT_TABLE()
};
#endif
// _WX_GENERIC_PANEL_H_