From: Vadim Zeitlin Date: Sat, 26 Sep 2009 16:43:19 +0000 (+0000) Subject: Don't hard code white background colour in generic wxDataViewCtrl. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/bb58fa37cdee2d2b422701c0d5ffceef4d65968f 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 --- diff --git a/samples/dataview/dataview.cpp b/samples/dataview/dataview.cpp index 692d94eb2d..8ebc6a8044 100644 --- a/samples/dataview/dataview.cpp +++ b/samples/dataview/dataview.cpp @@ -28,6 +28,7 @@ #include "wx/datetime.h" #include "wx/splitter.h" #include "wx/aboutdlg.h" +#include "wx/colordlg.h" #include "wx/choicdlg.h" #include "wx/numdlg.h" #include "wx/spinctrl.h" @@ -73,6 +74,8 @@ public: public: // event handlers void OnStyleChange(wxCommandEvent& event); + void OnSetBackgroundColour(wxCommandEvent& event); + void OnSetForegroundColour(wxCommandEvent& event); void OnQuit(wxCommandEvent& event); void OnAbout(wxCommandEvent& event); @@ -227,6 +230,8 @@ bool MyApp::OnInit() enum { ID_CLEARLOG = wxID_HIGHEST+1, + ID_BACKGROUND_COLOUR, + ID_FOREGROUND_COLOUR, ID_STYLE_MENU, // file menu @@ -265,6 +270,9 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU( ID_ABOUT, MyFrame::OnAbout ) 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_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"); 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->AppendSeparator(); file_menu->Append(ID_EXIT, "E&xit"); @@ -611,6 +621,28 @@ void MyFrame::OnClearLog( wxCommandEvent& WXUNUSED(event) ) 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) ) { unsigned int nPanel = m_notebook->GetSelection(); diff --git a/src/generic/datavgen.cpp b/src/generic/datavgen.cpp index 9b6c2759cb..462af9ddfc 100644 --- a/src/generic/datavgen.cpp +++ b/src/generic/datavgen.cpp @@ -1656,11 +1656,9 @@ void wxDataViewMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) wxAutoBufferedPaintDC dc( this ); #ifdef __WXMSW__ + dc.SetBrush(GetOwner()->GetBackgroundColour()); dc.SetPen( *wxTRANSPARENT_PEN ); - dc.SetBrush( wxBrush( GetBackgroundColour()) ); - dc.SetBrush( *wxWHITE_BRUSH ); - wxSize size( GetClientSize() ); - dc.DrawRectangle( 0,0,size.x,size.y ); + dc.DrawRectangle(GetClientSize()); #endif // prepare the DC