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.
When converting a fixed number of characters we need to take any NULs inside
the buffer being converted into account for our return value -- but this
wasn't done and converting 2 characters 'x' and '\0' returned only 1, even if
the length 2 was explicitly specified.
All files in svn are supposed to use UTF-8 now so convert this one to UTF-8
too before committing more changes to it (which would be otherwise rejected by
pre-commit hook).
Refactor wxStyledTextCtrl to share common file save/load code.
Keep the code for saving and loading text contents from files in a single
place instead of doing it differently in wxTextCtrl and wxStyledTextCtrl.
This required adding Set/GetValue() methods to wxTextAreaBase just so that its
DoLoad/SaveFile() could use them, even if they are the same as wxTextEntryBase
methods and are overridden in wxTextCtrlBase to be implemented in terms of the
latter.
Notice that wxRichTextCtrl might need to be refactored to use this code too in
the future.
Also notice that this reverts the change of r62081 which replaced SetValue()
with ChangeValue() in DoLoadFile() as wxTextAreaBase only has SetValue() and
it's not worth adding ChangeValue() to it too just to preserve this recent
change in behaviour.