]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/scrollsub/scrollsub.cpp
Better temporary fix.
[wxWidgets.git] / samples / scrollsub / scrollsub.cpp
index 9539d1762597cc427736fbd5dba9670bc211f1e0..f8620259de4b998b205c2bd29df636b5ff4c58ca 100644 (file)
@@ -36,11 +36,11 @@ class MyApp;
 class MyScrolledWindow: public wxScrolledWindow
 {
 public:
 class MyScrolledWindow: public wxScrolledWindow
 {
 public:
-    MyScrolledWindow() {}
+    MyScrolledWindow(){};
     MyScrolledWindow( wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size );
     MyScrolledWindow( wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size );
-    ~MyScrolledWindow();
+    ~MyScrolledWindow(){};
     void OnPaint( wxPaintEvent &event );
     void OnPaint( wxPaintEvent &event );
-
+    void OnSize( wxSizeEvent &event );
 private:
     MyCanvas    *m_canvas;
 
 private:
     MyCanvas    *m_canvas;
 
@@ -87,10 +87,10 @@ private:
 class MyCanvas: public wxPanel
 {
 public:
 class MyCanvas: public wxPanel
 {
 public:
-    MyCanvas() {}
+    MyCanvas(){};
     MyCanvas( wxScrolledWindow *parent, MyTopLabels *top, MyRightLabels *right,
               wxWindowID id, const wxPoint &pos, const wxSize &size );
     MyCanvas( wxScrolledWindow *parent, MyTopLabels *top, MyRightLabels *right,
               wxWindowID id, const wxPoint &pos, const wxSize &size );
-    ~MyCanvas();
+    ~MyCanvas(){};
     void OnPaint( wxPaintEvent &event );
     void ScrollWindow( int dx, int dy, const wxRect *rect );
 
     void OnPaint( wxPaintEvent &event );
     void ScrollWindow( int dx, int dy, const wxRect *rect );
 
@@ -115,7 +115,9 @@ public:
     void OnFullScreen( wxCommandEvent &event );
 
     wxScrolledWindow   *m_scrolled;
     void OnFullScreen( wxCommandEvent &event );
 
     wxScrolledWindow   *m_scrolled;
+#if wxUSE_LOG
     wxTextCtrl         *m_log;
     wxTextCtrl         *m_log;
+#endif // wxUSE_LOG
 
 private:
     DECLARE_DYNAMIC_CLASS(MyFrame)
 
 private:
     DECLARE_DYNAMIC_CLASS(MyFrame)
@@ -139,17 +141,18 @@ IMPLEMENT_APP(MyApp)
 IMPLEMENT_DYNAMIC_CLASS(MyScrolledWindow, wxScrolledWindow)
 
 BEGIN_EVENT_TABLE(MyScrolledWindow, wxScrolledWindow)
 IMPLEMENT_DYNAMIC_CLASS(MyScrolledWindow, wxScrolledWindow)
 
 BEGIN_EVENT_TABLE(MyScrolledWindow, wxScrolledWindow)
-  EVT_PAINT(        MyScrolledWindow::OnPaint)
+  EVT_PAINT(      MyScrolledWindow::OnPaint)
+  EVT_SIZE(       MyScrolledWindow::OnSize)
 END_EVENT_TABLE()
 
 MyScrolledWindow::MyScrolledWindow( wxWindow *parent, wxWindowID id,
                     const wxPoint &pos, const wxSize &size )
         : wxScrolledWindow( parent, id, pos, size, wxSUNKEN_BORDER, _T("test canvas") )
 {
 END_EVENT_TABLE()
 
 MyScrolledWindow::MyScrolledWindow( wxWindow *parent, wxWindowID id,
                     const wxPoint &pos, const wxSize &size )
         : wxScrolledWindow( parent, id, pos, size, wxSUNKEN_BORDER, _T("test canvas") )
 {
-    MyTopLabels *top = new MyTopLabels( this, -1, wxDefaultPosition, wxSize(-1,25) );
-    MyRightLabels *right = new MyRightLabels( this, -1, wxDefaultPosition, wxSize(60,-1) );
+    MyTopLabels *top = new MyTopLabels( this, wxID_ANY, wxDefaultPosition, wxSize(wxDefaultCoord,25) );
+    MyRightLabels *right = new MyRightLabels( this, wxID_ANY, wxDefaultPosition, wxSize(60,wxDefaultCoord) );
 
 
-    m_canvas = new MyCanvas( this, top, right, -1, wxDefaultPosition, wxDefaultSize );
+    m_canvas = new MyCanvas( this, top, right, wxID_ANY, wxDefaultPosition, wxDefaultSize );
 
     SetTargetWindow( m_canvas );
 
 
     SetTargetWindow( m_canvas );
 
@@ -171,12 +174,22 @@ MyScrolledWindow::MyScrolledWindow( wxWindow *parent, wxWindowID id,
 
     mainsizer->Add( middlesizer, 1, wxEXPAND );
 
 
     mainsizer->Add( middlesizer, 1, wxEXPAND );
 
-    SetAutoLayout( TRUE );
+    SetAutoLayout( true );
     SetSizer( mainsizer );
 }
 
     SetSizer( mainsizer );
 }
 
-MyScrolledWindow::~MyScrolledWindow()
+void MyScrolledWindow::OnSize( wxSizeEvent &WXUNUSED(event) )
 {
 {
+    // We need to override OnSize so that our scrolled
+    // window a) does call Layout() to use sizers for
+    // positioning the controls but b) does not query
+    // the sizer for their size and use that for setting
+    // the scrollable area as set that ourselves by
+    // calling SetScrollbar() further down.
+
+    Layout();
+
+    AdjustScrollbars();
 }
 
 void MyScrolledWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
 }
 
 void MyScrolledWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
@@ -280,24 +293,20 @@ MyCanvas::MyCanvas( wxScrolledWindow *parent, MyTopLabels *top, MyRightLabels *r
     m_topLabels = top;
     m_rightLabels = right;
 
     m_topLabels = top;
     m_rightLabels = right;
 
-    (void)new wxButton( this, -1, _T("Hallo I"), wxPoint(0,50), wxSize(100,25) );
-    (void)new wxButton( this, -1, _T("Hallo II"), wxPoint(200,50), wxSize(100,25) );
+    (void)new wxButton( this, wxID_ANY, _T("Hallo I"), wxPoint(0,50), wxSize(100,25) );
+    (void)new wxButton( this, wxID_ANY, _T("Hallo II"), wxPoint(200,50), wxSize(100,25) );
 
 
-    (void)new wxTextCtrl( this, -1, _T("Text I"), wxPoint(0,100), wxSize(100,25) );
-    (void)new wxTextCtrl( this, -1, _T("Text II"), wxPoint(200,100), wxSize(100,25) );
+    (void)new wxTextCtrl( this, wxID_ANY, _T("Text I"), wxPoint(0,100), wxSize(100,25) );
+    (void)new wxTextCtrl( this, wxID_ANY, _T("Text II"), wxPoint(200,100), wxSize(100,25) );
 
 
-    (void)new wxComboBox( this, -1, _T("ComboBox I"), wxPoint(0,150), wxSize(100,25), 0, NULL );
-    (void)new wxComboBox( this, -1, _T("ComboBox II"), wxPoint(200,150), wxSize(100,25), 0, NULL );
+    (void)new wxComboBox( this, wxID_ANY, _T("ComboBox I"), wxPoint(0,150), wxSize(100,25));
+    (void)new wxComboBox( this, wxID_ANY, _T("ComboBox II"), wxPoint(200,150), wxSize(100,25));
 
     SetBackgroundColour( wxT("WHEAT") );
 
     SetCursor( wxCursor( wxCURSOR_IBEAM ) );
 }
 
 
     SetBackgroundColour( wxT("WHEAT") );
 
     SetCursor( wxCursor( wxCURSOR_IBEAM ) );
 }
 
-MyCanvas::~MyCanvas()
-{
-}
-
 void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
 {
     wxPaintDC dc( this );
 void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) )
 {
     wxPaintDC dc( this );
@@ -365,9 +374,9 @@ void MyCanvas::ScrollWindow( int dx, int dy, const wxRect *rect )
 
 // MyFrame
 
 
 // MyFrame
 
-const int ID_QUIT  = 108;
+const int ID_QUIT  = wxID_EXIT;
 const int ID_FULL  = 109;
 const int ID_FULL  = 109;
-const int ID_ABOUT = 110;
+const int ID_ABOUT = wxID_ABOUT;
 
 IMPLEMENT_DYNAMIC_CLASS( MyFrame, wxFrame )
 
 
 IMPLEMENT_DYNAMIC_CLASS( MyFrame, wxFrame )
 
@@ -378,7 +387,7 @@ BEGIN_EVENT_TABLE(MyFrame,wxFrame)
 END_EVENT_TABLE()
 
 MyFrame::MyFrame()
 END_EVENT_TABLE()
 
 MyFrame::MyFrame()
-       : wxFrame( (wxFrame *)NULL, -1, _T("wxScrolledWindow sample"),
+       : wxFrame( (wxFrame *)NULL, wxID_ANY, _T("wxScrolledWindow sample"),
                   wxPoint(20,20), wxSize(470,500) )
 {
     wxMenu *file_menu = new wxMenu();
                   wxPoint(20,20), wxSize(470,500) )
 {
     wxMenu *file_menu = new wxMenu();
@@ -391,28 +400,34 @@ MyFrame::MyFrame()
 
     SetMenuBar( menu_bar );
 
 
     SetMenuBar( menu_bar );
 
+#if wxUSE_STATUSBAR
     CreateStatusBar(2);
     int widths[] = { -1, 100 };
     SetStatusWidths( 2, widths );
     CreateStatusBar(2);
     int widths[] = { -1, 100 };
     SetStatusWidths( 2, widths );
+#endif // wxUSE_STATUSBAR
 
 
-    m_scrolled = new MyScrolledWindow( this, -1, wxDefaultPosition, wxSize(100,100) );
+    m_scrolled = new MyScrolledWindow( this, wxID_ANY, wxDefaultPosition, wxSize(100,100) );
     m_scrolled->SetScrollbars( 10, 10, 50, 50 );
 
     m_scrolled->SetScrollbars( 10, 10, 50, 50 );
 
-    m_log = new wxTextCtrl( this, -1, _T("This is the log window.\n"), wxPoint(0,0), wxSize(100,100), wxTE_MULTILINE );
+#if wxUSE_LOG
+    m_log = new wxTextCtrl( this, wxID_ANY, _T("This is the log window.\n"), wxPoint(0,0), wxSize(100,100), wxTE_MULTILINE );
     wxLog *old_log = wxLog::SetActiveTarget( new wxLogTextCtrl( m_log ) );
     delete old_log;
     wxLog *old_log = wxLog::SetActiveTarget( new wxLogTextCtrl( m_log ) );
     delete old_log;
+#endif // wxUSE_LOG
 
     wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
     topsizer->Add( m_scrolled, 1, wxEXPAND );
 
     wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
     topsizer->Add( m_scrolled, 1, wxEXPAND );
+#if wxUSE_LOG
     topsizer->Add( m_log, 0, wxEXPAND );
     topsizer->Add( m_log, 0, wxEXPAND );
+#endif // wxUSE_LOG
 
 
-    SetAutoLayout( TRUE );
+    SetAutoLayout( true );
     SetSizer( topsizer );
 }
 
 void MyFrame::OnQuit( wxCommandEvent &WXUNUSED(event) )
 {
     SetSizer( topsizer );
 }
 
 void MyFrame::OnQuit( wxCommandEvent &WXUNUSED(event) )
 {
-  Close( TRUE );
+  Close( true );
 }
 
 void MyFrame::OnFullScreen( wxCommandEvent &WXUNUSED(event) )
 }
 
 void MyFrame::OnFullScreen( wxCommandEvent &WXUNUSED(event) )
@@ -434,8 +449,8 @@ void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) )
 bool MyApp::OnInit()
 {
     wxFrame *frame = new MyFrame();
 bool MyApp::OnInit()
 {
     wxFrame *frame = new MyFrame();
-    frame->Show( TRUE );
+    frame->Show( true );
 
 
-    return TRUE;
+    return true;
 }
 
 }