Doing this means that a window which was made initially large because no other
windows were present or shown will refuse to shrink to make space for them
later even if it doesn't need to be that large. The issue was masked under MSW
and GTK because the first size event under these ports is sent so early that
the top level parent window is not realized yet and has default size of 20*20
pixels meaning that its children will cache their initial (very small) size as
their best size, but it was very visible under OS X where the initial layout
is done using the real top level window size and broke wxInfoBar showing in
the dialogs sample, for example.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62306 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
As explained in the previous commit, while Cocoa support asynchronous
animation, wx API doesn't really, so block in Cocoa implementation of
ShowWithEffect() until the animation terminates for compatibility with
wxMSW and hence expectations of the existing code.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62305 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This version animates the window asynchronously and is being checked in just
to preserve it in svn if we later decide to return to this semantics. It will
be replaced by synchronous animation in the next commit.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62304 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This can be used to retrieve either an NSView for child windows or NSWindow
for non-owned ones without resorting to dynamic casts.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62303 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Finding the closest info bar to copy the background colour from only worked
for very simple layouts and failed for more complicated ones with nested
sizers so don't try to change the colour automatically, it's easy enough to do
it manually as shown in the updated dialogs sample.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62301 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Use a simple implementation working under all OS X versions, including 10.4
which doesn't have standard system images for the close button.
Added the images themselves under art/osx and png2c.py helper script to
convert them to a form used in C++ code.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62300 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Requesting images with client id of wxART_MENU/BUTTON used to return the large
32*32 icons because GetNativeSizeHint() wasn't implemented for these client
ids.
Moreover, under Mac some icons (notably message box ones) are created from the
corresponding icon bundle and the code in wxArtProvider::GetBitmap() didn't
resize them correctly in this case, fix this.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62299 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
If supported by the current platform, draw natively-looking close button using
multiple bitmaps for normal, pressed and current stats. Otherwise fall back on
the old wxArtProvider-based bitmap.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62296 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This is currently only implemented for wxMSW as there is no advantage to use a
generic implementation compared to using wxArtProvider directly under the
other ports. But for MSW this allows to have perfectly natively looking
titlebar-like buttons.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62295 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
wxDC::GetTempHDC() method provides a convenient and safe way to retrieve HDC
from a wxDC object, whether it is using GDI or GDI+. It is implemented using
(MSW-specific) virtual functions in wxDC and so doesn't need ugly hacks like
wxDynamicCast which were used in src/msw/renderer.cpp to achieve the same
effect.
Also, we now use GetTempHDC() consistently in all wxMSW rendering methods as
the old GraphicsHDC was only used in some of them meaning that many methods
didn't work at all with wxGCDC.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62294 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Avoid code duplication in wxRendererXP as well and fix a bug in
DrawRadioBitmap() which incorrectly drew it in hot state when it was disabled
but wxCONTROL_CURRENT was specified.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62293 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Clean up the functions added in r57313:
- Versions using wxUxThemeEngine should be in wxRendererXP
- Provide implementation using DrawFrameControl() in wxRendererMSW too
- Refactor the code to avoid triplication in wxRendererMSW
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62292 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
The implementation of DrawHeaderButton() in MyRenderer should restore the
text foreground colour and brush to avoid messing up drawing done after it.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62289 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Check that m_pen is valid before checking if it is transparent in
DoDrawRoundedRectangle() too (this was already done in DoDrawRectangle() in
r53150).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62288 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Since the switch to deriving from wxControl instead of wxWindow, the info bar
gained a themed border which doesn't look nice for it, especially when it is
shown progressively, as happens under Windows.
Restore the old behaviour by overriding GetDefaultBorder() to return
wxBORDER_NONE for it. This doesn't look perfect neither however, we may want
to draw a separator line between it and the parent window ourselves as even
wxBORDER_SIMPLE looks too heavy for it (and there should be definitely no
border on its sides as it always touches the parent window edges).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62287 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
wxSuspendStyleEvents helper class was used in one place only and the code is
more clear if its ctor and dtor are inlined directly into DoApplyWidgetStyle()
itself instead of being located far away from it.
Also, we only need to suppress the events for top level windows so don't
bother doing anything at all when changing styles for m_widget and not m_wxwindow.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62285 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Use default font for the text and left align it instead of centering.
Also use smaller bitmaps for the icon and the button.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62283 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This id corresponds to the close button bitmap. Currently only wxGTK returns a
natively-looking button from here, MSW and OS X versions will be added later.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62282 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This function translates between wxICON_XXX constants and wxART_YYY values. It
was extracted from the existing GetMessageBoxIcon().
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62281 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Assume that user-added buttons can be already used to close the message so
don't show the default close button if any were added.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62280 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Also add an example of handling info bar buttons events to the sample and
mention that this must be done using Connect() or by deriving from wxInfoBar
in the documentation.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62279 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This allows to handle events from the info bar buttons in the derived classes
using the event tables while if the base class used Connect(), the derived
classes static event handlers would be never executed.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62278 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Also change the GTK implementation to use a separate wxInfoBarGTKImpl to store
its data, this object won't be even allocated if a generic implementation is
used under GTK.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62277 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Straightforward implementation of wxInfoBar using GtkInfoBar widget available
in GTK+ 2.18.
Some side effects of this change:
- Rename wxInfoBar version in wx/generic/infobar.h to wxInfoBarGeneric and
define wxInfoBar in wx/infobar.h.
- Also change default value of flags argument to ShowMessage() to
wxICON_INFORMATION from wxICON_NONE as the default colour for wxICON_NONE
messages is surprisingly ugly in GTK native version.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62276 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Don't hard code the exception for GtkFileChooserButton in
wxWindow::PostCreation() in wxGTK, handling size_request signal also breaks
other controls (e.g. upcoming wxInfoBar native implementation). Instead,
define a virtual function which may be overridden to return false if
size_request shouldn't be connected.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62273 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
wxControl::PostCreation() already calls SetInitialSize() so there is no need
to call it explicitly in wxHyperlinkCtrl::Create().
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62272 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Add wxGTKImpl::ConvertMessageTypeFromWX() function to convert from wxICON_XXX
styles to GTK_MESSAGE_XXX values.
This will be reused by wxInfoBar in the next commits.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62271 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Calling Show/HideWithEffect() with this effect is the same as calling just the normal Show/Hide().
This is convenient as it allows to use the same API, whether with effects or without them.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62267 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Simplify the code by not transferring font and colours between canvas and
wxTheApp but use canvas font and colours directly instead.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62265 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775