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:
parent
2fa90e33ea
commit
bb58fa37cd
@ -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();
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user