Commit graph

174 commits

Author SHA1 Message Date
Vadim Zeitlin
46bfb43d21 Centralize index checking in wxSizer code
Add GetChildNode() helper and give more information in the assert
message generated there if the index is invalid, notably the value of
the index itself.

No real changes, this is just a small code simplification and quality of
debugging improvement.
2023-02-23 15:37:32 +00:00
Vadim Zeitlin
a101bfafaf Simplify wxStaticBoxSizer non-box children checks
After the grandparent commit we don't need to use 3 states for
m_hasNonBoxChildren any longer and it can become a simple "bool".

No real changes, this is just a simplification.
2023-02-20 17:20:45 +00:00
Vadim Zeitlin
da3a5a7bc8 Fix wxStaticBoxSizer with sibling windows in nested sizers too
This extends the workaround implemented in the previous commits to deal
with the case of sibling windows being added to wxStaticBoxSizer not
directly but as children of a nested sizer.

To handle this case, we need to remember if we have any nested sizers
and examine them recursively for non-box children. To avoid having to
make this, relatively expansive, check on each layout, remember its
result after the first layout. This is not infallible, e.g. it doesn't
handle the scenario in which a sibling window is added to a nested sizer
later, but this seems to be the best we can do without too much overhead
for the normal case and such cases should hopefully be very uncommon.

Also note that we now only give the debug message about the sizer item
having the wrong parent only once instead of doing it for each item, but
this might actually be better, as it's not clear that getting many
almost identical messages for the sizers containing many items is really
more useful.

This commit is best viewed using Git --color-moved option.
2023-02-18 15:26:45 +00:00
Vadim Zeitlin
d4cf530359 Check that all wxStaticBoxSizer items use the same parent
Using the box itself as the parent for some items and its parent window
as the parent for the other ones results in layout problems because the
correct offset is not used when positioning the items not using the box
as parent.

This has always been the case and it doesn't seem to be worth fixing, as
the scenario with the items not using the box as the parent is only
still supported for backwards compatibility anyhow, so just add an
assert checking for this and document this limitation.

Closes #23239.
2023-02-15 15:18:49 +00:00
Vadim Zeitlin
e1d18b3b6c Fix painting of wxStaticBox siblings inside it in wxMSW
Disable compositing when adding a window which is not a child of
wxStaticBox to wxStaticBoxSizer as sibling windows can't be painted
correctly inside one another when compositing is on.

Also add a debug warning when not using the static box as parent for the
windows inside it, to make it easier to notice the windows using a wrong
parent, and emphasize even more strongly that this is not the right way
to do it in the documentation.

Closes #23182.
2023-02-15 15:18:07 +00:00
Vadim Zeitlin
4f4c5fcfdf Use nullptr instead of NULL in the code and documentation
This is a combination of running clang-tidy with modernize-use-nullptr
check for some ports (GTK, X11, OSX) and manual changes to the ports for
which it couldn't be used easily (MSW, DFB) and also manually updating
the docs.

Also replace NULL with null or nullptr in the comments as this is more
consistent with the use of nullptr in the code and makes it simpler to
grep for the remaining occurrences of NULL itself.

And also use null in the assert messages.

Only a few occurrences of "NULL" are still left in non-C files, mostly
corresponding to unclear comments or string output which it might not be
safe to change.
2022-10-18 01:25:25 +02:00
Vadim Zeitlin
fb4f0b590c Remove wxGTK1 port and GPE support
Remove the port files and references to it from the common headers and
elsewhere.

Also remove GPE (GNOME PDA Environment) support as libgpewidget is
unmaintained since 2006 or so and has never been really used.

