- subsizer->Add(m_bEdit, 0, wxALIGN_CENTRE_VERTICAL);
- subsizer->Add(m_bNew, 0, wxALIGN_CENTRE_VERTICAL);
- subsizer->Add(m_bDel, 0, wxALIGN_CENTRE_VERTICAL);
- subsizer->Add(m_bUp, 0, wxALIGN_CENTRE_VERTICAL);
- subsizer->Add(m_bDown, 0, wxALIGN_CENTRE_VERTICAL);
+#ifdef __WXMSW__
+ #define BTN_BORDER 4
+ // FIXME - why is this needed? There's some reason why sunken border is
+ // ignored by sizers in wxMSW but not in wxGTK that I can't
+ // figure out...
+#else
+ #define BTN_BORDER 0
+#endif
+
+ subsizer->Add(m_bEdit, 0, wxALIGN_CENTRE_VERTICAL | wxTOP | wxBOTTOM, BTN_BORDER);
+ subsizer->Add(m_bNew, 0, wxALIGN_CENTRE_VERTICAL | wxTOP | wxBOTTOM, BTN_BORDER);
+ subsizer->Add(m_bDel, 0, wxALIGN_CENTRE_VERTICAL | wxTOP | wxBOTTOM, BTN_BORDER);
+
+ if (!(m_style & wxEL_ALLOW_EDIT))
+ m_bEdit->Show(FALSE);
+ if (!(m_style & wxEL_ALLOW_NEW))
+ m_bNew->Show(FALSE);
+ if (!(m_style & wxEL_ALLOW_DELETE))
+ m_bDel->Show(FALSE);
+
+ subsizer->Add(m_bUp, 0, wxALIGN_CENTRE_VERTICAL | wxTOP | wxBOTTOM, BTN_BORDER);
+ subsizer->Add(m_bDown, 0, wxALIGN_CENTRE_VERTICAL | wxTOP | wxBOTTOM, BTN_BORDER);