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
#include "wx/datetime.h"
#include "wx/splitter.h"
#include "wx/aboutdlg.h"
#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"
#include "wx/choicdlg.h"
#include "wx/numdlg.h"
#include "wx/spinctrl.h"
public: // event handlers
void OnStyleChange(wxCommandEvent& event);
public: // event handlers
void OnStyleChange(wxCommandEvent& event);
+ void OnSetBackgroundColour(wxCommandEvent& event);
+ void OnSetForegroundColour(wxCommandEvent& event);
void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
enum
{
ID_CLEARLOG = wxID_HIGHEST+1,
enum
{
ID_CLEARLOG = wxID_HIGHEST+1,
+ ID_BACKGROUND_COLOUR,
+ ID_FOREGROUND_COLOUR,
ID_STYLE_MENU,
// file menu
ID_STYLE_MENU,
// file menu
EVT_MENU( ID_ABOUT, MyFrame::OnAbout )
EVT_MENU( ID_CLEARLOG, MyFrame::OnClearLog )
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 )
EVT_NOTEBOOK_PAGE_CHANGED( wxID_ANY, MyFrame::OnPageChanged )
EVT_BUTTON( ID_ADD_MOZART, MyFrame::OnAddMozart )
style_menu->AppendCheckItem(ID_VERT_RULES, "Display vertical rules");
wxMenu *file_menu = new wxMenu;
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");
file_menu->Append(ID_STYLE_MENU, "&Style", style_menu);
file_menu->AppendSeparator();
file_menu->Append(ID_EXIT, "E&xit");
+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();
void MyFrame::OnPageChanged( wxBookCtrlEvent& WXUNUSED(event) )
{
unsigned int nPanel = m_notebook->GetSelection();
wxAutoBufferedPaintDC dc( this );
#ifdef __WXMSW__
wxAutoBufferedPaintDC dc( this );
#ifdef __WXMSW__
+ dc.SetBrush(GetOwner()->GetBackgroundColour());
dc.SetPen( *wxTRANSPARENT_PEN );
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());