]> git.saurik.com Git - wxWidgets.git/blame - include/wx/sizer.h
replace wxHashTable with a type safe hash map of Window to wxWindow
[wxWidgets.git] / include / wx / sizer.h
CommitLineData
5279a24d
RR
1/////////////////////////////////////////////////////////////////////////////
2// Name: sizer.h
a4ab8ed5 3// Purpose: provide wxSizer class for layout
5279a24d 4// Author: Robert Roebling and Robin Dunn
566d84a7 5// Modified by: Ron Lee
0c0d686f 6// Created:
5279a24d 7// RCS-ID: $Id$
a4ab8ed5 8// Copyright: (c) Robin Dunn, Robert Roebling
65571936 9// Licence: wxWindows licence
5279a24d
RR
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef __WXSIZER_H__
13#define __WXSIZER_H__
14
12028905 15#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
5279a24d
RR
16#pragma interface "sizer.h"
17#endif
18
19#include "wx/defs.h"
20
21#include "wx/window.h"
22#include "wx/frame.h"
23#include "wx/dialog.h"
24
25//---------------------------------------------------------------------------
26// classes
27//---------------------------------------------------------------------------
28
446e5259
VS
29class WXDLLEXPORT wxSizerItem;
30class WXDLLEXPORT wxSizer;
31class WXDLLEXPORT wxBoxSizer;
5279a24d
RR
32
33//---------------------------------------------------------------------------
3417c2cd 34// wxSizerItem
5279a24d
RR
35//---------------------------------------------------------------------------
36
3417c2cd 37class WXDLLEXPORT wxSizerItem: public wxObject
5279a24d
RR
38{
39public:
df5ddbca 40 // spacer
12a3f227
RL
41 wxSizerItem( int width,
42 int height,
43 int proportion,
44 int flag,
45 int border,
46 wxObject* userData);
df5ddbca
RR
47
48 // window
12a3f227
RL
49 wxSizerItem( wxWindow *window,
50 int proportion,
51 int flag,
52 int border,
53 wxObject* userData );
df5ddbca
RR
54
55 // subsizer
12a3f227
RL
56 wxSizerItem( wxSizer *sizer,
57 int proportion,
58 int flag,
59 int border,
60 wxObject* userData );
df5ddbca 61
20b35a69
RD
62 wxSizerItem();
63 virtual ~wxSizerItem();
dc259b79 64
84f7908b 65 virtual void DeleteWindows();
df5ddbca 66
96fdbb60
RL
67 // Enable deleting the SizerItem without destroying the contained sizer.
68 void DetachSizer()
69 { m_sizer = 0; }
70
9cbee2ce 71 virtual wxSize GetSize() const;
df5ddbca
RR
72 virtual wxSize CalcMin();
73 virtual void SetDimension( wxPoint pos, wxSize size );
74
9cbee2ce 75 wxSize GetMinSize() const
df5ddbca 76 { return m_minSize; }
ba763a45
RD
77 wxSize GetMinSizeWithBorder() const;
78
1eba2193
RD
79 void SetMinSize(const wxSize& size)
80 {
ba763a45 81 if (IsWindow()) m_window->SetMinSize(size);
1eba2193
RD
82 m_minSize = size;
83 }
84 void SetMinSize( int x, int y )
85 { SetMinSize(wxSize(x, y)); }
12a3f227 86 void SetInitSize( int x, int y )
1eba2193 87 { SetMinSize(wxSize(x, y)); }
df5ddbca
RR
88
89 void SetRatio( int width, int height )
90 // if either of dimensions is zero, ratio is assumed to be 1
91 // to avoid "divide by zero" errors
92 { m_ratio = (width && height) ? ((float) width / (float) height) : 1; }
93 void SetRatio( wxSize size )
94 { m_ratio = (size.x && size.y) ? ((float) size.x / (float) size.y) : 1; }
2aab8f16 95 void SetRatio( float ratio )
df5ddbca 96 { m_ratio = ratio; }
2aab8f16 97 float GetRatio() const
df5ddbca
RR
98 { return m_ratio; }
99
9cbee2ce
RL
100 bool IsWindow() const;
101 bool IsSizer() const;
102 bool IsSpacer() const;
2aab8f16 103
12a3f227
RL
104 // Deprecated in 2.6, use {G,S}etProportion instead.
105 wxDEPRECATED( void SetOption( int option ) );
106 wxDEPRECATED( int GetOption() const );
107
108 void SetProportion( int proportion )
109 { m_proportion = proportion; }
110 int GetProportion() const
111 { return m_proportion; }
df5ddbca
RR
112 void SetFlag( int flag )
113 { m_flag = flag; }
12a3f227
RL
114 int GetFlag() const
115 { return m_flag; }
df5ddbca
RR
116 void SetBorder( int border )
117 { m_border = border; }
12a3f227
RL
118 int GetBorder() const
119 { return m_border; }
df5ddbca
RR
120
121 wxWindow *GetWindow() const
122 { return m_window; }
123 void SetWindow( wxWindow *window )
1621c234 124 { m_window = window; m_minSize = window->GetSize(); }
df5ddbca
RR
125 wxSizer *GetSizer() const
126 { return m_sizer; }
127 void SetSizer( wxSizer *sizer )
128 { m_sizer = sizer; }
12a3f227
RL
129 const wxSize &GetSpacer() const
130 { return m_size; }
131 void SetSpacer( const wxSize &size )
132 { m_size = size; m_minSize = size; }
133
134 void Show ( bool show );
2b5f62a0
VZ
135 bool IsShown() const
136 { return m_show; }
12a3f227 137
9cbee2ce 138 wxObject* GetUserData() const
df5ddbca 139 { return m_userData; }
9cbee2ce 140 wxPoint GetPosition() const
df5ddbca 141 { return m_pos; }
0c0d686f 142
c62ac5b6 143protected:
df5ddbca
RR
144 wxWindow *m_window;
145 wxSizer *m_sizer;
146 wxSize m_size;
147 wxPoint m_pos;
148 wxSize m_minSize;
12a3f227 149 int m_proportion;
df5ddbca
RR
150 int m_border;
151 int m_flag;
2b5f62a0 152
e0d8fb45 153 // If true, then this item is considered in the layout
dc259b79 154 // calculation. Otherwise, it is skipped over.
2b5f62a0 155 bool m_show;
12a3f227
RL
156
157 // Aspect ratio can always be calculated from m_size,
158 // but this would cause precision loss when the window
159 // is shrunk. It is safer to preserve the initial value.
df5ddbca 160 float m_ratio;
2b5f62a0 161
df5ddbca 162 wxObject *m_userData;
2aab8f16 163
9cbee2ce 164private:
4393b50c 165 DECLARE_CLASS(wxSizerItem)
22f3361e 166 DECLARE_NO_COPY_CLASS(wxSizerItem)
c62ac5b6 167};
5279a24d 168
12a3f227
RL
169WX_DECLARE_EXPORTED_LIST( wxSizerItem, wxSizerItemList );
170
171
5279a24d 172//---------------------------------------------------------------------------
3417c2cd 173// wxSizer
5279a24d
RR
174//---------------------------------------------------------------------------
175
2aab8f16 176class WXDLLEXPORT wxSizer: public wxObject, public wxClientDataContainer
5279a24d
RR
177{
178public:
f6bcfd97
BP
179 wxSizer();
180 ~wxSizer();
181
182 /* These should be called Append() really. */
12a3f227
RL
183 virtual void Add( wxWindow *window,
184 int proportion = 0,
185 int flag = 0,
186 int border = 0,
187 wxObject* userData = NULL );
188 virtual void Add( wxSizer *sizer,
189 int proportion = 0,
190 int flag = 0,
191 int border = 0,
192 wxObject* userData = NULL );
193 virtual void Add( int width,
194 int height,
195 int proportion = 0,
196 int flag = 0,
197 int border = 0,
198 wxObject* userData = NULL );
199 virtual void Add( wxSizerItem *item );
200
749bb9f1
DS
201 virtual void AddSpacer(int size);
202 virtual void AddStretchSpacer(int prop = 1);
203
12a3f227
RL
204 virtual void Insert( size_t index,
205 wxWindow *window,
206 int proportion = 0,
207 int flag = 0,
208 int border = 0,
209 wxObject* userData = NULL );
210 virtual void Insert( size_t index,
211 wxSizer *sizer,
212 int proportion = 0,
213 int flag = 0,
214 int border = 0,
215 wxObject* userData = NULL );
216 virtual void Insert( size_t index,
217 int width,
218 int height,
219 int proportion = 0,
220 int flag = 0,
221 int border = 0,
222 wxObject* userData = NULL );
223 virtual void Insert( size_t index,
224 wxSizerItem *item );
225
749bb9f1
DS
226 virtual void InsertSpacer(size_t index, int size);
227 virtual void InsertStretchSpacer(size_t index, int prop = 1);
228
12a3f227
RL
229 virtual void Prepend( wxWindow *window,
230 int proportion = 0,
231 int flag = 0,
232 int border = 0,
233 wxObject* userData = NULL );
234 virtual void Prepend( wxSizer *sizer,
235 int proportion = 0,
236 int flag = 0,
237 int border = 0,
238 wxObject* userData = NULL );
239 virtual void Prepend( int width,
240 int height,
241 int proportion = 0,
242 int flag = 0,
243 int border = 0,
244 wxObject* userData = NULL );
245 virtual void Prepend( wxSizerItem *item );
246
749bb9f1
DS
247 virtual void PrependSpacer(int size);
248 virtual void PrependStretchSpacer(int prop = 1);
249
12a3f227
RL
250 // Deprecated in 2.6 since historically it does not delete the window,
251 // use Detach instead.
252 wxDEPRECATED( virtual bool Remove( wxWindow *window ) );
f6bcfd97 253 virtual bool Remove( wxSizer *sizer );
e0d8fb45 254 virtual bool Remove( int index );
00976fe5 255
12a3f227 256 virtual bool Detach( wxWindow *window );
00976fe5 257 virtual bool Detach( wxSizer *sizer );
e0d8fb45 258 virtual bool Detach( int index );
00976fe5 259
e0d8fb45 260 virtual void Clear( bool delete_windows = false );
84f7908b 261 virtual void DeleteWindows();
f6bcfd97
BP
262
263 void SetMinSize( int width, int height )
264 { DoSetMinSize( width, height ); }
265 void SetMinSize( wxSize size )
266 { DoSetMinSize( size.x, size.y ); }
1e6feb95 267
f6bcfd97
BP
268 /* Searches recursively */
269 bool SetItemMinSize( wxWindow *window, int width, int height )
270 { return DoSetItemMinSize( window, width, height ); }
271 bool SetItemMinSize( wxWindow *window, wxSize size )
272 { return DoSetItemMinSize( window, size.x, size.y ); }
1e6feb95 273
f6bcfd97
BP
274 /* Searches recursively */
275 bool SetItemMinSize( wxSizer *sizer, int width, int height )
276 { return DoSetItemMinSize( sizer, width, height ); }
277 bool SetItemMinSize( wxSizer *sizer, wxSize size )
278 { return DoSetItemMinSize( sizer, size.x, size.y ); }
1e6feb95 279
12a3f227
RL
280 bool SetItemMinSize( size_t index, int width, int height )
281 { return DoSetItemMinSize( index, width, height ); }
282 bool SetItemMinSize( size_t index, wxSize size )
283 { return DoSetItemMinSize( index, size.x, size.y ); }
1e6feb95 284
9cbee2ce 285 wxSize GetSize() const
f6bcfd97 286 { return m_size; }
9cbee2ce 287 wxPoint GetPosition() const
f6bcfd97 288 { return m_position; }
1e6feb95 289
f6bcfd97
BP
290 /* Calculate the minimal size or return m_minSize if bigger. */
291 wxSize GetMinSize();
292
293 virtual void RecalcSizes() = 0;
294 virtual wxSize CalcMin() = 0;
295
296 virtual void Layout();
297
e5251d4f 298 wxSize Fit( wxWindow *window );
566d84a7 299 void FitInside( wxWindow *window );
f6bcfd97 300 void SetSizeHints( wxWindow *window );
566d84a7 301 void SetVirtualSizeHints( wxWindow *window );
f6bcfd97 302
12a3f227 303 wxSizerItemList& GetChildren()
f6bcfd97
BP
304 { return m_children; }
305
306 void SetDimension( int x, int y, int width, int height );
0c0d686f 307
12a3f227 308 // Manage whether individual scene items are considered
2b5f62a0 309 // in the layout calculations or not.
e0d8fb45
VZ
310 void Show( wxWindow *window, bool show = true );
311 void Show( wxSizer *sizer, bool show = true );
312 void Show( size_t index, bool show = true );
12a3f227 313
2b5f62a0 314 void Hide( wxSizer *sizer )
e0d8fb45 315 { Show( sizer, false ); }
12a3f227 316 void Hide( wxWindow *window )
e0d8fb45 317 { Show( window, false ); }
12a3f227 318 void Hide( size_t index )
e0d8fb45 319 { Show( index, false ); }
2b5f62a0 320
9cbee2ce
RL
321 bool IsShown( wxWindow *window ) const;
322 bool IsShown( wxSizer *sizer ) const;
323 bool IsShown( size_t index ) const;
dc259b79 324
2b5f62a0 325 // Recursively call wxWindow::Show () on all sizer items.
eb2a7883 326 virtual void ShowItems (bool show);
2b5f62a0 327
f6bcfd97 328protected:
12a3f227
RL
329 wxSize m_size;
330 wxSize m_minSize;
331 wxPoint m_position;
332 wxSizerItemList m_children;
f6bcfd97 333
9cbee2ce 334 wxSize GetMaxWindowSize( wxWindow *window ) const;
f6bcfd97 335 wxSize GetMinWindowSize( wxWindow *window );
9cbee2ce 336 wxSize GetMaxClientSize( wxWindow *window ) const;
566d84a7 337 wxSize GetMinClientSize( wxWindow *window );
65ba4113 338 wxSize FitSize( wxWindow *window );
566d84a7 339 wxSize VirtualFitSize( wxWindow *window );
65ba4113 340
f6bcfd97
BP
341 virtual void DoSetMinSize( int width, int height );
342 virtual bool DoSetItemMinSize( wxWindow *window, int width, int height );
343 virtual bool DoSetItemMinSize( wxSizer *sizer, int width, int height );
12a3f227 344 virtual bool DoSetItemMinSize( size_t index, int width, int height );
1e6feb95 345
9cbee2ce 346private:
4393b50c 347 DECLARE_CLASS(wxSizer)
f6bcfd97 348};
c62ac5b6 349
f6bcfd97
BP
350//---------------------------------------------------------------------------
351// wxGridSizer
352//---------------------------------------------------------------------------
0c0d686f 353
f6bcfd97
BP
354class WXDLLEXPORT wxGridSizer: public wxSizer
355{
356public:
357 wxGridSizer( int rows, int cols, int vgap, int hgap );
358 wxGridSizer( int cols, int vgap = 0, int hgap = 0 );
1e6feb95 359
5d76f462
VZ
360 virtual void RecalcSizes();
361 virtual wxSize CalcMin();
f6bcfd97
BP
362
363 void SetCols( int cols ) { m_cols = cols; }
364 void SetRows( int rows ) { m_rows = rows; }
365 void SetVGap( int gap ) { m_vgap = gap; }
366 void SetHGap( int gap ) { m_hgap = gap; }
9cbee2ce
RL
367 int GetCols() const { return m_cols; }
368 int GetRows() const { return m_rows; }
369 int GetVGap() const { return m_vgap; }
370 int GetHGap() const { return m_hgap; }
1e6feb95 371
f6bcfd97
BP
372protected:
373 int m_rows;
374 int m_cols;
375 int m_vgap;
376 int m_hgap;
1e6feb95 377
0ca5105b
VZ
378 // return the number of total items and the number of columns and rows
379 int CalcRowsCols(int& rows, int& cols) const;
380
f6bcfd97 381 void SetItemBounds( wxSizerItem *item, int x, int y, int w, int h );
1e6feb95 382
9cbee2ce 383private:
4393b50c 384 DECLARE_CLASS(wxGridSizer)
f6bcfd97 385};
5279a24d 386
f6bcfd97
BP
387//---------------------------------------------------------------------------
388// wxFlexGridSizer
389//---------------------------------------------------------------------------
0c0d686f 390
5d76f462
VZ
391// the bevaiour for resizing wxFlexGridSizer cells in the "non-flexible"
392// direction
393enum wxFlexSizerGrowMode
394{
395 // don't resize the cells in non-flexible direction at all
396 wxFLEX_GROWMODE_NONE,
397
398 // uniformly resize only the specified ones (default)
399 wxFLEX_GROWMODE_SPECIFIED,
400
401 // uniformly resize all cells
402 wxFLEX_GROWMODE_ALL
403};
404
f6bcfd97
BP
405class WXDLLEXPORT wxFlexGridSizer: public wxGridSizer
406{
407public:
5d76f462 408 // ctors/dtor
f6bcfd97
BP
409 wxFlexGridSizer( int rows, int cols, int vgap, int hgap );
410 wxFlexGridSizer( int cols, int vgap = 0, int hgap = 0 );
5d76f462 411 virtual ~wxFlexGridSizer();
1e6feb95 412
1e6feb95 413
5d76f462
VZ
414 // set the rows/columns which will grow (the others will remain of the
415 // constant initial size)
e8800dcf 416 void AddGrowableRow( size_t idx, int proportion = 0 );
f6bcfd97 417 void RemoveGrowableRow( size_t idx );
e8800dcf 418 void AddGrowableCol( size_t idx, int proportion = 0 );
f6bcfd97 419 void RemoveGrowableCol( size_t idx );
0c0d686f 420
1e6feb95 421
5d76f462
VZ
422 // the sizer cells may grow in both directions, not grow at all or only
423 // grow in one direction but not the other
424
425 // the direction may be wxVERTICAL, wxHORIZONTAL or wxBOTH (default)
426 void SetFlexibleDirection(int direction) { m_flexDirection = direction; }
427 int GetFlexibleDirection() const { return m_flexDirection; }
428
429 // note that the grow mode only applies to the direction which is not
430 // flexible
431 void SetNonFlexibleGrowMode(wxFlexSizerGrowMode mode) { m_growMode = mode; }
432 wxFlexSizerGrowMode GetNonFlexibleGrowMode() const { return m_growMode; }
433
fc1fcd0e
RD
434 // Read-only access to the row heights and col widths arrays
435 const wxArrayInt& GetRowHeights() const { return m_rowHeights; }
436 const wxArrayInt& GetColWidths() const { return m_colWidths; }
437
5d76f462
VZ
438 // implementation
439 virtual void RecalcSizes();
440 virtual wxSize CalcMin();
441
442protected:
20b35a69
RD
443 void AdjustForFlexDirection();
444 void AdjustForGrowables(const wxSize& sz, const wxSize& minsz,
445 int nrows, int ncols);
446
5d76f462
VZ
447 // the heights/widths of all rows/columns
448 wxArrayInt m_rowHeights,
449 m_colWidths;
450
451 // indices of the growable columns and rows
452 wxArrayInt m_growableRows,
453 m_growableCols;
454
e8800dcf
VZ
455 // proportion values of the corresponding growable rows and columns
456 wxArrayInt m_growableRowsProportions,
457 m_growableColsProportions;
458
5d76f462
VZ
459 // parameters describing whether the growable cells should be resized in
460 // both directions or only one
461 int m_flexDirection;
462 wxFlexSizerGrowMode m_growMode;
1e6feb95 463
ba763a45
RD
464 // saves CalcMin result to optimize RecalcSizes
465 wxSize m_calculatedMinSize;
466
9cbee2ce 467private:
4393b50c 468 DECLARE_CLASS(wxFlexGridSizer)
22f3361e 469 DECLARE_NO_COPY_CLASS(wxFlexGridSizer)
c62ac5b6
RR
470};
471
472//---------------------------------------------------------------------------
92afa2b1 473// wxBoxSizer
c62ac5b6
RR
474//---------------------------------------------------------------------------
475
92afa2b1 476class WXDLLEXPORT wxBoxSizer: public wxSizer
61d514bb
RR
477{
478public:
f6bcfd97 479 wxBoxSizer( int orient );
0c0d686f 480
f6bcfd97
BP
481 void RecalcSizes();
482 wxSize CalcMin();
0c0d686f 483
9cbee2ce 484 int GetOrientation() const
f6bcfd97 485 { return m_orient; }
0c0d686f 486
b657b4c9
JS
487 void SetOrientation(int orient)
488 { m_orient = orient; }
489
61d514bb
RR
490protected:
491 int m_orient;
492 int m_stretchable;
493 int m_minWidth;
494 int m_minHeight;
495 int m_fixedWidth;
496 int m_fixedHeight;
1e6feb95 497
9cbee2ce 498private:
4393b50c 499 DECLARE_CLASS(wxBoxSizer)
61d514bb 500};
0c0d686f 501
27ea1d8a
RR
502//---------------------------------------------------------------------------
503// wxStaticBoxSizer
504//---------------------------------------------------------------------------
505
1e6feb95
VZ
506#if wxUSE_STATBOX
507
508class WXDLLEXPORT wxStaticBox;
509
27ea1d8a
RR
510class WXDLLEXPORT wxStaticBoxSizer: public wxBoxSizer
511{
512public:
f6bcfd97 513 wxStaticBoxSizer( wxStaticBox *box, int orient );
0c0d686f 514
f6bcfd97
BP
515 void RecalcSizes();
516 wxSize CalcMin();
0c0d686f 517
9cbee2ce 518 wxStaticBox *GetStaticBox() const
f6bcfd97 519 { return m_staticBox; }
0c0d686f 520
eb2a7883
VZ
521 // override to hide/show the static box as well
522 virtual void ShowItems (bool show);
523
27ea1d8a 524protected:
f6bcfd97 525 wxStaticBox *m_staticBox;
1e6feb95 526
9cbee2ce 527private:
4393b50c 528 DECLARE_CLASS(wxStaticBoxSizer)
22f3361e 529 DECLARE_NO_COPY_CLASS(wxStaticBoxSizer)
27ea1d8a
RR
530};
531
1e6feb95
VZ
532#endif // wxUSE_STATBOX
533
adbf2d73
VS
534
535#if WXWIN_COMPATIBILITY_2_4
536// NB: wxBookCtrlSizer and wxNotebookSizer are deprecated, they
537// don't do anything. wxBookCtrl::DoGetBestSize does the job now.
538
ade4eb65
VZ
539// ----------------------------------------------------------------------------
540// wxBookCtrlSizer
541// ----------------------------------------------------------------------------
83edc0a5 542
ade4eb65 543#if wxUSE_BOOKCTRL
65e4f9b9 544
ade4eb65
VZ
545// this sizer works with wxNotebook/wxListbook/... and sizes the control to
546// fit its pages
547class WXDLLEXPORT wxBookCtrl;
1e6feb95 548
ade4eb65 549class WXDLLEXPORT wxBookCtrlSizer : public wxSizer
83edc0a5 550{
83edc0a5 551public:
adbf2d73 552 wxDEPRECATED( wxBookCtrlSizer(wxBookCtrl *bookctrl) );
83edc0a5 553
adbf2d73
VS
554 wxBookCtrl *GetControl() const { return m_bookctrl; }
555
ade4eb65
VZ
556 virtual void RecalcSizes();
557 virtual wxSize CalcMin();
83edc0a5 558
83edc0a5 559protected:
adbf2d73 560 // this protected ctor lets us mark the real one above as deprecated
749bb9f1 561 // and still have warning-free build of the library itself:
adbf2d73
VS
562 wxBookCtrlSizer() {}
563
ade4eb65
VZ
564 wxBookCtrl *m_bookctrl;
565
566private:
567 DECLARE_CLASS(wxBookCtrlSizer)
568 DECLARE_NO_COPY_CLASS(wxBookCtrlSizer)
569};
570
571
572#if wxUSE_NOTEBOOK
573
574// before wxBookCtrl we only had wxNotebookSizer, keep it for backwards
575// compatibility
576class WXDLLEXPORT wxNotebook;
577
578class WXDLLEXPORT wxNotebookSizer : public wxBookCtrlSizer
579{
580public:
adbf2d73 581 wxDEPRECATED( wxNotebookSizer(wxNotebook *nb) );
ade4eb65
VZ
582
583 wxNotebook *GetNotebook() const { return (wxNotebook *)m_bookctrl; }
1e6feb95 584
9cbee2ce 585private:
4393b50c 586 DECLARE_CLASS(wxNotebookSizer)
22f3361e 587 DECLARE_NO_COPY_CLASS(wxNotebookSizer)
83edc0a5
RR
588};
589
1e6feb95 590#endif // wxUSE_NOTEBOOK
65e4f9b9 591
ade4eb65
VZ
592#endif // wxUSE_BOOKCTRL
593
adbf2d73
VS
594#endif // WXWIN_COMPATIBILITY_2_4
595
596
ade4eb65 597#endif // __WXSIZER_H__
65e4f9b9 598