]> git.saurik.com Git - wxWidgets.git/commitdiff
Make wxWrapSizer respect border around items
authorRobert Roebling <robert@roebling.de>
Thu, 8 Jan 2009 11:20:43 +0000 (11:20 +0000)
committerRobert Roebling <robert@roebling.de>
Thu, 8 Jan 2009 11:20:43 +0000 (11:20 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57902 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

samples/layout/layout.cpp
src/common/wrapsizer.cpp

index 3cd1269b08889fdabc377bd0ce4557b2948c7a19..08192688a84572d9d1b691f2c6e0777d07e4cee8 100644 (file)
@@ -73,7 +73,7 @@ END_EVENT_TABLE()
 // Define my frame constructor
 MyFrame::MyFrame()
        : wxFrame(NULL, wxID_ANY, _T("wxWidgets Layout Demo"),
 // Define my frame constructor
 MyFrame::MyFrame()
        : wxFrame(NULL, wxID_ANY, _T("wxWidgets Layout Demo"),
-                 wxDefaultPosition, wxDefaultSize,
+                 wxPoint(30,30), wxDefaultSize,
                  wxDEFAULT_FRAME_STYLE | wxNO_FULL_REPAINT_ON_RESIZE)
 {
   // Make a menubar
                  wxDEFAULT_FRAME_STYLE | wxNO_FULL_REPAINT_ON_RESIZE)
 {
   // Make a menubar
@@ -85,7 +85,7 @@ MyFrame::MyFrame()
   file_menu->Append(LAYOUT_TEST_GB_SIZER, _T("Test &gridbag sizer...\tF4"));
   file_menu->Append(LAYOUT_TEST_SET_MINIMAL, _T("Test Set&ItemMinSize...\tF5"));
   file_menu->Append(LAYOUT_TEST_NESTED, _T("Test nested sizer in a wxPanel...\tF6"));
   file_menu->Append(LAYOUT_TEST_GB_SIZER, _T("Test &gridbag sizer...\tF4"));
   file_menu->Append(LAYOUT_TEST_SET_MINIMAL, _T("Test Set&ItemMinSize...\tF5"));
   file_menu->Append(LAYOUT_TEST_NESTED, _T("Test nested sizer in a wxPanel...\tF6"));
-  file_menu->Append(LAYOUT_TEST_WRAP, _T("Test wrap sizers...\tF6"));
+  file_menu->Append(LAYOUT_TEST_WRAP, _T("Test wrap sizers...\tF7"));
 
   file_menu->AppendSeparator();
   file_menu->Append(LAYOUT_QUIT, _T("E&xit"), _T("Quit program"));
 
   file_menu->AppendSeparator();
   file_menu->Append(LAYOUT_QUIT, _T("E&xit"), _T("Quit program"));
@@ -118,6 +118,12 @@ MyFrame::MyFrame()
   topsizer->Add(
     new wxStaticText( p, wxID_ANY, _T("An explanation (wxALIGN_RIGHT).") ),
     wxSizerFlags().Align(wxALIGN_RIGHT).Border(wxALL & ~wxBOTTOM, 5));
   topsizer->Add(
     new wxStaticText( p, wxID_ANY, _T("An explanation (wxALIGN_RIGHT).") ),
     wxSizerFlags().Align(wxALIGN_RIGHT).Border(wxALL & ~wxBOTTOM, 5));
+  topsizer->Add(
+    new wxStaticText( p, wxID_ANY, _T("An explanation (wxALIGN_LEFT).") ),
+    wxSizerFlags().Align(wxALIGN_LEFT).Border(wxALL & ~wxBOTTOM, 5));
+  topsizer->Add(
+    new wxStaticText( p, wxID_ANY, _T("An explanation (wxALIGN_CENTRE_HORIZONTAL).") ),
+    wxSizerFlags().Align(wxALIGN_CENTRE_HORIZONTAL).Border(wxALL & ~wxBOTTOM, 5));
 
   // 2) top: create wxTextCtrl with minimum size (100x60)
   topsizer->Add(
 
   // 2) top: create wxTextCtrl with minimum size (100x60)
   topsizer->Add(
@@ -129,7 +135,7 @@ MyFrame::MyFrame()
     new wxStaticBox(p, wxID_ANY, _T("A wxStaticBoxSizer")), wxVERTICAL );
   statsizer->Add(
     new wxStaticText(p, wxID_ANY, _T("And some TEXT inside it")),
     new wxStaticBox(p, wxID_ANY, _T("A wxStaticBoxSizer")), wxVERTICAL );
   statsizer->Add(
     new wxStaticText(p, wxID_ANY, _T("And some TEXT inside it")),
-    wxSizerFlags().Center().Border(wxALL, 30));
+    wxSizerFlags().Border(wxALL, 30));
   topsizer->Add(
     statsizer,
     wxSizerFlags(1).Expand().Border(wxALL, 10));
   topsizer->Add(
     statsizer,
     wxSizerFlags(1).Expand().Border(wxALL, 10));
@@ -671,7 +677,7 @@ MyNestedSizerFrame::MyNestedSizerFrame(const wxString &title, int x, int y )
 
 
 MyWrapSizerFrame::MyWrapSizerFrame(const wxString &title, int x, int y )
 
 
 MyWrapSizerFrame::MyWrapSizerFrame(const wxString &title, int x, int y )
-    : wxFrame( NULL, wxID_ANY, title, wxPoint(x, y) )
+    : wxFrame( NULL, wxID_ANY, title, wxPoint(x, y), wxSize(200,-1) )
 {
     wxMenu *menu = new wxMenu;
 
 {
     wxMenu *menu = new wxMenu;
 
@@ -684,12 +690,25 @@ MyWrapSizerFrame::MyWrapSizerFrame(const wxString &title, int x, int y )
 
     wxBoxSizer *root = new wxBoxSizer( wxVERTICAL );
 
 
     wxBoxSizer *root = new wxBoxSizer( wxVERTICAL );
 
+#if 0
+    wxSizer *row = new wxWrapSizer;
+    int i;
+    for (i = 0; i < 4; i++)
+       row->Add( new wxButton( this, -1, "Hello" ), 0, wxALL, 10 );
+    root->Add( row, 0, wxGROW );
+    row = new wxWrapSizer;
+    for (i = 0; i < 4; i++)
+       row->Add( new wxButton( this, -1, "Hello" ) );
+    root->Add( row, 0, wxGROW );
+#else
     // A number of checkboxes inside a wrap sizer 
     wxSizer *ps_mid = new wxStaticBoxSizer( wxVERTICAL, this, "Wrapping check-boxes" );
     wxSizer *ps_mid_wrap = new wxWrapSizer(wxHORIZONTAL);
     ps_mid->Add( ps_mid_wrap, 100, wxEXPAND );
     for( int ix=0; ix<6; ix++ )
     // A number of checkboxes inside a wrap sizer 
     wxSizer *ps_mid = new wxStaticBoxSizer( wxVERTICAL, this, "Wrapping check-boxes" );
     wxSizer *ps_mid_wrap = new wxWrapSizer(wxHORIZONTAL);
     ps_mid->Add( ps_mid_wrap, 100, wxEXPAND );
     for( int ix=0; ix<6; ix++ )
-            ps_mid_wrap->Add( new wxCheckBox(this,wxID_ANY,wxString::Format("Option %d",ix+1)), 0, wxALIGN_CENTRE|wxALIGN_CENTER_VERTICAL, 5 );
+            ps_mid_wrap->Add( new wxCheckBox(this,wxID_ANY,wxString::Format("Option %d",ix+1)), 0, wxALIGN_CENTRE|wxALIGN_CENTER_VERTICAL|wxALL, 5 );
     root->Add( ps_mid, 0, wxEXPAND | wxALL, 5 );
 
     // A shaped item inside a box sizer
     root->Add( ps_mid, 0, wxEXPAND | wxALL, 5 );
 
     // A shaped item inside a box sizer
@@ -701,6 +720,7 @@ MyWrapSizerFrame::MyWrapSizerFrame(const wxString &title, int x, int y )
     ps_bottom_box->Add( new wxCheckBox(this,wxID_ANY,"A much longer option..."), 100, 0, 5 );
     
     root->Add( ps_bottom, 1, wxEXPAND | wxALL, 5 );
     ps_bottom_box->Add( new wxCheckBox(this,wxID_ANY,"A much longer option..."), 100, 0, 5 );
     
     root->Add( ps_bottom, 1, wxEXPAND | wxALL, 5 );
+#endif
         
     // Set sizer for window
     SetSizerAndFit( root );
         
     // Set sizer for window
     SetSizerAndFit( root );
index 9cb3285cb9747c2ca100d9fc7e9dbf4c84dbc567..adca07fc1816c882d4323e9ec235e36ae64b2581 100644 (file)
@@ -425,7 +425,7 @@ void wxWrapSizer::CalcMinFromMinor(int totMinor)
             wxSizerItem *item = node->GetData();
             if ( item->IsShown() )
             {
             wxSizerItem *item = node->GetData();
             if ( item->IsShown() )
             {
-                sz = item->GetMinSize();
+                sz = item->GetMinSizeWithBorder();
                 if ( line->m_width+SizeInMajorDir(sz)>lineSize )
                 {
                     line = new wxWrapLine;
                 if ( line->m_width+SizeInMajorDir(sz)>lineSize )
                 {
                     line = new wxWrapLine;
@@ -458,7 +458,7 @@ void wxWrapSizer::CalcMinFromMinor(int totMinor)
                 // Take what is not used on this line, see how much extension we get
                 // by adding first item on next line.
                 int size = lineSize-lines[ix]->m_width; // Left over at end of this line
                 // Take what is not used on this line, see how much extension we get
                 // by adding first item on next line.
                 int size = lineSize-lines[ix]->m_width; // Left over at end of this line
-                int extSize = GetSizeInMajorDir(lines[ix+1]->m_first->GetMinSize()) - size;
+                int extSize = GetSizeInMajorDir(lines[ix+1]->m_first->GetMinSizeWithBorder()) - size;
                 if ( (extSize>=tailSize && (extSize<bestExtSize || bestExtSize<tailSize)) ||
                     (extSize>bestExtSize && bestExtSize<tailSize) )
                     bestExtSize = extSize;
                 if ( (extSize>=tailSize && (extSize<bestExtSize || bestExtSize<tailSize)) ||
                     (extSize>bestExtSize && bestExtSize<tailSize) )
                     bestExtSize = extSize;
@@ -527,7 +527,7 @@ void wxWrapSizer::RecalcSizes()
         if ( !item->IsShown() )
             continue;
 
         if ( !item->IsShown() )
             continue;
 
-        wxSize minItemSize = item->GetMinSize();
+        wxSize minItemSize = item->GetMinSizeWithBorder();
         const int itemMajor = SizeInMajorDir(minItemSize);
         const int itemMinor = SizeInMinorDir(minItemSize);
         if ( itemMajor > 0 && itemMajor < m_minItemMajor )
         const int itemMajor = SizeInMajorDir(minItemSize);
         const int itemMinor = SizeInMinorDir(minItemSize);
         if ( itemMajor > 0 && itemMajor < m_minItemMajor )