Delete pending objects before destroying wxConfig during cleanup.

This allows these objects to save their state in wxConfig, as e.g. top level
windows using wxPersistenceManager do.

Closes #16397.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77652 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Implement wxListBox::EnsureVisible() for wxMSW.

Manually check whether the item is currently visible and scroll the listbox
just enough if it isn't.

Closes #3224.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77653 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Work around buggy printer drivers not returning correct DEVMODE size.

Apparently at least one printer driver doesn't report the memory needed by its
own DEVMODE struct correctly, resulting in a crash due to a buffer overflow
when printing using it.

Work around this by allocating slightly more memory than what we really need.

Closes #16274.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77654 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Make skipping event in wxEVT_PAINT handler work correctly in wxMSW.

This should result in the default handler still being called and painting the
window, but the latter didn't happen because we called ::EndPaint(), and so
validated the window and reset its update region, before passing WM_PAINT to
DefWindowProc() in this case.

Closes #16381.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77655 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Add a generic wxExpectAny helper class for GUI testing.

This is similar to the existing wxExpectModal<wxMessageDialog>, but can be
used to dismiss any dialog for which it's just enough to press some button,
not just wxMessageDialog.

It's convenient to use it as

	wxTEST_DIALOG(wxYield(), wxExpectAny(wxID_OK));

if some custom dialog which can be safely dismissed is expected.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77656 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Avoid generating wxEVT_MENU_OPEN and CLOSE for disabled menus in wxMSW.

Check if a top level menu is disabled and consume WM_[UN]INITMENUPOPUP that
Windows still generates for it when it's clicked for some reason.

Closes #2168.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77657 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Fix setting RTL direction for wxTextCtrl without wxTE_RICH in wxMSW.

Plain EDIT text controls don't support WS_EX_LAYOUTRTL, use WS_EX_RTLREADING
for them instead.

See #11583.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77658 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Simplify and make more flexible wxCompositeWindow::SetForAllParts().

Allow calling any function compatible with the argument type instead of
requiring "bool" return type and the exact match of the parameter type, which
forced us to define a separate DoSetForAllParts() helper.

See #11583.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77659 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Set layout direction for all wxCompositeWindow parts.

Forward SetLayoutDirection() to both the base class and all the children, just
as we already do for the other setters.

See #11583.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77660 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Fix crash in unit tests after TextEntryTestCase::Editable().

The class TextEventHandler added in r77057 (see #3901) setup an event handler
which wasn't disconnected when the handler was destroyed, which resulted in a
crash later as the window it was connected to continued to exist and generate
wxEVT_TEXT events.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77661 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Add wxUIActionSimulator::Select().

Add a helper to select an item in a wxChoice, wxComboBox, wxListBox or similar.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77662 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Don't skip wxHtmlContainerCell layout, even when the width is 0.

This ensures that wxHtmlContainerCell height is set to some reasonable value
instead of 0 and fixes infinite loop which occurred in some circumstances in
wxGTL when trying to allocate size for wxHtmlListBox as it oscillated between
having a vertical scrollbar with bigger width and not having it with smaller
width. The latter was wrong as decreasing the width to 0 didn't really obviate
the need for the vertical scrollbar and was just an artefact due to not
setting wxHtmlContainerCell height at all in this case.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77663 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Fix build with g++ 3.4 with -pedantic[-errors] option.

The use of variadic macros results in a warning/error if -pedantic[-errors]
is used when compiling C++98 code as they are only formally part of C99 (or
C++11). With g++ 4 and later, this can be avoided by using -Wno-variadic-macros
option, but it doesn't exist in g++ 3, so a nasty workaround in the header
itself is required: mark it as system header in order to fix compilation.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77664 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Remove PI definition from Direct2D wxGraphicsContext code.

The line defining PI didn't compile with VC10 because atan(1) is ambiguous
(argument could be float, double or long double). And it was not needed anyhow
as PI was not used anywhere (and if it were, we should be just using M_PI from
wx/math.h anyhow), so simply remove it.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77665 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Don't use enum name for qualifying enum element.

This is a non-standard MSVC extension and can't be done in standard C++.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77666 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Use ID2D1Bitmap instead of ID2D1Image.

ID2D1Image is not defined in v7.0A platform SDK used by VC10 and doesn't seem
to be needed here as we are only working with ID2D1Bitmaps (deriving from
ID2D1Image) anyhow.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77667 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Convert Direct2D source file to Unix EOL format.

No other changes.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77668 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Fix wxUSE_GRAPHICS_DIRECT2D definition in setup.h files.

Define it in wx/msw/setup_inc.h and not in wx/msw/setup0.h itself to ensure
that it survives the regeneration of this file using build/update-setup-h.

Also only set wxUSE_GRAPHICS_DIRECT2D to 1 for VC10+ and not VC9 as the latter
lacks Direct2D header in its default SDK version.

Finally also update comments to explain the various settings more clearly and
remove outdated information (wxGraphicsContext is not experimental any more).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77669 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775