Fix positioning the buttons in wxPGMultiButton

For the sake of consistency with editor buttons created with
wxPropertyGrid::GenerateEditorButton(), the borders around the buttons
should be taken into account while positioning the buttons
in wxPGMultiButton.
This commit is contained in:
Artur Wieczorek
2020-04-04 17:41:46 +02:00
parent c90bb2596a
commit a3cbcc2c6c

View File

@@ -97,6 +97,8 @@
#endif #endif
#define wxPG_BUTTON_BORDER_WIDTH (-wxPG_BUTTON_SIZEDEC + wxPG_NAT_BUTTON_BORDER_Y)
// for odcombo // for odcombo
#ifdef __WXMAC__ #ifdef __WXMAC__
#define wxPG_CHOICEXADJUST -3 // required because wxComboCtrl reserves 3pixels for wxTextCtrl's focus ring #define wxPG_CHOICEXADJUST -3 // required because wxComboCtrl reserves 3pixels for wxTextCtrl's focus ring
@@ -1981,8 +1983,7 @@ wxWindow* wxPropertyGrid::GenerateEditorButton( const wxPoint& pos, const wxSize
// Decorations are chunky on Mac, and we can't make the button square, so // Decorations are chunky on Mac, and we can't make the button square, so
// do things a bit differently on this platform. // do things a bit differently on this platform.
wxPoint p(pos.x+sz.x, wxPoint p(pos.x+sz.x, pos.y- wxPG_BUTTON_BORDER_WIDTH);
pos.y+wxPG_BUTTON_SIZEDEC-wxPG_NAT_BUTTON_BORDER_Y);
wxSize s(25, wxDefaultCoord); wxSize s(25, wxDefaultCoord);
wxButton* but = new wxButton(); wxButton* but = new wxButton();
@@ -1993,8 +1994,7 @@ wxWindow* wxPropertyGrid::GenerateEditorButton( const wxPoint& pos, const wxSize
but->Move(p); but->Move(p);
#else #else
wxSize s(sz.y-(wxPG_BUTTON_SIZEDEC*2)+(wxPG_NAT_BUTTON_BORDER_Y*2), wxSize s(sz.y + 2*wxPG_BUTTON_BORDER_WIDTH, sz.y + 2*wxPG_BUTTON_BORDER_WIDTH);
sz.y-(wxPG_BUTTON_SIZEDEC*2)+(wxPG_NAT_BUTTON_BORDER_Y*2));
// Reduce button width to line height // Reduce button width to line height
if ( s.x > m_lineHeight ) if ( s.x > m_lineHeight )
@@ -2006,8 +2006,7 @@ wxWindow* wxPropertyGrid::GenerateEditorButton( const wxPoint& pos, const wxSize
s.x = 25; s.x = 25;
#endif #endif
wxPoint p(pos.x+sz.x-s.x, wxPoint p(pos.x+sz.x-s.x, pos.y-wxPG_BUTTON_BORDER_WIDTH);
pos.y+wxPG_BUTTON_SIZEDEC-wxPG_NAT_BUTTON_BORDER_Y);
wxButton* but = new wxButton(); wxButton* but = new wxButton();
#ifdef __WXMSW__ #ifdef __WXMSW__
@@ -2140,7 +2139,7 @@ bool wxPGEditorDialogAdapter::ShowDialog( wxPropertyGrid* propGrid, wxPGProperty
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
wxPGMultiButton::wxPGMultiButton( wxPropertyGrid* pg, const wxSize& sz ) wxPGMultiButton::wxPGMultiButton( wxPropertyGrid* pg, const wxSize& sz )
: wxWindow( pg->GetPanel(), wxID_ANY, wxPoint(-100,-100), wxSize(0, sz.y) ), : wxWindow( pg->GetPanel(), wxID_ANY, wxPoint(-100,-100), wxSize(0, sz.y + 2*wxPG_BUTTON_BORDER_WIDTH) ),
m_fullEditorSize(sz), m_buttonsWidth(0) m_fullEditorSize(sz), m_buttonsWidth(0)
{ {
SetBackgroundColour(pg->GetCellBackgroundColour()); SetBackgroundColour(pg->GetCellBackgroundColour());
@@ -2149,7 +2148,7 @@ wxPGMultiButton::wxPGMultiButton( wxPropertyGrid* pg, const wxSize& sz )
void wxPGMultiButton::Finalize( wxPropertyGrid* WXUNUSED(propGrid), void wxPGMultiButton::Finalize( wxPropertyGrid* WXUNUSED(propGrid),
const wxPoint& pos ) const wxPoint& pos )
{ {
Move( pos.x + m_fullEditorSize.x - m_buttonsWidth, pos.y ); Move( pos.x + m_fullEditorSize.x - m_buttonsWidth, pos.y - wxPG_BUTTON_BORDER_WIDTH);
} }
int wxPGMultiButton::GenId( int itemid ) const int wxPGMultiButton::GenId( int itemid ) const