Use __WXGTK__ to test for any version of wxGTK now. Still define
__WXGTK20__ for compatibility, but always define it now and don't test
for it in the library code.
2022-10-16 22:01:02 +02:00
PB
88d526660f Replace wxOVERRIDE and wxNOEXCEPT with override and noexcept
Don't use deprecated macros in wxWidgets itself.
2022-10-15 18:10:45 +02:00
Artur Wieczorek
5e2da5a106 Get rid of v2.8 code 2022-08-02 08:26:29 +02:00
Vadim Zeitlin
2e289d7231 Add wxSizerFlags::DisableConsistencyChecks()
This allows to (hopefully temporarily) disable size flag check asserts.
2021-05-20 13:27:06 +01:00
Vadim Zeitlin
9130f8bfc6 Don't change orthogonal alignment in wxSizerFlags::CenterXXX()
It was unexpected that using wxSizerFlags().Right().CentreVertical()
didn't right-align the item because CentreVertical() reset the alignment
in the horizontal direction rather than just setting it in the vertical
one, so change this, document the new behaviour explicitly and add a new
unit test checking for it.

Closes #18989.
2021-01-25 12:58:04 +01:00
Ilya Sinitsyn
18d56818f5 Fix possible use of dangling window pointer in wxSizer::Insert()
Add the sizer item to the sizers items list only after calling of
wxWindowBase::SetContainingSizer() because it can throw (if it asserts
and the assert handler throws an exception, as happens in our own unit
tests) and then the sizer item would be kept in the sizers items list
but m_containingSizer wouldn't be set for the window.
2020-10-19 13:34:49 +02:00
Maarten Bent
918e102533 Support DPI change in sizers
Return the size of DoGetDefaultBorderInPx as float, so no precision is lost
when multiplying it for DoubleBorder and TripleBorder.

Closes #18551.
2019-11-01 21:07:15 +01:00
Maarten Bent
fa2242a0a6 Reset static sizes when DPI changes 2019-09-06 20:59:59 +02:00
Vadim Zeitlin
622deec262 Replace wxSizer::RecalcSizes() with RepositionChildren()
The new method takes minimal size just computed by RecalcSizes() as its
argument making it unnecessary to store it as a member variable in the derived
classes such as wx{Box,FlexGrid}Sizer.

The old method can still be overridden for compatibility and by the derived
class that don't need minimal size when updating children.
2018-12-20 23:36:51 +01:00
Vadim Zeitlin
e397d5d825 Propagate InformFirstDirection() calls to wxBoxSizer children
InformFirstDirection() is required to let wxWrapSizer calculate its best
height from its current width (or vice versa, but usually in this
sense), but it only worked if wxWrapSizer was an immediate child of
another size doing layout but not if wxWrapSizer was inside another
wxBoxSizer which was contained in a top-level sizer.

Explicitly forward calls to InformFirstDirection() to wxBoxSizer
children to fix this and make wxWrapSizers nested in wxBoxSizer work.

Note that there are still many problems in this code, including but not
limited to:

- Doing this forwarding for the sizer minor direction only.
- Not passing the correct value of "availableOtherDir".
- Still calling InformFirstDirection() from RecalcSizes(), when it's too
  late to change the min size returned by CalcMin().
- Inconsistency: wxGridSizer calls InformFirstDirection() from its
  CalcMin(), wxFlexGridSizer calls it from its RecalcSizes(),
  wxGridBagSizer doesn't call it at all.

All this size-in-first-direction logic really needs to be completely
reviewed, but for now at least make wxWrapSizer inside a wxBoxSizer work
as well, or as badly, as wxWrapSizer on its own.
2018-10-21 15:58:33 +02:00
Vadim Zeitlin
154ebfd1d9 Rename wxBoxSizer::m_minSize to avoid clash with the base class
wxSizer already has m_minSize field, use m_calculatedMinSize for the field of
the derived wxBoxSizer class to avoid confusion, just as wxFlexGridSizer
already did.

Also add a new unit test checking that GetMinSize() still works after this
change.
2015-10-11 01:00:38 +02:00
Tobias Taschner
8282c1be0f Remove Windows CE support
Windows CE doesn't seem to be supported by Microsoft any longer. Last CE
release was in early 2013 and the PocketPC and Smartphone targets supported by
wxWidgets are long gone.

The build files where already removed in an earlier cleanup this commit
removes all files, every #ifdef and all documentation regarding the Windows CE
support.

