Improvements for wxTextCtrl, wxSearchCtrl, wxButton when using
non-default DPI.

See https://github.com/wxWidgets/wxWidgets/pull/1634
This commit is contained in:
Vadim Zeitlin
2019-11-13 15:47:59 +01:00
7 changed files with 105 additions and 71 deletions

View File

@@ -111,9 +111,6 @@ protected:
// (re)create the wxButton
void CreateButton();
// add m_button to m_sizerButton using current value of m_chkFit
void AddButtonToSizer();
// helper function: create a bitmap for wxBitmapButton
wxBitmap CreateBitmap(const wxString& label, const wxArtID& type);
@@ -315,7 +312,7 @@ void ButtonWidgetsPage::CreateContent()
sizerLeft->AddSpacer(5);
wxButton *btn = new wxButton(this, ButtonPage_Reset, "&Reset");
sizerLeft->Add(btn, wxSizerFlags().CentreHorizontal().Border(wxALL, 15));
sizerLeft->Add(btn, wxSizerFlags().CentreHorizontal().TripleBorder(wxALL));
// middle pane
wxStaticBox *box2 = new wxStaticBox(this, wxID_ANY, "&Operations");
@@ -340,15 +337,15 @@ void ButtonWidgetsPage::CreateContent()
// right pane
m_sizerButton = new wxBoxSizer(wxHORIZONTAL);
m_sizerButton->SetMinSize(150, 0);
m_sizerButton->SetMinSize(FromDIP(150), 0);
// the 3 panes panes compose the window
sizerTop->Add(sizerLeft,
wxSizerFlags(0).Expand().Border((wxALL & ~wxLEFT), 10));
wxSizerFlags(0).Expand().DoubleBorder(wxALL & ~wxLEFT));
sizerTop->Add(sizerMiddle,
wxSizerFlags(1).Expand().Border(wxALL, 10));
wxSizerFlags(1).Expand().DoubleBorder(wxALL));
sizerTop->Add(m_sizerButton,
wxSizerFlags(1).Expand().Border((wxALL & ~wxRIGHT), 10));
wxSizerFlags(1).Expand().DoubleBorder((wxALL & ~wxRIGHT)));
// do create the main control
Reset();
@@ -364,7 +361,7 @@ void ButtonWidgetsPage::CreateContent()
void ButtonWidgetsPage::Reset()
{
m_chkBitmapOnly->SetValue(false);
m_chkFit->SetValue(true);
m_chkFit->SetValue(false);
m_chkAuthNeeded->SetValue(false);
m_chkTextAndBitmap->SetValue(false);
m_chkDefault->SetValue(false);
@@ -453,6 +450,11 @@ void ButtonWidgetsPage::CreateButton()
break;
}
if ( m_chkFit->GetValue() )
{
flags |= wxBU_EXACTFIT;
}
bool showsBitmap = false;
if ( m_chkBitmapOnly->GetValue() )
{
@@ -557,25 +559,13 @@ void ButtonWidgetsPage::CreateButton()
m_button->Enable(!m_chkDisable->IsChecked());
AddButtonToSizer();
m_sizerButton->AddStretchSpacer();
m_sizerButton->Add(m_button, wxSizerFlags().Centre().Border());
m_sizerButton->AddStretchSpacer();
m_sizerButton->Layout();
}
void ButtonWidgetsPage::AddButtonToSizer()
{
if ( m_chkFit->GetValue() )
{
m_sizerButton->AddStretchSpacer(1);
m_sizerButton->Add(m_button, wxSizerFlags(0).Centre().Border());
m_sizerButton->AddStretchSpacer(1);
}
else // take up the entire space
{
m_sizerButton->Add(m_button, wxSizerFlags(1).Expand().Border());
}
}
// ----------------------------------------------------------------------------
// event handlers
// ----------------------------------------------------------------------------

View File

@@ -156,13 +156,13 @@ void SearchCtrlWidgetsPage::CreateContent()
m_searchBtnCheck->SetValue(true);
box->Add(m_searchBtnCheck, 0, wxALL, 5);
box->Add(m_cancelBtnCheck, 0, wxALL, 5);
box->Add(m_menuBtnCheck, 0, wxALL, 5);
box->Add(m_searchBtnCheck, wxSizerFlags().Border());
box->Add(m_cancelBtnCheck, wxSizerFlags().Border());
box->Add(m_menuBtnCheck, wxSizerFlags().Border());
wxSizer* sizer = new wxBoxSizer(wxHORIZONTAL);
sizer->Add(box, 0, wxALL|wxEXPAND, 15);
sizer->Add(m_srchCtrl, 0, wxALL|wxALIGN_CENTER, 15);
sizer->Add(box, wxSizerFlags().Expand().TripleBorder());
sizer->Add(m_srchCtrl, wxSizerFlags().Centre().TripleBorder());
SetSizer(sizer);
}