Vadim Zeitlin [Mon, 5 Oct 2009 22:57:24 +0000 (22:57 +0000)]
Return smaller images for wxART_MENU/BUTTON under OS X.
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.
Vadim Zeitlin [Mon, 5 Oct 2009 22:57:09 +0000 (22:57 +0000)]
Use wxRendererNative::DrawTitleBarBitmap() for info bar close button.
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.
Vadim Zeitlin [Mon, 5 Oct 2009 22:57:04 +0000 (22:57 +0000)]
Added wxRendererNative::DrawTitleBarBitmap().
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.
Vadim Zeitlin [Mon, 5 Oct 2009 22:56:58 +0000 (22:56 +0000)]
Replaced GraphicsHDC from src/msw/renderer.cpp with wxDC::GetTempHDC().
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.
Vadim Zeitlin [Mon, 5 Oct 2009 22:56:52 +0000 (22:56 +0000)]
Refactor wxRendererXP button drawing methods.
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.
Vadim Zeitlin [Mon, 5 Oct 2009 22:56:48 +0000 (22:56 +0000)]
Implement wxRenderer::DrawRadioBitmap() for classic MSW renderer.
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
Vadim Zeitlin [Mon, 5 Oct 2009 22:56:22 +0000 (22:56 +0000)]
Don't use themed border for the generic info bar.
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).
Vadim Zeitlin [Mon, 5 Oct 2009 22:56:12 +0000 (22:56 +0000)]
No real changes, just inline wxSuspendStyleEvents.
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.
Vadim Zeitlin [Mon, 5 Oct 2009 22:55:53 +0000 (22:55 +0000)]
Added wxART_CLOSE art id.
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.
Vadim Zeitlin [Mon, 5 Oct 2009 22:55:32 +0000 (22:55 +0000)]
Generate the button clicks in GTK version of wxInfoBar.
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.
Vadim Zeitlin [Mon, 5 Oct 2009 22:55:22 +0000 (22:55 +0000)]
Use event tables instead of Connect() in wxInfoBarGeneric.
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.
Vadim Zeitlin [Mon, 5 Oct 2009 22:55:17 +0000 (22:55 +0000)]
Add wxInfoBar::RemoveButton() method.
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.
Vadim Zeitlin [Mon, 5 Oct 2009 22:55:10 +0000 (22:55 +0000)]
Added native wxInfoBar implementation for wxGTK.
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.
Vadim Zeitlin [Mon, 5 Oct 2009 22:54:46 +0000 (22:54 +0000)]
Added GTKShouldConnectSizeRequest() to prevent size_request handling.
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.
Vadim Zeitlin [Thu, 1 Oct 2009 00:33:54 +0000 (00:33 +0000)]
Don't exit on errors in the pre-commit svn hook.
Errors in grep, when it fails to find any changed or updated files, also count
so the "set -e" line was causing the hook to reject any commits only deleting
files (without any error message).
Correct checks for conversion success in wxUniChar.
Correct the checks in wxUniChar::From/ToHi8bit() to check for conversion
success correctly as it always failed otherwise: wxMBConv::To/FromWChar()
conversion functions should return 2, not 1, when conversion of 2 characters
succeeded, even if one of them is a NUL.
Jaakko Salli [Sun, 27 Sep 2009 14:39:03 +0000 (14:39 +0000)]
Do not process editor control events when propgrid event is currently being processed. Doing otherwise could lead to a crash if application is doing something time-consuming (such as displaying a message box) in the event handler.
Jaakko Salli [Sun, 27 Sep 2009 14:35:02 +0000 (14:35 +0000)]
Store property name and value in wxPropertyGridEvent, keep track of live event instances, and clear property/grid information in them in wxPropertyGrid dtor. This allows application to relay events for later processing without fear of losing most relevant information within.
Use FWD version of DLL export macro in forward declaration.
Forward declarations must use WXDLLIMPEXP_FWD_XXX and not WXDLLIMPEXP_XXX to
avoid g++ warnings about "type attributes are honored only at type definition".
Fixed wxDataViewCtrl::Set{Foreground,Background}Colour() to work under GTK too.
Implement DoApplyWidgetStyle() in wxGTK version of wxDataViewCtrl to propagate
the main window style to the GtkTreeView which is what the user mostly sees.
Don't hard code white background colour in generic wxDataViewCtrl.
wxDataViewMainWindow::OnPaint() always used the white brush to erase the
control background which was wrong, change it to use the background colour of
the control.
Also add tests for setting wxDataViewCtrl foreground and background colours to
the dataview sample.
Move wxControl::GetCompositeControlsDefaultAttributes() from MSW to common.
This function is not MSW-specific and should be used in generic implementation
of controls such as wxListCtrl, wxTreeCtrl and wxDataViewCtrl. Even if it is
needed by MSW only now, move it to the common code to avoid #ifdefs in these
controls code.