Closes https://github.com/wxWidgets/wxWidgets/pull/81
2015-09-23 00:52:30 +02:00
Dimitri Schoolwerth
8f8d58d193 Use wx-prefixed macros throughout the repository.
Change {DECLARE,IMPLEMENT}_*CLASS and {DECLARE,BEGIN,END}_EVENT_TABLE
occurrences to use the wx-prefixed version of the macros.
2015-04-23 22:00:35 +04:00
Vadim Zeitlin
af01ef1bb0 Make default wxSizer border DPI-aware.
Scale the (still hard-coded) border in pixels by the content scale factor for
the platforms where this needs to be done, i.e. not wxGTK nor wxOSX where the
underlying toolkit already does it.
2015-04-23 19:18:10 +02:00
Vadim Zeitlin
233a7fe77b Add wxSizerFlags::Cent{er,re}{Vertical,Horizontal}().
Provide CentreVertical() and CentreHorizontal() methods in wxSizerFlags which
are useful for 2D sizers (for 1D ones just Centre() can be used anyhow).
2015-04-08 23:35:19 +02:00
Vadim Zeitlin
78b98bf00c Validate wxBoxSizer flags instead of silently ignoring invalid combinations.
Detect using flags corresponding to the major sizer direction (which doesn't
make sense as only the proportion governs the behaviour in this direction) and
also combinations of alignment flags with wxEXPAND.
2015-04-08 23:35:19 +02:00
Paul Cornett
8b4ae731d3 use wxOVERRIDE
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76220 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-03-30 00:02:23 +00:00
Paul Cornett
967a94c91a remove WXWIN_COMPATIBILITY_2_6, add WXWIN_COMPATIBILITY_3_0
closes #15792

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@75532 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-01-04 20:07:33 +00:00
Vadim Zeitlin
3f66f6a5b3 Remove all lines containing cvs/svn "$Id$" keyword.
This keyword is not expanded by Git which means it's not replaced with the
correct revision value in the releases made using git-based scripts and it's
confusing to have lines with unexpanded "$Id$" in the released files. As
expanding them with Git is not that simple (it could be done with git archive
and export-subst attribute) and there are not many benefits in having them in
the first place, just remove all these lines.

If nothing else, this will make an eventual transition to Git simpler.

Closes #14487.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-07-26 16:02:46 +00:00
Václav Slavík
17473a770a Fix lots of warnings reported by Clang.
Mostly potentially lossy implicit conversions in headers (long->int). Also dangling else warnings. Struct/class mismatches.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74473 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-07-10 16:41:34 +00:00
Vadim Zeitlin
49cfad613b Fix display of empty wxStaticBoxSizers.
wxStaticBoxSizer should be considered shown if its static box is shown, even
if it has no elements (or all of them are hidden).

Closes #14698.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73729 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-03-27 23:10:15 +00:00
Vadim Zeitlin
e60165f72e Fix narrow/wide string concatenation in recently added wxSizerFlags assert.
This fixes MSVC build after r72434.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72436 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-09-08 21:48:57 +00:00
Vadim Zeitlin
71c3620229 Check validity of wxSizerFlags::Border() direction parameter.
Catch the misguided attempts to pass the size of the border as the first
parameter of the Border(direction, size) overload.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72434 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-09-08 15:46:50 +00:00
Vadim Zeitlin
93b87dd910 Respect item max sizes in wxBoxSizer.
Don't give more space than the max size, if set, to wxBoxSizer elements.

Closes #11497.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72345 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-08-15 23:34:27 +00:00
Vadim Zeitlin
465de0be70 No real changes, just add wxSizerItem::AddBorderToSize() helper.
Factor out this function from GetMinSizeWithBorder() as it will be used for
max size too in a next commit.

See #11497.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72344 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-08-15 23:34:22 +00:00
Vadim Zeitlin
1582a1db62 No changes, just fix some typos in comments.
Closes #14494.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72163 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-07-20 11:55:18 +00:00
Robin Dunn
5eb16fe200 Use default values for some parameters of wxSizerItem and wxGBSizerItem ctors
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69970 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-12-10 04:34:06 +00:00
Vadim Zeitlin
e4c903b2ea Fix wxWrapSizer minimal size calculation.
Add a unit test checking that wxWrapSizer::CalcMin() returns the expected
results.

