The comment about "wxString doesn't having enough const members" was totally
incomprehensible and clearly wrong. Just remove the hack it was explaining.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66263 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
When getting an instance of an OLE automation object, it is often useful to
connect to the existing instance if any or start a new one otherwise. Make
GetInstance() behave like this by default while still allowing to use the
wxAutomationInstance_UseExistingOnly flag to reestablish the old behaviour.
Also improve the error reporting in wxAutomationObject.
See #12489.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66262 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
CLSID was used instead of ProgID in several places in the code and the
documentation but they are different things so clear up the confusion.
See #12489.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66261 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Add simple wxVersionInfo class holding the version information.
Also add GetLibraryVersionInfo() static method to wx{JPEG,PNG,TIFF}Handler,
wxStyledTextCtrl and wxXmlDocument classes and wxGetZlibVersionInfo() and
wxGetLibraryVersionInfo() global functions using it.
Closes#12690.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66259 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Add wxCMD_LINE_SWITCH_NEGATABLE which allows to use a dash after a command
line switch to inverse its meaning (i.e. use "/X-" form). Also add new
wxCmdLineParser::FoundSwitch() allowing to check for whether the switch was
specified in normal or negated form.
Closes#11643.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66253 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
For seekable streams, don't change the current position when loading image
fails. This allows the subsequent image handlers to succeed during image
format auto-detection even if a previous, erroneously chosen, handler failed.
Closes#12702.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66252 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
The error given when loading an image file failed was not very useful because
they didn't specify which file exactly we failed to load and also because the
numeric handler type which means nothing at all to the end user (and not much
to the developer) was used.
Use the description of the file format instead and also always give the name
of the file that we failed to load.
Finally, remove the test for file existence: this is one of many reasons why
opening the file could fail and it doesn't make sense to handle it specially,
just let the underlying stream generate the appropriate error message in all
cases.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66251 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Don't consume mouse events outside of the area occupied by the items in the
generic implementation of wxDataViewCtrl as this prevented wxEVT_CONTEXT_MENU
events from being generated.
Closes#12706.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66250 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Fix VC6 compilation broken by r66237: don't return the result from a void
function, this compiler doesn't support this C++ feature.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66246 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Try to make the chain of preprocessor checks for different ways of getting
time zone from the CRT more clear.
Also call _tzset() for all MSVC versions, not just MSVC8+ (closes#12700). We
should probably call tzset() for the other compilers too, in fact.
And multiply the timezone returned from ftime() by 60 as it's supposed to be
in minutes and not seconds as needed.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66245 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
wxProgressDialog was created without the parent when using task dialogs so it
was centred on screen and not on its parent as usual. Fix this by explicitly
positioning it so that it's centered over the parent.
Closes#12699.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66244 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Even though this behaviour is somewhat counterintuitive, the documentation
mentions that this is what should happen and wxGTK and wxOSX already behave
like this so bring wxMSW in line.
wxListBox::DeselectAll() should probably just call SetSelection(wxNOT_FOUND)
when the item to leave selected is not specified too now.
Closes#12705.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66243 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
We must call _tzset() before calling _get_timezone() as while this is normally
done implicitly by the other time functions, it might not have been done yet
if create a wxDateTime::TimeZone before calling any of them.
Closes#12700.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66241 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This is either unnecessary or doesn't work anyhow (they are always centered on
the parent window) and just results in debug error messages.
Simply don't do anything in wxMessageDialog::Centre() when using task dialog
implementation under MSW.
Closes#12699.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66237 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
The total width of status bar panes must add up to the size of the status bar
as otherwise an extra unwanted border is drawn after the last pane and we did
have this border for status bar with a size grip.
So while we still use the width without the size grip for calculating the
fields widths, pass the width with the size grip to Windows to prevent this
from happening.
Also, don't pretend that the last field stretches up to the status bar edge
when it should end before the size grip and Windows even already helpfully
does it for us.
Closes#12655.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66236 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
SBARS_SIZEGRIP and CCS_TOP should be added to the normal style, not the
extended one. This restores the behaviour broken by r66227.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66235 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Setting sash size to non default value didn't work correctly and didn't make
much sense anyhow as the sash appearance is platform-dependent and current
code for drawing it doesn't work for arbitrary sizes.
Simply remove the possibility to set the sash size.
Closes#12412.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66232 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Setting the background colour for the status bar explicitly is unnecessary and
probably prevents it from rendering correctly with some themes. Simply remove
the call to SetBackgroundColour() from wxStatusBar::Create().
We should also define Get[Class]DefaultAttributes() in wxStatusBar in the
future.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66231 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Any border specified for wxSplitterWindow was explicitly discarded when
creating it but there doesn't seem to be any reason to forbid it, the original
code probably predated the addition of wxWindow::GetDefaultBorder() which
allowed to have different borders by default for different classes.
In any case, simply remove this code now to allow creating splitters with
borders if so desired.
Closes#12413.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66230 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Move DeletePendingObjects() call from ProcessPendingEvents() to ProcessIdle()
to ensure that we delete the objects marked for destruction even if the
application is sitting in a tight OnIdle() loop, i.e. if the idle event
handler keeps requesting more events.
Also make sure that the event loop terminates if its OnExit() was called even
if the idle event handler continues to request more events.
Closes#12424.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66229 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
An assert in wxTimerWndProc() could be provoked by valid user code which
simply started and stopped the timers quickly enough because a WM_TIMER could
have been already generated just before we stopped the timer.
Simply ignore events from unknown timer under assumption that they must come
from the recently stopped ones instead of asserting.
Ideally we'd somehow distinguish between the situation described above and the
really bogus events which could indicate bugs in wx code or a change in
behaviour in a future version of Windows but there is no easy way to do it so
for now just settle for not asserting in normal case.
Closes#10052.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66228 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Use wxControl-provided CreateControl() and MSWCreateControl() methods to
create the status bar instead of duplicating their code in its Create().
Also translate wx styles to MSW ones in overridden MSWGetStyle() now.
In addition to making the code smaller and more clear, this fixes the
non-respect of the styles specified at status bar creation (e.g. border),
see #12655.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66227 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
We need to account for the full size of status bar, including potential
borders, when calculating the client size of the frame containing it.
Closes#12697.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66225 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Update the currently selected page before generating
wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED event in wxMSW wxNotebook. This is more
consistent with other ports and more logical as "-ED" events are supposed to
be sent after the action they notify about is completed. And it also allows to
set the focus in this event handler whereas any attempts to do it would have
been disregarded before as changing the active page resets focus.
Notice that this does introduce an incompatibility: calling
wxNotebook::GetSelection() from PAGE_CHANGED event handler now returns the new
page and not the old one as before. Again, this is more logical and more
consistent.
Closes#12688.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66224 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Attempting to load a resource that couldn't be loaded resulted in
wxXmlResource::Load() returning false for this and _all_the_subsequent_ calls
to it because each call to Load() reattempted to reload all resources,
including the one(s) that failed to load initially.
Instead, try to load just the resource(s) that we should load right now and
ignore all the other ones. Also, don't add entries for the one(s) that we fail
to load.
This fixes the unit test failures in the XRC test case which was affected by
the test checking that XRC couldn't be loaded from garbage that ran before it.
It also makes the code simpler by ensuring that wxXmlResourceDataRecords
elements always have a valid wxXmlDocument associated with them.
Also clean up the code: use wxScopedPtr instead of manually deleting pointers
and reorganize #if checks to be easier to follow.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66219 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
The path being normalized could have come from user and there doesn't seem to
be any point in complaining about too many ".."s in it when we can handle them
correctly instead.
So simply ignore the extra ".."s for the absolute paths and keep them
unchanged for the relative ones instead of returning an error.
See #10960.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66218 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Check that the provided day is strictly positive and also that the month is in
valid range: while it should always be, considering that it's an enum element,
in practice people often cast ints to wxDateTime::Month with potentially fatal
results. Catch this with an assert in wxDateTime::Tm::IsValid().
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66203 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This header was only included implicitly via wx/msw/uxtheme.h and thus the
code failed to compile with wxUSE_UXTHEME==0 but wxUSE_DYNLIB_CLASS==1.
See #12664.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66202 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Store the titles of the menu bar menus in the menu objects themselves. This
makes wxMenu::GetTitle() return the expected result for them (which also fixes
the current unit test failures for wxMSW) and makes wxMenuBar code simpler.
This removes the wxMenuInfo class which existed for XTI purposes only but as
it was apparently unfinished and MSW-specific it shouldn't be a big loss.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66178 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Make more local variables const. Use consistent spacing. Don't use needless
comparison with NULL. Don't avoid not using double negation.
See #12682.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66177 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
wxMenu::GetTitle() returned a string in GTK+ format (i.e. using underscores
instead of ampersands) instead of the expected wx one.
This is, of course, the right thing to do and it also fixes
wxMenuBar::FindMenuItem() as a side effect.
Closes#12672.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66175 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
The assert added in r66053 checking that we couldn't have tooltips for child
windows if we didn't have the tooltip for the main one turned out to be wrong,
at least in wxRadioBox case it's perfectly possible to have the tooltips for
the individual radio buttons without having one for the box itself.
Replace the assert with a simple if check.
This fixes a unit test failure in RadioBoxTestCase.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66169 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Extract code common to several wxImage methods creating new images based on an
existing one in a new MakeEmptyClone() method.
Closes#12682.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66167 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Parsing an incomplete date with nothing but whitespace and/or date delimiter
characters at the end crashed as we happily went beyond the end of string.
Fix this by not using a loop which didn't check for the iterator validity.
Closes#12685.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66166 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Deal with the lack of scope around variables declared inside the for loop in
this compiler, previously it gave "error C2360: initialization of 'x' is
skipped by 'case' label" message and also complained about redefinition of 'x'.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66157 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
The code closing all file descriptors inherited from the parent in the child
process created by wxExecute() was removed in r57324 by mistake (probably
due the fact that its meaning was poorly explained) but we still do need to do
this, of course, to avoid descriptor "leaks" (e.g. the parent couldn't really
close any of them).
Restore the code for closing all unneeded file descriptors in the child in
slightly modified form and add a comment pointing to an URL explaining how to
do it better in the future.
Closes#12636.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66153 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Since the child pipe was made non-blocking in r65993, it became possible to
write to child process without deadlocking when the pipe became full. However
this still resulted in an error from wxFileOutputStream as it didn't handle
EAGAIN returned from write() any differently than any other error, even though
it is an expected situation in this particular case.
Change Unix wxExecute() to use wxPipeOutputStream which ignores EAGAIN unlike
wxFileOutputStream to fix this.
See #12636.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66152 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Renamed the symbol indicating whether pipe-based streams are available from
HAS_PIPE_INPUT_STREAM to HAS_PIPE_STREAMS as it's not really input-specific.
See #12636.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66151 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Set hot spot coordinates for the rotated image if the original one had them.
Also handle the case when the source image has both alpha and mask correctly.
Closes#3680.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66145 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775