Ticket #11426: wxBox issue.cpp

File wxBox issue.cpp, 2.6 KB (added by gszczesz, 9 years ago)

minimal example that illustrates the problem.

Line 
1
2 
3// For compilers that support precompilation, includes "wx/wx.h".
4#include "wx/wxprec.h"
5 
6#ifdef __BORLANDC__
7    #pragma hdrstop
8#endif
9
10// for all others, include the necessary headers (this file is usually all you
11// need because it includes almost all "standard" wxWidgets headers)
12#ifndef WX_PRECOMP
13    #include "wx/wx.h"
14#endif
15
16
17class MyApp : public wxApp
18{
19public:
20    virtual bool OnInit();
21};
22
23
24class MyFrame : public wxFrame
25{
26public:
27    // ctor(s)
28    MyFrame(const wxString& title);
29
30        void KeyEvent( wxKeyEvent& event );
31
32private:
33
34        bool show2;
35        bool show3;
36        wxBoxSizer*     sizer1;
37        wxBoxSizer*     sizer2;
38        wxBoxSizer* sizer3;
39
40    DECLARE_EVENT_TABLE()
41};
42
43
44BEGIN_EVENT_TABLE(MyFrame, wxFrame)
45        EVT_KEY_DOWN(MyFrame::KeyEvent )
46END_EVENT_TABLE()
47
48IMPLEMENT_APP(MyApp)
49
50
51bool MyApp::OnInit()
52{
53    if ( !wxApp::OnInit() )
54        return false;
55
56    // create the main application window
57    MyFrame *frame = new MyFrame(_T("wxBoxSizer and wxFlexGridSizer problem"));
58
59    frame->Show(true);
60
61    return true;
62}
63
64// ----------------------------------------------------------------------------
65// main frame
66// ----------------------------------------------------------------------------
67
68// frame constructor
69MyFrame::MyFrame(const wxString& title)
70       : wxFrame(NULL, wxID_ANY, title)
71{
72
73        // Show the problem with Sizer's and their borders not being taken out in the scrolled window
74        sizer1 = new wxBoxSizer(wxVERTICAL);
75        sizer2 = new wxBoxSizer(wxVERTICAL);
76        sizer3 = new wxBoxSizer(wxVERTICAL);
77
78
79        // Add some text into sizer2 and sizer3
80        sizer2->Add( new wxStaticText( this, -1, _T("Contents of Sizer2") ), 0, wxALL | wxEXPAND, 5 );
81        wxBoxSizer* newsizer = new wxBoxSizer( wxHORIZONTAL );
82        sizer2->Add( newsizer, 0, wxALL | wxEXPAND, 5);
83
84        sizer3->Add( new wxStaticText( this, -1, _T("Contents of Sizer3") ), 0, wxALL | wxEXPAND, 5 );
85        newsizer = new wxBoxSizer( wxHORIZONTAL );
86        sizer3->Add( newsizer, 0, wxALL | wxEXPAND, 5);
87
88
89        // Add sizer2 and sizer3 onto sizer1
90        sizer1->Add( new wxStaticText( this, -1, _T("Stuff before sizer2/3") ), 0, 0, 0 );
91        sizer1->Add( sizer2, 0, wxALL | wxEXPAND, 25); 
92        sizer1->Add( sizer3, 0, wxALL | wxEXPAND, 25);
93        sizer1->Add( new wxStaticText( this, -1, _T("Stuff after sizer2/3") ), 0, 0, 0 );
94
95        SetSizer( sizer1 );
96        Layout();
97
98        show2 = true;
99        show3 = true;
100}
101
102void MyFrame::KeyEvent( wxKeyEvent& event )
103{
104        if( event.GetKeyCode() == WXK_SPACE  )
105        {
106                show2 = !show2;
107                show3 = !show3;
108                sizer1->Show( sizer2, show2, true );
109                sizer1->Show( sizer3, show3, true );
110        }
111
112        Fit();
113}