Doing this makes the checkbox unusable with the default GTK 3 theme as the default grid background colour (white) is the same as the colour of the check mark -- so changing the checkbox background to it makes it invisible. Work around this by adding a new SetTransparentPartColour() method that can be used by wxGrid (and, in the future, user code if we decide that this is really the best solution to this problem that we can provide) to make the checkbox blend in with its background without actually changing its appearance.
86 lines
2.8 KiB
C++
86 lines
2.8 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/msw/checkbox.h
|
|
// Purpose: wxCheckBox class
|
|
// Author: Julian Smart
|
|
// Modified by:
|
|
// Created: 01/02/97
|
|
// Copyright: (c) Julian Smart
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_CHECKBOX_H_
|
|
#define _WX_CHECKBOX_H_
|
|
|
|
#include "wx/msw/ownerdrawnbutton.h"
|
|
|
|
// Checkbox item (single checkbox)
|
|
class WXDLLIMPEXP_CORE wxCheckBox : public wxMSWOwnerDrawnButton<wxCheckBoxBase>
|
|
{
|
|
public:
|
|
wxCheckBox() : m_state(wxCHK_UNCHECKED) { }
|
|
wxCheckBox(wxWindow *parent,
|
|
wxWindowID id,
|
|
const wxString& label,
|
|
const wxPoint& pos = wxDefaultPosition,
|
|
const wxSize& size = wxDefaultSize,
|
|
long style = 0,
|
|
const wxValidator& validator = wxDefaultValidator,
|
|
const wxString& name = wxCheckBoxNameStr)
|
|
{
|
|
Create(parent, id, label, pos, size, style, validator, name);
|
|
}
|
|
|
|
bool Create(wxWindow *parent,
|
|
wxWindowID id,
|
|
const wxString& label,
|
|
const wxPoint& pos = wxDefaultPosition,
|
|
const wxSize& size = wxDefaultSize,
|
|
long style = 0,
|
|
const wxValidator& validator = wxDefaultValidator,
|
|
const wxString& name = wxCheckBoxNameStr);
|
|
|
|
virtual void SetValue(bool value) wxOVERRIDE;
|
|
virtual bool GetValue() const wxOVERRIDE;
|
|
|
|
// override some base class virtuals
|
|
virtual void SetLabel(const wxString& label) wxOVERRIDE;
|
|
|
|
virtual void SetTransparentPartColour(const wxColour& col) wxOVERRIDE
|
|
{
|
|
SetBackgroundColour(col);
|
|
}
|
|
|
|
virtual bool MSWCommand(WXUINT param, WXWORD id) wxOVERRIDE;
|
|
virtual void Command(wxCommandEvent& event) wxOVERRIDE;
|
|
|
|
// returns true if the platform should explicitly apply a theme border
|
|
virtual bool CanApplyThemeBorder() const wxOVERRIDE { return false; }
|
|
|
|
// implementation only from now on
|
|
virtual WXDWORD MSWGetStyle(long flags, WXDWORD *exstyle = NULL) const wxOVERRIDE;
|
|
|
|
protected:
|
|
virtual wxSize DoGetBestClientSize() const wxOVERRIDE;
|
|
|
|
virtual void DoSet3StateValue(wxCheckBoxState value) wxOVERRIDE;
|
|
virtual wxCheckBoxState DoGet3StateValue() const wxOVERRIDE;
|
|
|
|
// Implement wxMSWOwnerDrawnButtonBase methods.
|
|
virtual int MSWGetButtonStyle() const wxOVERRIDE;
|
|
virtual void MSWOnButtonResetOwnerDrawn() wxOVERRIDE;
|
|
virtual int MSWGetButtonCheckedFlag() const wxOVERRIDE;
|
|
virtual void
|
|
MSWDrawButtonBitmap(wxDC& dc, const wxRect& rect, int flags) wxOVERRIDE;
|
|
|
|
private:
|
|
// common part of all ctors
|
|
void Init();
|
|
|
|
// current state of the checkbox
|
|
wxCheckBoxState m_state;
|
|
|
|
wxDECLARE_DYNAMIC_CLASS_NO_COPY(wxCheckBox);
|
|
};
|
|
|
|
#endif // _WX_CHECKBOX_H_
|