Vadim Zeitlin [Fri, 16 Dec 2011 19:57:17 +0000 (19:57 +0000)]
Don't use wxTE_DONTWRAP style in Lines() wxTextCtrl unit case.
The last check in this test couldn't pass under MSW as it relied on the (long)
line of text being wrapped but the style used for the control prevented this
from happening. Not sure how could it have ever worked before but in any case
removing wxTE_DONTWRAP does make the test pass.
Vadim Zeitlin [Fri, 16 Dec 2011 19:47:58 +0000 (19:47 +0000)]
Keep the item being updated selected in wxMSW wxChoice::SetString().
Changing the text of the selected wxChoice (or wxComboBox, as it derives from
it in wxMSW) item made it unselected. Fix this by explicitly restoring the
selection to the item if needed.
Vadim Zeitlin [Fri, 16 Dec 2011 19:47:55 +0000 (19:47 +0000)]
Corrected test for region validity in wxMSW wxRegion::DoOffset().
Checking M_REGION is not enough as the region can be invalid (meaning
m_refData dereferenced inside M_REGION is NULL itself) and not just not
initialized, so it resulted in crashes and not just the expected assert
failure when wxRegion::Offset() was called for an invalid region.
Vadim Zeitlin [Fri, 16 Dec 2011 19:33:31 +0000 (19:33 +0000)]
Use IsThisEnabled() to test if AUI child is enabled, not IsEnabled().
IsEnabled() returns false if the parent window is disabled and calling
Enable() does not help with this, so we could keep trying and trying to enable
the window unsuccessfully if it was reenabled while its parent was disabled,
resulting in a never-ending stream of EVT_IDLE events.
Vadim Zeitlin [Fri, 16 Dec 2011 11:03:15 +0000 (11:03 +0000)]
Make multiline checkboxes wider in wxMSW to avoid word wrap.
At least for some versions of Windows (Server 2003 with classic look and feel)
the native checkboxes auto wrapped the label as it wrongly considered that the
width we specified for it was not big enough. Compensate for this by making
the checkbox wider -- this is just a hack but still better than corrupting the
checkbox display.
Vadim Zeitlin [Fri, 16 Dec 2011 09:36:36 +0000 (09:36 +0000)]
Output the value of --enable-debug option in configure.
As we use AC_ARG_ENABLE() instead of WX_ARG_ENABLE() for it, we need to call
AC_MSG_RESULT() explicitly or its value is never reported and configure output
is corrupted.
Vadim Zeitlin [Thu, 15 Dec 2011 21:13:03 +0000 (21:13 +0000)]
Compilation fix for wxStopWatch with wxUSE_THREADS==0.
Use wxCRIT_SECT_DECLARE_MEMBER/wxCRIT_SECT_LOCKER macros which expand to
nothing in wxUSE_THREADS==0 case instead of using wxCriticalSection[Locker]
classes which are not defined then.
Vadim Zeitlin [Thu, 15 Dec 2011 00:22:48 +0000 (00:22 +0000)]
Ensure that wxPropertyGrid::m_tlp is initialized early enough.
This member variable could be used before it was initialized as
OnTLPChanging() was called from Create() before Init2(), where m_tlp was
assigned NULL, was called.
Václav Slavík [Wed, 14 Dec 2011 16:00:30 +0000 (16:00 +0000)]
Close wxDataViewCtrl inline editor when destroying the control.
If the wxDataViewCtrl control was destroyed while an inline editor
control was still active, it wouldn't get destroyed in the right order
and the ~wxWindow assert about unpopped event handlers would be
triggered.
Fix this by popping the handler as one of the first things in
wxDataViewRendererBase destructor.
Václav Slavík [Wed, 14 Dec 2011 15:53:28 +0000 (15:53 +0000)]
Don't change horizontal scroll position needlessly in wxDataViewCtrl.
When ScrollTo() or EnsureVisible() was called in the generic
wxDataViewCtrl implementation with unspecified column, horizontal scroll
position was reset to left-most position, which doesn't make much sense.
Instead, leave horizontal position unchanged in this case and only
change it when explicitly requested.
Vadim Zeitlin [Tue, 13 Dec 2011 21:08:17 +0000 (21:08 +0000)]
Use string column identifiers with NSTableColumns in wxDataViewCtrl.
Starting with OS X 10.7 the column identifiers used in NSOutlineView must be
of type NSString, so convert the code to use string identifiers instead of
wxPointerObject.
Vadim Zeitlin [Mon, 12 Dec 2011 14:01:23 +0000 (14:01 +0000)]
Rename src/generic/timectrl.cpp to timectrlg.cpp.
We can't use the same names for these files with VC6, it doesn't support this
and the project can't be built because of the output object file names
conflict.
Vadim Zeitlin [Mon, 12 Dec 2011 13:08:46 +0000 (13:08 +0000)]
Remove the item before notifying about it in wxDataViewIndexListModel.
Remove the item from the internal representation of the model before calling
ItemDeleted() callback so that the callback sees the model in a consistent
state.
This is more consistent with the other callbacks (e.g. ItemAdded()) and other
models (e.g. wxDataViewVirtualListModel) and should fix crashes in wxOSX
version of the control.
Vadim Zeitlin [Sun, 11 Dec 2011 17:03:56 +0000 (17:03 +0000)]
Ensure that Enter key presses are never stolen from wxButton in wxMSW.
This commit fixes the following bug: when an in-place editor control containing
an embedded button was used in wxDataViewCtrl, pressing Enter on the button
would close the editor, accepting changes, instead as (generic) wxDataViewCtrl
intercepts WXK_RETURN in its EVT_CHAR_HOOK handler. To prevent this from
happening, wxButton now handles EVT_CHAR_HOOK itself and never lets the parent
window intercept it if it's for WXK_RETURN. To ensure that normal
wxEVT_KEY_DOWN and wxEVT_CHAR are still generated in this case, wxButton
handler calls the new wxKeyEvent::DoAllowNextEvent() method that was added to
allow suppressing EVT_CHAR_HOOK only, without affecting the subsequent events.
DoAllowNextEvent() is currently only used in wxMSW but support for it was also
added to wxGTK and (both) wxOSX ports.
Vadim Zeitlin [Fri, 9 Dec 2011 21:41:36 +0000 (21:41 +0000)]
Quote variables in -z tests correctly in wx-config.
The changes of r69944 broke wx-config for the traditional Unix systems (at
least Solaris and AIX, probably others too) which don't support using -z
without any value (unlike Linux/bash).
Fix this by quoting the possible empty variables in the tests.
Vadim Zeitlin [Fri, 9 Dec 2011 15:20:55 +0000 (15:20 +0000)]
Restore mouse capturing/releasing in wxPopupTransientWindow under MSW.
Partially revert the changes of r69350 to restore EVT_IDLE handling of
wxPopupTransientWindow under MSW. It turns out that we must release the mouse
for the embedded controls to work.
It would be better to solve the problem differently, e.g. perhaps maybe only
releasing mouse capture when mouse is clicked as the current code is fragile
but for now at least restore the functionality that used to work.
Vadim Zeitlin [Thu, 8 Dec 2011 14:47:37 +0000 (14:47 +0000)]
Only declare wxComboBox::Popup/Dismiss() when using Cocoa in wxOSX.
wxOSX/Carbon doesn't use the core implementation file so declaring these
methods for the Carbon version resulted in linking errors. Just don't do this,
they're not implemented for Carbon anyhow.
Vadim Zeitlin [Wed, 7 Dec 2011 23:41:14 +0000 (23:41 +0000)]
Work around impossibility to use wxCombobox in wxGrid in wxOSX.
Open the combobox when the editor is initially shown, this somehow ensures
that the combobox selection is taken into account when it is closed while
without this the selection is simply completely ignored.
This is just a hack but at least it allows to use wxGridCellChoiceEditor under
wxOSX which was previously impossible at all.
Vadim Zeitlin [Wed, 7 Dec 2011 23:41:10 +0000 (23:41 +0000)]
Use NSApp abortModal instead of stopModal to end modal dialogs.
Using abortModal is apparently the right thing to do if the dialog is not
being closed as the result of user action (but e.g. because a timer expired)
and shouldn't change anything if it done because of something the user did
(e.g. clicked on a button).
Vadim Zeitlin [Wed, 7 Dec 2011 23:21:06 +0000 (23:21 +0000)]
Don't use gtk_menu_item_set_submenu() with NULL menu with GTK+ < 2.12.
In GTK+ 2.10 and earlier gtk_menu_item_remove_submenu() had to be used to
remove the items submenu as gtk_menu_item_set_submenu() gave errors when
passed NULL submenu, so call the old function when using old GTK+ version.
Vadim Zeitlin [Wed, 7 Dec 2011 14:35:23 +0000 (14:35 +0000)]
Fix the size of the buffer when using wxIPC::Execute() with DDE.
Don't multiply the "realSize" variable by sizeof(wxChar) when passing it to
DdeClientTransaction(), as its name indicates it is already supposed to be the
size of the data and not the length of the string so just ensure that it is
always correctly set to the size and not length when initializing it.
Vadim Zeitlin [Wed, 7 Dec 2011 14:05:11 +0000 (14:05 +0000)]
Remove vertical wxTextCtrl adjustment hacks for wxMSW in wxComboCtrl code.
Because wxTextCtrl used to wrongly report its best size in wxNO_BORDER case
under MSW, wxComboCtrl manually adjusted its position to work around this.
However since r69066 wxTextCtrl::GetBestSize() was fixed and now these
adjustments resulted in wrong vertical position for the control.
Just remove all manual adjustments completely now to fix this.
Vadim Zeitlin [Wed, 7 Dec 2011 00:59:48 +0000 (00:59 +0000)]
Pretend that the window showing popup menu has focus in wxGTK.
This is necessary for compatibility with wxMSW as the focus remains on the
window which had it before the popup menu was shown there and existing code
relies on it, while in wxGTK the popup steals the focus when it's shown.
Vadim Zeitlin [Wed, 7 Dec 2011 00:59:43 +0000 (00:59 +0000)]
Fix build with Sun CC under Linux.
We need to explicitly define _GNU_SOURCE when building our code as we use it
configure when running the tests and it's not predefined by Sun CC, unlike g++
so we need to add it to CXXFLAGS ourselves.
An alternative solution would be to run the tests without _GNU_SOURCE but this
would lose too much functionality so it doesn't seem like a good idea.
Vadim Zeitlin [Wed, 7 Dec 2011 00:59:40 +0000 (00:59 +0000)]
Remove wxHAVE_GLIBC2 from configure, always predefine _GNU_SOURCE.
We used to test for glibc version first and predefined _GNU_SOURCE only if it
was greater than 2.1 but there doesn't seem to be any harm to just always
predefine _GNU_SOURCE under Linux (not that there are any systems with glibc <
2.1 left anyhow). Also do it much earlier to ensure that all tests are
affected by it.
And as we don't use wxHAVE_GLIBC2 anywhere else just remove it.
Vadim Zeitlin [Sun, 4 Dec 2011 23:57:36 +0000 (23:57 +0000)]
Add virtual dtor to wxCustomBackgroundWindowBase.
Suppress g++ warnings about a class with virtual methods but non-virtual dtor
by making the dtor virtual even if we don't need it to be virtual in this
class.
Vadim Zeitlin [Sun, 4 Dec 2011 12:26:24 +0000 (12:26 +0000)]
Do not declare "environ" variable ourselves under MSW.
The changes of r69564 making "environ" declaration unconditional broke
MinGW 4.6 build, presumably because "environ" is declared differently (as DLL
exported?) there, so avoid declaring it under MSW, we don't need to do it
there anyhow as it's always defined in system headers.
Vadim Zeitlin [Sat, 3 Dec 2011 00:34:00 +0000 (00:34 +0000)]
Fix bug with wxStopWatch::Start() not resuming paused stopwatch any more.
Since r69835 the stop watch remained paused even when Start() was called. Do
resume it when restarting it both for backwards compatibility and because it
makes more sense and also document this behaviour.
Mentioned more files in tn0011.txt that need version updating, and made it more clear which ones need to be changed manually. Modified inc_release to update docs/readme.txt and changed the version references in the readme.txt to 2.9.3. Also changed two references to the month of release from July to December.
Fixed x64 application termination after exceptions in a file dialog callback.
Since Windows 7 exceptions thrown in a file dialog callback (possibly by third-party utilities) aren't swallowed anymore. Make use of SetProcessUserModeExceptionPolicy (available in Windows 7 SP1) to temporarily restore the old behaviour and prevent the crashing (or summoning of the Program Compatibility Assistant) of an x64 application.
Vadim Zeitlin [Fri, 2 Dec 2011 00:50:41 +0000 (00:50 +0000)]
Update all controls using in-place editors to handle Escape/Return correctly.
Define EVT_CHAR_HOOK handlers to ensure that pressing Escape/Return while an
in-place edit control is active affects only it and is not used for the
keyboard navigation.
Vadim Zeitlin [Fri, 2 Dec 2011 00:50:35 +0000 (00:50 +0000)]
Fix reentrancy in wxDataViewRendererBase::FinishEditing().
Switching focus to the main wxDataViewCtrl window resulted in focus loss event
and a reentrant call to FinishEditing() itself if it wasn't called because the
in-place edit control was being destroyed the first time.
Fix this by destroying the in-place control first and adjusting the focus
later, the effect should be exactly the same but now FinishEditing() can be
safely called from anywhere in the code.
Vadim Zeitlin [Fri, 2 Dec 2011 00:50:29 +0000 (00:50 +0000)]
Don't use ListView_CancelEditLabel() as it doesn't work as expected.
ListView_CancelEditLabel() doesn't revert the controls value to the original
text as expected, so don't use it and revert to sending VK_ESCAPE to the
in-place edit control instead under all versions of Windows.
Vadim Zeitlin [Fri, 2 Dec 2011 00:50:25 +0000 (00:50 +0000)]
Make wxEVT_CHAR_HOOK propagate upwards and send it to the window itself.
Send wxEVT_CHAR_HOOK events to the focused window itself but make them
propagatable to ensure that the parent windows (including the top level
parent) still get it. This still allows the TLW parent to intercept keyboard
handling in its child but allows the child (or an intermediate parent window)
to have some say in the matter.
Vadim Zeitlin [Fri, 2 Dec 2011 00:50:19 +0000 (00:50 +0000)]
Added wxKeyEvent ctor for creating event of the different type for same key.
This is useful for implementation code in a couple of ports so provide a
higher level ctor doing this instead of having to use a copy ctor and then
manually changing the event type.
Vadim Zeitlin [Fri, 2 Dec 2011 00:50:16 +0000 (00:50 +0000)]
Refactor wxKeyEvent copying code.
Avoid duplication between copy ctor and assignment operator.
Also extract the assignment of everything not including the event type in a
reusable function as this can be useful for key event generation code in wxGTK
and possibly other ports.