Vadim Zeitlin [Fri, 31 May 2013 23:21:40 +0000 (23:21 +0000)]
Document that wxRadioBox::SetSelection() doesn't accept wxNOT_FOUND.
A radio box always has selection and it can't be unset (at least not under all
platforms), so document that the item passed to its SetSelection() must be
valid, unlike with SetSelection() methods in some other classes.
Vadim Zeitlin [Fri, 31 May 2013 23:21:36 +0000 (23:21 +0000)]
Change wxMSW wxTreeCtrl::DoFreeze() to not hide the tree any more.
Hiding the tree when it's frozen, as done in r72665, results in its own
problems, e.g. loss of focus. So don't do this but resize the control to a
very small size when freezing it and restore it to its old size afterwards.
Vadim Zeitlin [Fri, 31 May 2013 23:21:27 +0000 (23:21 +0000)]
Add wxFileDialog::GetCurrentlySelectedFilename().
Also send wxEVT_UPDATE_UI events for the extra controls in wxFileDialog.
The combination of these changes allows extra controls to update their state
depending on the current selection in the dialog. Show a simple example of
doing it in the dialogs sample.
Vadim Zeitlin [Fri, 31 May 2013 23:21:21 +0000 (23:21 +0000)]
Don't create multiple parent-less top level frames in layout sample.
This resulted in unexpected behaviour if the main frame was closed while the
other ones were still shown as they remained shown and had to be hunted and
closed one by one to make the application exit.
Fix this simply by creating all the other frames as children of the main one.
This also results in better UI when minimizing and restoring the main frame.
Also get rid of unused position parameters in child frame constructors and get
rid of the title parameter which is not really needed as it's always the same
too.
Vadim Zeitlin [Fri, 31 May 2013 23:21:16 +0000 (23:21 +0000)]
Fix wxStyledTextCtrl::SetInsertionPointEnd().
This relied on SetInsertionPoint(-1) working like in wxTextCtrl but it didn't.
Add an explicit check to it for consistency with the other classes and to make
SetInsertionPointEnd() work.
Vadim Zeitlin [Fri, 31 May 2013 23:21:11 +0000 (23:21 +0000)]
Improve horizontal scrolling in wxRibbonControl.
Scroll by entire "sections", i.e. panes of the ribbon, instead of scrolling by
a fixed number of pixels as it's much more useful and user-friendly to uncover
the next section entirely instead of asking the user to press on the arrow
several times before being able to use it.
Vadim Zeitlin [Fri, 31 May 2013 23:21:06 +0000 (23:21 +0000)]
Use deferred window positioning in wxWindow::Layout() in wxMSW.
Ensure that {Begin,End}RepositioningChildren() are called before/after
changing the positions of multiple children, whether we're using sizers or
constraints.
This fixes display corruption which could happen under Windows 7 and a child
resized first became bigger, pushing off the children resized later.
Vadim Zeitlin [Fri, 31 May 2013 23:20:58 +0000 (23:20 +0000)]
Make wxSharedPtr::Release() really MT-safe.
Using wxAtomicDec() is not enough, its result also must be checked as it will
return 0 only in one of the threads if multiple threads call it in parallel,
while the old test for m_count==0 could pass for more than one thread,
resulting in deleting the same pointer more than once.
Vadim Zeitlin [Fri, 31 May 2013 23:20:48 +0000 (23:20 +0000)]
Fix assert when adding columns to wxGrid using native header.
Change the order of updating m_colWidths array and the native header control
in wxGird::Redimension() to ensure that we can test whether the column is
shown (which results in accessing m_colWidths element at this column index)
from the wxGridHeaderCtrl::SetColumnCount().
Vadim Zeitlin [Sun, 26 May 2013 13:14:48 +0000 (13:14 +0000)]
Reset row and columns count in wxRichTextTable::ClearTable().
No real changes, just update the internal variables in ClearTable() to avoid
inconsistent internal state, even if this doesn't seem to result in any
problems for now.
Vadim Zeitlin [Sun, 26 May 2013 13:14:43 +0000 (13:14 +0000)]
Ensure that detached menus don't keep focus grab in wxGTK.
A widget being hidden must remove its focus grab with GTK+, otherwise GTK+
would continue sending all input messages to it but fail to process them
because the widget is not realized any more, resulting in a complete freeze of
the entire program.
Do it when detaching menus from menubar and menubar from the frame to fix just
such a problem in case SetMenuBar() was called while the previous menubar was
opened.
Vadim Zeitlin [Sun, 26 May 2013 13:14:38 +0000 (13:14 +0000)]
Fix printing multiple copies in wxMSW.
If wxPrinterDC was created by the native "Print" dialog for a printer that
supports printing multiple copies, we must not manually print multiple copies
ourselves as this results in too many copies being printed. However we still
need to loop explicitly for wxPrinterDC objects created manually or for the
printers without support for multiple copies (supposing they still exist).
Vadim Zeitlin [Wed, 22 May 2013 13:36:14 +0000 (13:36 +0000)]
Fix regression in wxGTK wxFilePickerCtrl due to wxFileDialog changes.
Revert the changes of r72979 and fix wxFileDialog::GetDirectory() return
value bug (see #14786) differently to avoid breaking wxFilePickerCtrl which
relies on getting wxEVT_BUTTON event when the associated dialog is dismissed.
Vadim Zeitlin [Wed, 22 May 2013 13:36:10 +0000 (13:36 +0000)]
Fix GTK+ errors during wxFilePickerCtrl destruction after recent changes.
We do need to destroy the dialog (see #15156), but we must not destroy its
GtkWidget as it is owned by GtkFileChooserButton itself, so amend the changes
of r74030 to only destroy the C++ object, not GTK+ one.
Vadim Zeitlin [Tue, 21 May 2013 23:47:20 +0000 (23:47 +0000)]
Use the best instead of current page size in OS X preferences dialog.
The page, which is typically just a wxPanel, is usually not created with the
correct size, so resize it to its best size before showing it in the
preferences dialog.
This makes OS X behaviour consistent with MSW and GTK and is generally more
useful.
Vadim Zeitlin [Tue, 21 May 2013 23:17:29 +0000 (23:17 +0000)]
Fit modeless preferences dialog to its contents too.
When a preferences dialog is shown non-modally, it should still fit to the
contents of its pages, so move the code added for the modal case in r73624
to the base wxGenericPreferencesEditorImplBase class.
Vadim Zeitlin [Mon, 20 May 2013 15:26:22 +0000 (15:26 +0000)]
Fix last count value after ReadAll() and WriteAll().
This corrects the bugs introduced when applying the patch adding these
functions in r74034: we can't simply use m_lastcount directly in them because
it's also modified by each call to Read() and Write(), so do use the temporary
variable.
Vadim Zeitlin [Mon, 20 May 2013 13:15:41 +0000 (13:15 +0000)]
Add a public wxModalDialogHook class for intercepting modal dialogs.
Extract wxModalDialogHook from wx/testing.h into its own wx/modalhook.h,
extend it to allow to be notified not only about showing modal dialogs but
also about dismissing them and document it and show its use in the dialogs
sample.
Also replace all the WX_TESTING_SHOW_MODAL_HOOK macros occurrences with
WX_HOOK_MODAL_DIALOG.
Vadim Zeitlin [Mon, 20 May 2013 13:15:26 +0000 (13:15 +0000)]
Fix return value of wxCountingOutputStream::LastWrite().
Don't reuse m_lastcount in wxCountingOutputStream to store the stream length,
this doesn't make any sense and results in LastWrite() returning completely
wrong results as it expects m_lastcount to be the number of bytes written by
the last operation.
Add m_lastPos member to store the stream length instead.
Also correct wxCountingOutputStream documentation.
Vadim Zeitlin [Mon, 20 May 2013 13:15:21 +0000 (13:15 +0000)]
Make code reading BMP files more robust.
Check that we did correctly read the requested amount of data instead of
blindly assuming that the needed (from the point of view of BMP format
specification) number of bytes are always available -- this doesn't work so
well with corrupted or truncated files.
Vadim Zeitlin [Sun, 19 May 2013 12:47:34 +0000 (12:47 +0000)]
Propagate wxEVT_COMMAND_TEXT_UPDATED renaming to the real stc.cpp.
wxEVT_COMMAND_TEXT_UPDATED was renamed to wxEVT_TEXT in the generated stc.cpp
but not in stc.cpp.in it was generated from. Do it there too to prevent the
correct version in stc.cpp from being overwritten during the next regeneration.
Vadim Zeitlin [Sun, 19 May 2013 12:38:22 +0000 (12:38 +0000)]
Trigger wxLog auto-creation when getting old logger in wxLogChain ctor.
This ensures that a program that uses wxLogChain or one of the classes
deriving from it, such as wxLogWindow, can do it directly without worrying
about the standard logging being completely suppressed if the default log
target hadn't been instantiated yet.
Vadim Zeitlin [Sun, 19 May 2013 12:38:12 +0000 (12:38 +0000)]
Add conversions to/from long long to wxUniChar.
Allow conversions to/from long long and unsigned long long values in wxUniChar
for consistency with the other integral types.
Also make the code shorter by using helper wxDO_FOR_INT_TYPES() and
wxDO_FOR_CHAR_INT_TYPES() macros to avoid duplicating the same code for all of
the integral types and having to handle wchar_t (and wxLongLong_t now)
specially because sometimes we may need to overload on it and sometimes not.
Finally, add more tests to check that all the wxUniChar methods compile and
work with all the different types.
Vadim Zeitlin [Sun, 19 May 2013 12:38:09 +0000 (12:38 +0000)]
Disable menu event test case in wxGTK buildbot slaves.
This test sporadically fails for unknown reason and I don't know what to do
about it, so disable it for now to let the test suite pass consistently and be
notifed about any new failures.
Vadim Zeitlin [Fri, 17 May 2013 11:53:46 +0000 (11:53 +0000)]
Try using wxString::ToCDouble() instead of ToDouble() in wxAny case.
Apparently enabling the call to ToDouble() in the test is enough to corrupt
the heap in wxOSX PPC build. No idea how can this be possible but try to check
if using ToCDouble() helps...
Vadim Zeitlin [Fri, 17 May 2013 11:53:43 +0000 (11:53 +0000)]
Make wxPreferencesEditor dtor virtual.
Mainly just to suppress g++ warnings about a class with virtual functions but
non-virtual dtor, this class isn't really supposed to be used polymorphically.
Vadim Zeitlin [Thu, 16 May 2013 14:43:13 +0000 (14:43 +0000)]
Initialize wxXmlResourceHandler members in its ctor.
Not sure if this results in any real problems but at the very least memory
checking tools give errors about reading uninitialized memory in
wxXmlResourceHandlerImpl::CreateResource() if we leave them uninitialized, so
do initialize all the pointers.
Vadim Zeitlin [Thu, 16 May 2013 14:43:06 +0000 (14:43 +0000)]
Add wxPreferencesEditor::ShownModally().
While this is not necessary to use wxPreferencesEditor in normal scenario, it
can be useful if the program needs to handle modal dialogs in some special way.
Vadim Zeitlin [Thu, 16 May 2013 14:43:02 +0000 (14:43 +0000)]
Make wxPreferencesEditor::Show() virtual.
This allows derived classes to override it to do something before/after
showing the dialog, which can be useful on the platforms where modal dialogs
are used for wxPreferencesEditor implementation.
Vadim Zeitlin [Thu, 16 May 2013 14:42:59 +0000 (14:42 +0000)]
Use "<Application> Preferences" as generic wxPreferencesEditor dialog title.
This is more appropriate than just "Preferences" under MSW and GTK which use
the generic wxPreferencesEditor, OS X has its own native version which
continues to correctly use "Preferences" for the title.
Vadim Zeitlin [Thu, 16 May 2013 14:42:56 +0000 (14:42 +0000)]
Allow to specify the title used by wxPreferencesEditor window.
Customize the title is useful for "Settings"-style windows which are used for
editing the properties of the given object, that should be identified in the
window title, as opposed to the global program preferences.
Vadim Zeitlin [Thu, 16 May 2013 14:42:52 +0000 (14:42 +0000)]
Open generic wxPreferencesEditor at last shown page.
This is very convenient under systems using a modal dialog for the preferences
editor implementation (such as MSW), as it allows to do several changes in the
same page without having to select it manually every time.
Václav Slavík [Thu, 16 May 2013 14:15:46 +0000 (14:15 +0000)]
Call wxThread::Create() from Run() automatically.
In the common case, when Run() is called immediately after Create() and
default stack size is used, it's unnecessarily verbose. Just create the
thread in Run() if it wasn't done explicitly yet.
Vadim Zeitlin [Wed, 15 May 2013 13:05:40 +0000 (13:05 +0000)]
Allow shrinking the array with wxArray::resize().
This method did nothing if its argument was less than the current array size,
as it was just a synonym for SetSize() which was documented to behave like
this, but this was inconsistent with std::vector and wxVector resize() which
does shrink the array, so change wxArray version to shrink it too.
Václav Slavík [Tue, 14 May 2013 16:58:20 +0000 (16:58 +0000)]
Move wxTransform2D methods' bodies to geometry.cpp.
They are all virtual and so cannot be inlined anyway and having them in
the header like this confuses the g++ linker into always pulling some of
the methods in merely because geometry.h was included.
Vadim Zeitlin [Sun, 12 May 2013 23:04:08 +0000 (23:04 +0000)]
Fix harmless Clang warning about unreachable code.
Unfortunately Clang intelligent flow analysis prevents us from using different
asserts for invalid parameter value and unhandled one, which could happen if
more elements are added to wxMouseButton enum in the future.