Our overridden xsgetn() method was never called when using these compilers
because they used their own, non-standard, _Xsgetn_s() instead. Because of
this the stream was always read character by character which was very
inefficient.
Fix the problem by overriding _Xsgetn_s() for these compilers and explicitly
forwarding it to xsgetn().
Closes#13926.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70515 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
The client data is supposed to be untyped, there is really no reason (other
than compatibility with C conventions of 40 years ago) to use char** here.
So don't do it and provide the versions taking "void**" keeping "char**" ones
for backwards compatibility only.
Also deprecate GetSelectionClientData() that returned char* and add a new
GetSelectionData() returning void* instead.
Closes#13876.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70514 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Add specific code to save and restore the focus when the window is minimized
and restored in wxMSW as the existing code in WM_ACTIVATE handler wasn't
enough because this event was generated too late when minimizing the window
(when it was already minimized and so the focus had been already lost) and too
early when restoring it (so the window was still minimized and restoring focus
failed).
This is still not perfect as we do in our code something Windows would be
expected to do automatically but for whatever reason, it doesn't do it for
wxWidgets programs, and this manual workaround at least prevents the annoying
total focus loss.
Closes#1599.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70513 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
The progress dialog parent was supposed to become the new foreground window
when the progress dialog was closed, but this didn't happen because
m_parentTop was never set when the native progress dialog implementation was
used under MSW. Fix this by explicitly calling the new SetTopParent() from its
ctor.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70512 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Get rid of two identical implementations in wxFrame and wxDialog and only
override this function once in wxTopLevelWindow.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70511 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
The last radio group item was initially checked under wxGTK instead of the
first one, as under the other platforms. Fix this by correcting the check for
the first radio group item which was inversed in wxToolBar::DoInsertTool().
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70510 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Refreshing the controls after finishing repainting the grid results in an
infinite stream of paint events, so don't do this, especially as this doesn't
seem to have any bad consequences under wxGTK which was the only major
platform where this behaviour was enabled.
Also rename wxPG_REFRESH_CONTROLS_AFTER_REPAINT to just wxPG_REFRESH_CONTROLS
and keep the control refreshing code for wxGTK only in a couple of places
outside of EVT_PAINT handler to be on the safe side.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70509 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Check that the string is long enough before accessing its first and second
characters to fix a crash when an empty or one-character string was passed to
wxFileSystem::URLToFileName().
Closes#13920.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70505 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Avoid full normalization including wxPATH_NORM_LONG when adding files to
wxFileHistory as this can take a very long time when using network paths under
Windows.
Closes#13915.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70503 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
In long running programs the wxEvent time stamp could wrap around resulting in
all mouse wheel events being ignored in wxStyledTextCtrl as the comparison of
the (positive) time until which all the subsequent events were supposed to be
blocked and the (now negative) current event time stamp would be always false.
Fix this by using wxStopWatch::TimeInMicro() to avoid wraparound instead of
wxEvent::GetTimestamp().
Also rename the variable to have a more clear name as the original code wasn't
easy to understand.
Closes#9057.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70500 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
We only updated the button positions when the radio box was moved or resized
after being created but didn't do it initially, so a radio box created with
fixed position and size didn't lay out its buttons correctly. Do lay them out
immediately after creating the radio box to fix this.
Closes#13912.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70498 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
wxFontDialog should have ctor and Create() overload taking just wxWindow
parent in addition to the one taking parent and wxFontData used to initialize
the dialog but it didn't have them in wxOSX, do add them now.
Closes#13908.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70497 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
The second parameter of this method should be optional, so make it so in wxOSX.
Also document what this method does exactly and the platforms under which it's
implemented.
Closes#13914.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70496 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Pass the name of the temporary file to wxFFile::Attach(). This allows to give
more useful error messages if any operation on this file fails later.
Closes#13903.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70492 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
wxString::mb_str() returns a raw pointer and not wxScopedCharBuffer when
wxUSE_UNICODE==0 so fix the code to do it differently in this case.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70485 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Documenting just this class but not iterator (and const_iterator) is
inconsistent but documenting all of them is too much mostly useless work as
all iterators (of the same category) have the same interface anyhow. So just
remove the documentation of reverse_iterator for now.
See #2585.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70484 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
All non-translated strings were "translated" as their English originals in
lt.po. This was just a artefact of the software used for translation and
wrong, so remove all these dummy translations.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70483 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Apply the same fix as was done in r68694 for ToWChar() to FromWChar(): it also
returned an off by 1 value when not using MAP_INVALID_UTF8_NOT.
Closes#13400.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70462 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Surprisingly, wxCommandProcessor::MarkAsSaved() method was never called by
wxDocument so saving the document didn't update wxCommandProcessor dirty
status.
Do add a call to MarkAsSaved() now, this allows wxCommandProcessor to track
its status correctly (and actually more correctly than the dirty status of the
document which becomes "dirty" after doing and undoing an operation after
saving it, unlike wxCommandProcessor::IsDirty() which correctly returns false
in this case).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70461 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
IsDirty() returned false when all commands were undone after saving even
though it clearly should have returned true in this case.
Fix this and add comments explaining what happens in this method.
Closes#2862.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70460 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
Check that m_lastSavedCommand is valid before comparing it with
m_currentCommand as comparing invalid iterators results in an assert in STL
build (and probably should also result in an assert in non-STL build too for
consistency).
Also move IsDirty() implementation out of line to make it easier to modify it
further in the future and because there is no real reason to keep it inline.
Closes#13465.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70459 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775