Fix wxKill(wxSIGNONE) always returning true for child processes in wxMSW.
The fact that a handle to a process can be opened doesn't mean that the
process is still running. In fact, for a child process that we store a handle
for ourselves we will always be able to open (another copy of the) handle even
if it already terminated.
Check for the process termination using WaitForSingleObject() instead in both
normal and wxSIGNONE cases.
Also simplify the code by not using GetExitCodeProcess() at all as we don't
need the process exit code.
Remember last values used in exec sample "Kill" menu item dialogs.
Remember the PID entered in the dialog and also remember the last used signal
number. This makes these dialogs slightly less painful to use when testing
even though ideally we'd have a single dialog for choosing both values instead
of two consecutive modal dialogs.
Don't filter out Cairo libraries from GTK libraries list in configure.
This undoes the hack of r35357 which surreptitiously removed all Cairo
libraries from the GTK libraries list. This shouldn't be necessary any more as
we use Cairo calls in our own code and so can't run without it anyhow and in
fact is even actively harmful as it results in linking errors under Fedora 13
(which seems to use a slightly different linker?).
Use the same logic for closing dialogs as for handling Escape key.
Pressing "Esc" key closed the dialog with only wxID_OK button (but no
wxID_CANCEL one) by default but pressing the "close window" button only closed
it if wxID_CANCEL was present.
Fix this by using the same code in OnCloseWindow() as in OnCharHook(), after
extracting it into the new SendCloseButtonClickEvent() method.
Remove the unused "monolithic" MSW wxMediaCtrl file.
The contents of this file was split over src/msw/mediactrl_{am,qt,wmp10}.cpp a
long time ago and this file is unused and not compiled into the library so
having it in the repository is useless and confusing -- remove it.
Force linking of all wxMSW wxMediaCtrl backends in mediactrl sample.
Force the linker to include all the backends in the sample executable instead
of discarding them because they are not used directly to allow testing all of
them in the sample.
Remove debugging wxLogMessage from wxMediaCtrl::Create().
This was added apparently by mistake in r45478 and resulted in showing the
backend being used by the control in a message box whenever it was created
ever since.
Don't exclude "contrib" from wxMSW setup.exe generation.
This was presumably needed to exclude the top level contrib directory but also
seems to apply to src/tiff/contrib and excluding this directory breaks
configuration of libtiff as it looks for src/tiff/contrib/Makefile.in.
As we don't even have top level contrib any more, simply don't exclude it any
longer.
Make Xcode identifiers in generated project files be the same after each run.
From the AppleScript that composes the Xcode projects call a Python script that bases the identifiers on an associated name instead of being random each run like Xcode does. After the Python script reopen the project again in Xcode to have the identifiers sorted (Xcode wants them to be), resulting in the project.pbxproj file being completely different inside but in the IDE the order of files still will be the same.
Use correct Unicode define for wxScintilla compilation.
Compilation of wxScintilla with Borland failed because -D_UNICODE was not
passed on command line resulting in mismatches between wxChar and Windows
TCHAR. It's a mystery why this didn't happen with the other compilers but
defining _UNICODE for them too can't hurt.
Steve Lamerton [Sun, 5 Sep 2010 13:31:13 +0000 (13:31 +0000)]
Simplify ButtonTestCase::Bitmap. The old test was not correct as it tested all bitmaps to see if they were valid, however these do not get set by SetBitmap and so the tests only passed if the platform set valid defaults.
Improve main and extended messages handling in new wxMSW wxMessageDialog.
Don't use the main message if there is no extended message: this looks bad as
the main message is emphasized to contrast with the extended one which doesn't
make sense visually if there is no extended message.
Also recognize the common use of wxMessageBox() with a multiline text composed
of the first string that plays the role of the main message with the rest
being the extended one and handle this appropriately automatically. This
results in a better appearance by default for a lot of message boxes,
including even the one in our own minimal sample.
Add a link to Microsoft guidelines from wxICON_QUESTION documentation.
Microsoft documentation provides explanations as to how the icons should be
used in the message dialogs which can be useful for people wondering which
icon style to use an when.
Václav Slavík [Fri, 3 Sep 2010 19:33:18 +0000 (19:33 +0000)]
Fix wxOwnerDrawnComboBox keyboard navigation with duplicate items.
If the combobox contained duplicate strings (i.e. multiple items with the
same string value, but differing indexes), then navigating to the second
and subsequent ones skipped to the first occurence instead. We need to
preserve the index.
wxRichTextCtrl::ApplyStyle now applies a paragraph style at the cursor
without needing a selection, and setting the default style now avoids duplicating
character attributes in subsequently typed text when they exist in the paragraph style.
Václav Slavík [Wed, 1 Sep 2010 13:28:43 +0000 (13:28 +0000)]
Reduce flicker when removing wxNotebook page.
wxMSW implementation hides all pages except the selected one. But when
removing selected page from the control, this invariant is temporarily
broken and this results in visible flicker. Hiding the page as soon as
it gets removed fixes it.
Vadim Zeitlin [Mon, 30 Aug 2010 22:18:52 +0000 (22:18 +0000)]
Add wxGrid::RefreshAttr() method to force attribute refresh.
A cached attribute may continue to be used even though the attribute returned
by a custom wxGridCellAttrProvider has changed so add a method to force wxGrid
to update the attribute by forgetting the cached copy.
Vadim Zeitlin [Mon, 30 Aug 2010 21:48:25 +0000 (21:48 +0000)]
Don't center wxGenericMessageDialog elements.
Centering doesn't seem to be appropriate on neither of the major platforms and
makes wxGenericMessageDialog and wxGenericRichMessageDialog which uses it look
even less native than otherwise.
Simply don't do it neither for the text nor, especially, for the buttons where
wxStdDialogButtonSizer already exists to take care of their alignment.
Vadim Zeitlin [Mon, 30 Aug 2010 21:48:21 +0000 (21:48 +0000)]
Allow using custom labels for wxGenericMessageDialog buttons.
Custom labels set for wxGenericMessageDialog buttons were simply ignored as it
used CreateSeparatedButtonSizer() to create the actual buttons which in turn
always used the standard labels.
Fix this by explicitly creating the buttons with custom labels if necessary.
This also fixes custom label support in wxGenericRichMessageDialog deriving
from this class.
Vadim Zeitlin [Mon, 30 Aug 2010 21:48:11 +0000 (21:48 +0000)]
Fix button order in wxStdDialogButtonSizer in all cases under GTK.
The order of Yes/No/Cancel was recently fixed by the changes in r65346 but it
broke the order of the buttons in Ok/Cancel case. Ensure the correct order is
used in all cases now: the one described by GNOME HIG by default but different
order for the special case of Yes/No/Cancel which follows the native message
box.
Vadim Zeitlin [Mon, 30 Aug 2010 21:48:06 +0000 (21:48 +0000)]
Rewrite GTK section of wxStdDialogButtonSizer using wxSizerFlags.
Using wxSizerFlags makes the code shorter and more understandable but
otherwise there are no real changes in behaviour except for a minor fix to one
of the border which was wrong before.
Jaakko Salli [Thu, 26 Aug 2010 13:51:45 +0000 (13:51 +0000)]
Changed wxArrayStringProperty default delimiter to comma. It should allow for better looking and more easily editable property values for common cases.
Václav Slavík [Wed, 25 Aug 2010 15:02:30 +0000 (15:02 +0000)]
Fix wxListBox selection handling broken by r64500.
r64500 introduced tracking of previous selection in wxMSW's wxListBox so
that an event isn't sent when the user clicks already selected item
again. Unfortunately, it forgot to account for programatic changes of
selection (e.g. when all items are removed, so is the selection) and
didn't update selection book-keeping information in that case. The
result was that the event wasn't sent when it should be in some cases.
Fixed by using UpdateOldSelections() even in single-selection case in
wxMSW.
Vadim Zeitlin [Tue, 24 Aug 2010 11:36:43 +0000 (11:36 +0000)]
Remove unused wxDisplay implementation using DirectDraw from wxMSW.
Remove commented out version of DirectDraw-based wxDisplayFactory
implementation. It doesn't seem to have any advantages compared to the
currently used version and nobody uses it anyhow.
Vadim Zeitlin [Sun, 22 Aug 2010 23:46:02 +0000 (23:46 +0000)]
Use "C" locale for locale-dependent part of TextCtrlTestCase.
As we expect to get decimal points in the text control when we stream floating
point numbers into it, we must do it in a locale which uses decimal point,
e.g. "C" one. Otherwise the test failed when ran in e.g. French locale.
Vadim Zeitlin [Sun, 22 Aug 2010 22:15:42 +0000 (22:15 +0000)]
Merge wxUIActionSimulator fixes from SOC2010_GUI_TEST branch.
Correct a lot of problems with the initial implementation, notably make the
API consistent across all platforms, e.g. all keyboard-related methods now
take just a wxKeyCode.
Add some useful higher-level helpers such as Text() and MouseDragDrop().
Improve documentation.
wxUIActionSimulator now works under MSW, GTK and OS X and is enabled by
default.
Vadim Zeitlin [Sun, 22 Aug 2010 22:15:27 +0000 (22:15 +0000)]
Don't crash in wxOSX::wxClipboard::Clear() if initialization failed.
Creating the clipboard may fail (e.g. when running from a ssh session to an OS
X machine), don't crash by passing NULL pointer to PasteboardClear() if this
happens but assert and return instead.
Vadim Zeitlin [Sun, 22 Aug 2010 22:15:22 +0000 (22:15 +0000)]
Work around a crash on starting editing in wxGrid under wxOSX/Cocoa.
wxOSX/Cocoa currently generates unexpected focus loss events with the window
gaining focus being the same one as losing it. This is wrong and shouldn't
happen but as long as it does, filter these events out to at least allow
editing the grid to work.
Vadim Zeitlin [Sun, 22 Aug 2010 22:15:17 +0000 (22:15 +0000)]
Don't send event from wxMSW::wxListCtrl::DeleteAllItems() if it did nothing.
wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS should only be sent if the control hadn't
been empty before. Document this behaviour and adjust wxMSW to match the
other platforms.
Vadim Zeitlin [Sat, 21 Aug 2010 23:33:40 +0000 (23:33 +0000)]
Don't report spurious errors from wxSocket in "no wait" mode.
In wxSOCKET_NOWAIT mode wxSOCKET_WOULDBLOCK is not a real error as it's
expected and should be just discarded. Failing to do this could result in the
following scenario:
1. Try to read a big buffer with wxSOCKET_NOWAIT (setting wxSocket error to
wxSOCKET_WOULDBLOCK).
2. Process small part of it.
3. Read more data from wxSocket -- which now goes to the data containing
already cached data without going to the socket itself and this without
resetting the error.
4. Check wxSocket::Error() which turns out to be (still) true.
And this was exactly what happened in mysteriously failing unit test case
reading wxImage contents from a socket: the failure was difficult to reproduce
because it depended on how much data exactly did we read from the socket in
one go.
Fix this by resetting the error properly and reenable the unit test which was
previously disabled for the build bot, it should pass now.
Vadim Zeitlin [Thu, 19 Aug 2010 15:41:18 +0000 (15:41 +0000)]
Make the main message of wxGenericMessageDialog stand out.
Use larger bold font for the main message in wxGenericMessageDialog if the
extended message is also given to make it stand out similarly to how it
happens in the native GTK and MSW dialogs.
Vadim Zeitlin [Wed, 18 Aug 2010 22:49:02 +0000 (22:49 +0000)]
Use task dialog for wxProgressDialog implementation in wxMSW.
If available, the task dialog is now used for the wxProgressDialog under
Windows. This provides a much more native looking dialog which doesn't look
out of place under modern Windows versions, unlike the generic implementation.
The internals of the code had to be significantly changed as the task dialog
can only be shown modally so, to emulate wxProgressDialog modeless nature, a
separate thread is used for the progress dialog management.
Vadim Zeitlin [Wed, 18 Aug 2010 22:48:41 +0000 (22:48 +0000)]
Add wxRichMessageDialog class.
This is a generalization of wxMessageDialog based on the native task dialog
under recent (Vista and later) Windows versions and implemented generically
for the other ports for now.
It provides the possibility to use additional controls in the message boxes
(checkbox useful for the "Don't ask me again" kind of dialogs and collapsible
detailed explanations field) and better look and feel under Windows.
Vadim Zeitlin [Wed, 18 Aug 2010 22:48:28 +0000 (22:48 +0000)]
Provide a task-dialog based wxMSW wxMessageDialog implementation.
Use the task dialog instead of the legacy message box for wxMessageDialog
implementation under wxMSW on recent (Vista and later) Windows versions.
As part of this change, remove wxMessageDialogWithCustomLabels and integrate
its functionality in wxMessageDialogBase itself as it's now used by all
platforms.
Vadim Zeitlin [Wed, 18 Aug 2010 22:48:15 +0000 (22:48 +0000)]
Fix Yes/No/Cancel buttons order in wxGTK wxStdDialogButtonSizer.
"Yes" and "No" buttons should be positioned next to each other for consistency
with the native message box instead of separating them with the "Cancel"
button.