Closes #12464.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66862 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-02-08 13:36:13 +00:00
Vadim Zeitlin
54d6106853 Rearrange functions order so that they are effectively inlined.
Define wxSizer::Insert(size_t, wxSizerItem *) before it is used so that it
could really be inlined.

This also fixes an IRIX mipsPro compiler warning.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63580 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-02-28 11:09:02 +00:00
Vadim Zeitlin
e556b61236 Add virtual wxSizer::DoInsert() to replace Insert().
This allows to avoid problems with hiding all but the overridden overloads of
Insert() in wxSizer-derived classes, see #11616, without having to explicitly
write any using statements.

Keep Insert(size_t, wxSizerItem) virtual to allow the existing code overriding
it to keep working.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63230 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-01-23 13:44:46 +00:00
Stefan Csomor
1e287c5df7 avoiding Insert shadowing superclass methods, closes #11616
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63179 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-01-18 09:45:32 +00:00
Robert Roebling
d7bb29260e Revert wxFlexGridSizer constr. change
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62659 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-15 09:40:30 +00:00
Robert Roebling
7aab7176f1 Restore ability to create wxFlexGridSizer with 2 params (number of columns and vertical gap)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62651 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-11-14 21:50:50 +00:00
Vadim Zeitlin
1a2df6a75b Change wxBoxSizer::AddSpacer() to only add space in sizer direction.
It used to add a spacer with the given size in both directions but this was
counter-intuitive and wasn't expected even by the original author of this code
so change it to behave more reasonably.

Closes #11197.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61939 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-09-15 17:05:32 +00:00
Vadim Zeitlin
0274a7973d Added wxGridSize::GetEffective{Cols,Rows}Count().
These functions return the number of columns or rows being currently used and
not 0, unlike the existing Get{Cols,Rows}(), if the corresponding number is
determined dynamically.

Closes #10254.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61750 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-08-23 22:24:48 +00:00
Vadim Zeitlin
0be3080aed Use "non-negative" in assert message instead of "positive".
Closes #11059.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61636 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-08-10 11:18:31 +00:00
Vadim Zeitlin
4a00e77ce6 Update wxFlexGridSizer ctors to match (new) wxGridSizer ones.
Confusing wxFlexGridSizer(int cols, int vgap = 0, int hgap = 0) was removed as
well as corresponding wxGridSizer ctor overload. New ctor overloads taking gap
as wxSize were added.

See #11040.

Closes #11091.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61635 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-08-10 11:18:23 +00:00
Vadim Zeitlin
7e6edd2772 Make wxGridSizer ctors more consistent.
The old and confusing wxGridSizer(int cols, int vgap = 0, int hgap = 0) is removed and replaced with wxGridSizer(int cols, int vgap, int hgap).

New ctor overloads using wxSize for the gap parameter added.

Closes #11040.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61575 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-08-02 00:48:58 +00:00
Vadim Zeitlin
4f671eebc9 Add checks of wxGridSizer::Set{Cols,Rows}() arguments.
Number of rows or columns must be positive (see #11040).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61574 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-08-02 00:48:49 +00:00
Vadim Zeitlin
9a83f86094 Globally replace _T() with wxT().
Standardize on using a single macro across all wxWidgets sources and solve the name clash with Sun CC standard headers (see #10660).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61508 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-23 20:30:22 +00:00
Francesco Montorsi
9b49405777 no real change; just add the standard separator where it's missing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@60263 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-04-21 00:05:14 +00:00
Václav Slavík
afc0db8ca0 detect and report errors in XRC specification of grid sizers
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59572 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-03-16 13:33:39 +00:00
Vadim Zeitlin
8b492f67ab detect adding too many items to a grid sizer sooner and don't crash if this happens
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59422 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-03-07 23:37:51 +00:00
Vadim Zeitlin
c0c133e13b add wx-prefixed and semicolon-requiring versions of DECLARE_NO_{COPY,ASSIGN}_CLASS macros
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58757 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-02-08 11:45:59 +00:00