Other functions that take (argc,argv) arguments (wxEntry, wxEntryStart)
take argc by reference, because they may manipulate the arguments list.
wxInitialize() used passing by value, so any modifications would be
silently lost. Make all the functions consistent in their handling of
argc by using int& everywhere.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78255 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
When converting argv[] from char* to wchar_t* in ConvertArgsToUnicode(),
keep an extra (shallow) copy of argc and the argv[] array so that it can
be safely freed in FreeConvertedArgs().
The reason is that other functions such as wxApp::Initialize() may
modify argv[] and remove some arguments from it; this is indeed exactly
what wxOSX does. After such changes, gs_initData.argv would no longer be
in the original state and could contain e.g. duplicate pointers or be
missing some of the pointers that we should free.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78254 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
These files shouldn't be included in the distribution and it's simpler to just
remove them, as it is pretty unlikely that a new Expat release is going to be
made, and even less likely that it would still use CVS if it does happen, than
to filter them out from the distribution creation scripts.
Closes#16711.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78253 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Correct the "pushed" state determination in our own drawn code, it didn't work
for wxToggleButton which doesn't return BST_PUSHED from BM_GETSTATE. But it
does have BM_GETCHECK returning its state directly, so add a new virtual
MSWIsPushed() method and implement it differently for it.
Closes#13755.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78251 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Fix wrong signature of DoHandleMenuEvent() by getting rid of this function
entirely, it's not just a trivial wrapper for ProcessMenuEvent() anyhow, so
just use the latter directly.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78249 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Windows doesn't use the correct image for checked disabled tools, at least up
to and including Windows 7, so don't put such tools in the "checked" state at
all: this doesn't matter as they are disabled anyhow, but shows the correct
image for them.
Closes#12989.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78248 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
While calling SetToolTip(wxToolTip*) overload already worked correctly for
wxCompositeWindow, using SetToolTip(wxString) did not if a tooltip already
existed, as it didn't use the virtual DoSetToolTip() in this case, resulting
in e.g. impossibility to update wxSpinCtrlDouble tooltip using this method.
Fix this by introducing DoSetToolTipText() virtual which is used by that
overload now and overriding it in wxCompositeWindow.
Also don't override DoSetToolTip() in wxSpinCtrlGenericBase any more, it is
not necessary as it's already done by its base class wxCompositeWindow.
Closes#16595.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78245 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
The cached widths need to be invalidated whenever an item is expanded or
collapsed, whether it's done programmatically (which was already handled) or
interactively by the user (which wasn't).
Closes#16678.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78244 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
It can happen that more than one file type maps to the given extension, in
this case prefer the one which has an open command defined for it as it is
typically more useful.
See #16703.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78241 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Not all .desktop files are directly under /usr/share/applications, some or, in
some cases, most of them, may be under its subdirectories, so look for them
there as well.
See #16703.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78240 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This mechanism is provided as an alternative to specifying MB_RTLREADING
style, e.g. if the source code can't be modified but the [string] resource
from which the message box message is loaded can be. We don't need to do this
if we do add MB_RTLREADING however.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78237 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Add helper wxApp::MSWGetDefaultLayout() static method and use it instead of
wxTheApp->GetLayoutDirection() in wxMSW code.
This serves two purposes: first, wxMessageDialog doesn't crash when it's shown
before wxTheApp is created (or after it's destroyed) any more. And second, we
use the correct layout direction if the main application has enabled it by
calling SetProcessDefaultLayout() or using two U+200E characters in the
beginning of its "FileDescription" resource field by default now.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78236 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
A wxTextCtrl inside an RTL window in an otherwise LTR application should still
be considered RTL, it's not clear at all why do we need to ask the application
for the layout here, so change this for consistency.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78235 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
CheckIfCanBeUsedAsParent() used by wxMessageBox ctor shouldn't dereference
wxTheApp unconditionally, otherwise it's impossible to show a message box
before creating the application object or after destroying it without crashing.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78233 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This doesn't make any sense, this function is not related to the owner drawing
code at all and should always be available.
This corrects the changes of r70316, see #13851.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78232 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This assert was triggered after the changes of the previous commit as we can
get WM_MENUSELECT with menu bar handle as parameter from Windows and still
search for the menu with this handle -- and there is nothing wrong with this,
so just return NULL but without asserting in this case.
This corrects the changes of r67355, see #13080.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78231 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Send these events to the menu itself first, then to the menu bar containing
it or the window invoking it if it's a popup menu and, finally, to the top
level window in all of wxGTK, wxMSW and wxOSX.
In particular, this ensures that help strings are now shown in the parent MDI
frame status bar by default, even when the menus are attached to the client
MDI frame or shown as popup menus.
At the implementation level, this logic is now encapsulated in a new static
wxMenu::ProcessMenuEvent() method which can be easily modified and reused in
other ports.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78230 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Neither m_isCommandEvent nor, worse, m_propagationLevel was set correctly for
wxCommandEvent objects constructed using copy ctor -- and hence Clone(). This
means that such events were not propagated upwards the window hierarchy, quite
possibly resulting in mysterious bugs.
Fix this now by initializing these fields in both the normal and copy ctors.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78229 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This parameter is redundant, we can find out whether a menu is a popup one or
not from the menu itself, assuming that we always have a valid wxMenu pointer
for popup menus events, which really should be the case (we may not have one
for the events from system menus).
This allows to handle popup menu events case in the base class version of
MSWFindMenuFromHMENU() which will allow to reuse it from places other than
DoSendMenuOpenCloseEvent() without code duplication now.
There should be no changes to the behaviour, this is just a simplification.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78227 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This is just to test how wxEVT_MENU_HIGHLIGHT events from popup menu items are
handled under the different platforms.
Also log menu events to the canvas window too as it now gets some.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78226 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
There is not enough space for the relatively long messages logged when menus
are opened or closed (added in r78130), shorten them as much as possible while
leaving them still readable.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78224 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This function was added way back in 2002 (r15339) but was never documented.
Do it now as it's a useful method to override for customizing the help strings
display.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78223 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This means it can be now done in wxEventLoopBase itself and calls to
ProcessIdle() in the port-specific code are not needed any more, so remove
them.
This introduces a change in behaviour for wxMSW, where idle event handlers
were not invoked from inside wxYield() at all previously, and for wxOSX, where
only a single idle event is now generated from wxYield() instead of a stream
of them until no idle handler needs any more of them as before. But on the
bright side, the new behaviour seems to make most sense and is now the same in
all ports.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78222 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
If possible, i.e. when running under Vista or later, just ask the control for
its best size instead of trying to approximate it ourselves.
Notice that we still use our own height, to ensure that it's the same as for
the text controls, but it's the width that really counts.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78221 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This fixes the size of wxDateTimePickerCtrl in programs that don't set any
specific locale: previously, the standard "%m/%d/%y" format was used for
computing the best size of the control in this case, but this could have been
significantly shorter than the format actually used (compare with the default
"%d %b, %Y"), resulting in the control contents being truncated by default.
GetOSInfo() is currently different from GetInfo() only under MSW, but we might
need to make the same distinction under OS X too, so do make this function
public instead of keeping it MSW-specific.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78220 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Otherwise it wouldn't be included as <regex.h> and the system copy would
be used. We need to always use the builtin, wxChar-aware copy.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78216 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Toolbar button corresponding to the unsuccessfully selected page should be released and button corresponding to the old page should be pressed again.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78213 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Generally, wxCONTROL_PRESSED control flag is used when drawing native check box (wxPGEditor_CheckBox) in "modified state" but under wxOSX this flag is equivalent to wxCONTROL_CHECKED flag and hence it is necessary to indicate this state in an alternative way.
Closes#16696
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78212 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This method used the wxKeyNames[] array originally intended for parsing
accelerator specification and not for human-friendly formatting. In
particular, non-alphanumeric keys such as WXK_DOWN and many others were
formatted using all-uppercase name, which was highly unusual and not
native on any platforms (the only unaffected one was OS X).
Improve the formatting by doing the following:
a) use Title case for the entries; because parsing is case-insensitive,
this has no effect on it;
b) add display_name field for keys where the symbolic name wasn't
appropriate for display and set it for some of the keys that are
likely to show up in menus;
c) add explanatory comments for translators
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78181 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Extract the commonly used TRANSLATORS: prefix into translation files, to
provide some additional context where needed.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78180 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
The content of <accel> property was taken verbatim and appended to the
(translated) label; this bypassed wx's internal accelerators translation
mechanism, because wxMenuItem code quite reasonably assumes that the
string passed to it is translated.
Explicitly use SetAccel() instead, to force translation. This matters
for languages such as German where e.g. Ctrl+ is translated as Strg+.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78179 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775