allow passing -1 range to SetScrollbar() to indicate the the scrollbar should be disabled and use this to implement wxSHOW_SB_ALWAYS in the generic wxScrollHelper
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57535 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -452,7 +452,7 @@ public:
|
||||
wxDefaultPosition, wxDefaultSize,
|
||||
wxBORDER_SUNKEN)
|
||||
{
|
||||
m_nLines = 100;
|
||||
m_nLines = 50;
|
||||
m_winSync = NULL;
|
||||
m_inDoSync = false;
|
||||
|
||||
@@ -621,7 +621,7 @@ private:
|
||||
void OnTestAuto(wxCommandEvent& WXUNUSED(event)) { new MyAutoFrame(this); }
|
||||
|
||||
void OnToggleSync(wxCommandEvent& event);
|
||||
void OnToggleScrollbar(wxCommandEvent& event);
|
||||
void OnScrollbarVisibility(wxCommandEvent& event);
|
||||
|
||||
MyScrolledWindowBase *m_win1,
|
||||
*m_win2;
|
||||
@@ -835,7 +835,7 @@ const wxWindowID Scroll_Test_Sub = wxWindow::NewControlId();
|
||||
const wxWindowID Scroll_Test_Auto = wxWindow::NewControlId();
|
||||
|
||||
const wxWindowID Scroll_TglBtn_Sync = wxWindow::NewControlId();
|
||||
const wxWindowID Scroll_TglBtn_Scrollbar = wxWindow::NewControlId();
|
||||
const wxWindowID Scroll_Radio_ShowScrollbar = wxWindow::NewControlId();
|
||||
|
||||
BEGIN_EVENT_TABLE(MyFrame,wxFrame)
|
||||
EVT_MENU(wxID_ABOUT, MyFrame::OnAbout)
|
||||
@@ -848,7 +848,7 @@ BEGIN_EVENT_TABLE(MyFrame,wxFrame)
|
||||
EVT_MENU(Scroll_Test_Auto, MyFrame::OnTestAuto)
|
||||
|
||||
EVT_TOGGLEBUTTON(Scroll_TglBtn_Sync, MyFrame::OnToggleSync)
|
||||
EVT_TOGGLEBUTTON(Scroll_TglBtn_Scrollbar, MyFrame::OnToggleScrollbar)
|
||||
EVT_RADIOBOX(Scroll_Radio_ShowScrollbar, MyFrame::OnScrollbarVisibility)
|
||||
END_EVENT_TABLE()
|
||||
|
||||
MyFrame::MyFrame()
|
||||
@@ -879,10 +879,12 @@ MyFrame::MyFrame()
|
||||
SetMenuBar( mbar );
|
||||
|
||||
|
||||
wxPanel *panel = new wxPanel(this);
|
||||
|
||||
const wxSizerFlags flagsExpand(wxSizerFlags(1).Expand());
|
||||
|
||||
wxSizer *topsizer = new wxBoxSizer(wxVERTICAL);
|
||||
topsizer->Add(new wxStaticText(this, wxID_ANY,
|
||||
topsizer->Add(new wxStaticText(panel, wxID_ANY,
|
||||
"The windows below should behave in the same way, even though\n"
|
||||
"they're implemented quite differently, see the code for details.\n"
|
||||
"\n"
|
||||
@@ -891,28 +893,39 @@ MyFrame::MyFrame()
|
||||
"don't be surprised by this."),
|
||||
wxSizerFlags().Centre().Border());
|
||||
|
||||
m_win1 = new MyScrolledWindowDumb(this);
|
||||
m_win2 = new MyScrolledWindowSmart(this);
|
||||
m_win1 = new MyScrolledWindowDumb(panel);
|
||||
m_win2 = new MyScrolledWindowSmart(panel);
|
||||
|
||||
wxSizer *sizerScrollWin = new wxBoxSizer(wxHORIZONTAL);
|
||||
sizerScrollWin->Add(m_win1, flagsExpand);
|
||||
sizerScrollWin->Add(m_win2, flagsExpand);
|
||||
topsizer->Add(sizerScrollWin, flagsExpand);
|
||||
|
||||
const wxSizerFlags flagsHBorder(wxSizerFlags().Border(wxLEFT | wxRIGHT));
|
||||
const wxSizerFlags
|
||||
flagsHBorder(wxSizerFlags().Centre().Border(wxLEFT | wxRIGHT));
|
||||
|
||||
wxSizer *sizerBtns = new wxBoxSizer(wxHORIZONTAL);
|
||||
sizerBtns->Add(new wxToggleButton(this, Scroll_TglBtn_Sync, "S&ynchronize"),
|
||||
|
||||
// the radio buttons are in the same order as wxSHOW_SB_XXX values but
|
||||
// offset by 1
|
||||
const wxString visibilities[] = { "&never", "&default", "&always" };
|
||||
wxRadioBox *radio = new wxRadioBox(panel, Scroll_Radio_ShowScrollbar,
|
||||
"Left &scrollbar visibility: ",
|
||||
wxDefaultPosition, wxDefaultSize,
|
||||
WXSIZEOF(visibilities), visibilities);
|
||||
radio->SetSelection(wxSHOW_SB_DEFAULT + 1);
|
||||
sizerBtns->Add(radio, flagsHBorder);
|
||||
|
||||
sizerBtns->Add(new wxToggleButton(panel, Scroll_TglBtn_Sync, "S&ynchronize"),
|
||||
flagsHBorder);
|
||||
|
||||
wxToggleButton *btn =new wxToggleButton(this, Scroll_TglBtn_Scrollbar,
|
||||
"&Show scrollbar");
|
||||
btn->SetValue(true);
|
||||
sizerBtns->Add(btn, flagsHBorder);
|
||||
topsizer->Add(sizerBtns, wxSizerFlags().Centre().Border());
|
||||
|
||||
SetSizer(topsizer);
|
||||
panel->SetSizer(topsizer);
|
||||
|
||||
wxSize size = panel->GetBestSize();
|
||||
SetSizeHints(size);
|
||||
SetClientSize(2*size);
|
||||
|
||||
Show();
|
||||
}
|
||||
@@ -931,11 +944,10 @@ void MyFrame::OnToggleSync(wxCommandEvent& event)
|
||||
}
|
||||
}
|
||||
|
||||
void MyFrame::OnToggleScrollbar(wxCommandEvent& event)
|
||||
void MyFrame::OnScrollbarVisibility(wxCommandEvent& event)
|
||||
{
|
||||
m_win1->ShowScrollbars(wxSHOW_SB_NEVER,
|
||||
event.IsChecked() ? wxSHOW_SB_ALWAYS
|
||||
: wxSHOW_SB_NEVER);
|
||||
wxScrollbarVisibility(event.GetSelection() - 1));
|
||||
}
|
||||
|
||||
void MyFrame::OnQuit(wxCommandEvent &WXUNUSED(event))
|
||||
|
Reference in New Issue
Block a user