d931703342
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
102 lines
3.0 KiB
C++
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_
|