Don't hard code white background colour in generic wxDataViewCtrl.
wxDataViewMainWindow::OnPaint() always used the white brush to erase the control background which was wrong, change it to use the background colour of the control. Also add tests for setting wxDataViewCtrl foreground and background colours to the dataview sample. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62153 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -28,6 +28,7 @@
|
|||||||
#include "wx/datetime.h"
|
#include "wx/datetime.h"
|
||||||
#include "wx/splitter.h"
|
#include "wx/splitter.h"
|
||||||
#include "wx/aboutdlg.h"
|
#include "wx/aboutdlg.h"
|
||||||
|
#include "wx/colordlg.h"
|
||||||
#include "wx/choicdlg.h"
|
#include "wx/choicdlg.h"
|
||||||
#include "wx/numdlg.h"
|
#include "wx/numdlg.h"
|
||||||
#include "wx/spinctrl.h"
|
#include "wx/spinctrl.h"
|
||||||
@@ -73,6 +74,8 @@ public:
|
|||||||
public: // event handlers
|
public: // event handlers
|
||||||
|
|
||||||
void OnStyleChange(wxCommandEvent& event);
|
void OnStyleChange(wxCommandEvent& event);
|
||||||
|
void OnSetBackgroundColour(wxCommandEvent& event);
|
||||||
|
void OnSetForegroundColour(wxCommandEvent& event);
|
||||||
void OnQuit(wxCommandEvent& event);
|
void OnQuit(wxCommandEvent& event);
|
||||||
void OnAbout(wxCommandEvent& event);
|
void OnAbout(wxCommandEvent& event);
|
||||||
|
|
||||||
@@ -227,6 +230,8 @@ bool MyApp::OnInit()
|
|||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
ID_CLEARLOG = wxID_HIGHEST+1,
|
ID_CLEARLOG = wxID_HIGHEST+1,
|
||||||
|
ID_BACKGROUND_COLOUR,
|
||||||
|
ID_FOREGROUND_COLOUR,
|
||||||
ID_STYLE_MENU,
|
ID_STYLE_MENU,
|
||||||
|
|
||||||
// file menu
|
// file menu
|
||||||
@@ -265,6 +270,9 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
|||||||
EVT_MENU( ID_ABOUT, MyFrame::OnAbout )
|
EVT_MENU( ID_ABOUT, MyFrame::OnAbout )
|
||||||
EVT_MENU( ID_CLEARLOG, MyFrame::OnClearLog )
|
EVT_MENU( ID_CLEARLOG, MyFrame::OnClearLog )
|
||||||
|
|
||||||
|
EVT_MENU( ID_FOREGROUND_COLOUR, MyFrame::OnSetForegroundColour )
|
||||||
|
EVT_MENU( ID_BACKGROUND_COLOUR, MyFrame::OnSetBackgroundColour )
|
||||||
|
|
||||||
EVT_NOTEBOOK_PAGE_CHANGED( wxID_ANY, MyFrame::OnPageChanged )
|
EVT_NOTEBOOK_PAGE_CHANGED( wxID_ANY, MyFrame::OnPageChanged )
|
||||||
|
|
||||||
EVT_BUTTON( ID_ADD_MOZART, MyFrame::OnAddMozart )
|
EVT_BUTTON( ID_ADD_MOZART, MyFrame::OnAddMozart )
|
||||||
@@ -330,7 +338,9 @@ MyFrame::MyFrame(wxFrame *frame, const wxString &title, int x, int y, int w, int
|
|||||||
style_menu->AppendCheckItem(ID_VERT_RULES, "Display vertical rules");
|
style_menu->AppendCheckItem(ID_VERT_RULES, "Display vertical rules");
|
||||||
|
|
||||||
wxMenu *file_menu = new wxMenu;
|
wxMenu *file_menu = new wxMenu;
|
||||||
file_menu->Append(ID_CLEARLOG, "Clear log");
|
file_menu->Append(ID_CLEARLOG, "&Clear log\tCtrl-L");
|
||||||
|
file_menu->Append(ID_FOREGROUND_COLOUR, "Set &foreground colour...\tCtrl-F");
|
||||||
|
file_menu->Append(ID_BACKGROUND_COLOUR, "Set &background colour...\tCtrl-B");
|
||||||
file_menu->Append(ID_STYLE_MENU, "&Style", style_menu);
|
file_menu->Append(ID_STYLE_MENU, "&Style", style_menu);
|
||||||
file_menu->AppendSeparator();
|
file_menu->AppendSeparator();
|
||||||
file_menu->Append(ID_EXIT, "E&xit");
|
file_menu->Append(ID_EXIT, "E&xit");
|
||||||
@@ -611,6 +621,28 @@ void MyFrame::OnClearLog( wxCommandEvent& WXUNUSED(event) )
|
|||||||
m_log->Clear();
|
m_log->Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MyFrame::OnSetForegroundColour(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
wxDataViewCtrl * const dvc = m_ctrl[m_notebook->GetSelection()];
|
||||||
|
wxColour col = wxGetColourFromUser(this, dvc->GetForegroundColour());
|
||||||
|
if ( col.IsOk() )
|
||||||
|
{
|
||||||
|
dvc->SetForegroundColour(col);
|
||||||
|
Refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MyFrame::OnSetBackgroundColour(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
wxDataViewCtrl * const dvc = m_ctrl[m_notebook->GetSelection()];
|
||||||
|
wxColour col = wxGetColourFromUser(this, dvc->GetBackgroundColour());
|
||||||
|
if ( col.IsOk() )
|
||||||
|
{
|
||||||
|
dvc->SetBackgroundColour(col);
|
||||||
|
Refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void MyFrame::OnPageChanged( wxBookCtrlEvent& WXUNUSED(event) )
|
void MyFrame::OnPageChanged( wxBookCtrlEvent& WXUNUSED(event) )
|
||||||
{
|
{
|
||||||
unsigned int nPanel = m_notebook->GetSelection();
|
unsigned int nPanel = m_notebook->GetSelection();
|
||||||
|
@@ -1656,11 +1656,9 @@ void wxDataViewMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
|
|||||||
wxAutoBufferedPaintDC dc( this );
|
wxAutoBufferedPaintDC dc( this );
|
||||||
|
|
||||||
#ifdef __WXMSW__
|
#ifdef __WXMSW__
|
||||||
|
dc.SetBrush(GetOwner()->GetBackgroundColour());
|
||||||
dc.SetPen( *wxTRANSPARENT_PEN );
|
dc.SetPen( *wxTRANSPARENT_PEN );
|
||||||
dc.SetBrush( wxBrush( GetBackgroundColour()) );
|
dc.DrawRectangle(GetClientSize());
|
||||||
dc.SetBrush( *wxWHITE_BRUSH );
|
|
||||||
wxSize size( GetClientSize() );
|
|
||||||
dc.DrawRectangle( 0,0,size.x,size.y );
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// prepare the DC
|
// prepare the DC
|
||||||
|
Reference in New Issue
Block a user