Commit Graph

337 Commits

Author SHA1 Message Date
Vadim Zeitlin
2bc6e50ede Wrap variable initializations after '=' consistently
Replace a few occurrences of

        type var
            = value;

with

        type var =
            value;

which is used much more widely in wx sources for consistency.

Also get rid of a couple of such lines, when it could be done easily.

No real changes.
2019-11-22 00:53:45 +01:00
Maarten Bent
eb23d4735c Fix unannotated fall-through warnings 2018-11-25 21:29:37 +01:00
Vadim Zeitlin
9b4759d7b6 Don't rely on getting WM_NULL messages in wxIdleWakeUpModule
Since the switch to using an event object for idle handling wakeup,
WM_NULLs are not being sent any longer, so wxIdleWakeUpModule didn't do
anything, resulting in pending event dispatching being paused while our
event loop was not running, as it happened, for example, while the
window was resized.

See #17579.
2018-01-13 17:33:09 +01:00
Vadim Zeitlin
91aed00288 Revert "Revert using an event object for waking up event loop in wxMSW"
This reverts commit ebb3a791b9,
effectively reapplying 6c40531fb7 once
again.

This breaks wake up when not running our own event loop once again
(see #17579), but this will be fixed in the next commit.
2018-01-13 15:23:30 +01:00
Vadim Zeitlin
01fac4b748 Delete windows before application on session end in wxMSW
When WM_ENDSESSION was received by the application, the wxApp object
itself was shut down by calling OnExit() on it before all the TLWs were
destroyed, which could be completely unexpected as during normal
shutdown the order of events is exactly the reverse.

In practice, this resulted in crashes in any application whose main
window close event handler or dtor touched wxTheApp in any way (e.g. to
save any configuration in the global wxConfig object destroyed by
wxApp::OnExit()).

See #9590 (sorry for missing the point before, ATS).
2017-08-15 00:41:16 +02:00
Catalin
f6b1a6bc16 Remove check for ATTACH_PARENT_PROCESS.
<https://msdn.microsoft.com/en-us/library/windows/desktop/ms681952(v=vs.85).aspx>
2017-03-05 15:40:30 +02:00
Vadim Zeitlin
842c441f01 Allow registering only a single window class in wxMSW
Add a flag to let wxApp::GetRegisteredClassName() register just a single Win32
class instead of always registering two of them: the "normal" (but rarely used)
version and the "NR" version used unless wxFULL_REPAINT_ON_RESIZE style is
specified.

With the new RegClass_OnlyNR, only the latter is registered and used.

This is not used yet, but will be soon.
2016-12-18 22:39:04 +01:00
Vadim Zeitlin
097f8a7f14 Refactor code finding the name of the windows class to use in wxMSW
Determine which class name to use in MSWCreate() caller instead of doing it
partly there and partly in MSWCreate() itself, which used to add the "NR"
suffix if necessary -- now it doesn't do this any more and just really created
the window using the given class.

No real changes, just prepare for future enhancements.
2016-12-18 22:39:02 +01:00
Václav Slavík
a352e95a30 wxMSW: Restore window focus after wxExecute
If wxExecute() is called without the wxEXEC_NODISABLE flag, it disables
all toplevel windows and then creates a helper dummy window. This moves
focus to the helper window and when it's destroyed, back to the first(?)
of the re-enabled application windows, thus loosing original focus.

Remember previously focused window instead and try to restore focus to
it. This still results in some flicker, but is better than completely
changing focus and e.g. even changing the currently active window
without user's input.
2016-08-01 18:10:37 +02:00
Vadim Zeitlin
ebb3a791b9 Revert using an event object for waking up event loop in wxMSW
This reverts 6c40531fb7 ("Make main thread wake
up code more efficient and less error-prone in wxMSW") as, while being more
efficient, the new code doesn't work at all when we're not running the message
loop ourselves as it happens when the user opens a menu or starts resizing a
window because in both cases Windows runs a local message loop dispatching the
messages itself and this message loop doesn't react to our event object being
signalled.

So this approach can't work and needs to be reverted, even if it reintroduces
the danger of overflowing the message queue (see #9053).

Closes #17579.
2016-07-02 14:49:15 +02:00
Dimitri Schoolwerth
1e78bf639e Add micro version to toolkit version functions
Support micro versions in wxAppTraits::GetToolkitVersion and
wxPlatformInfo functions related to toolkit versions.
2016-02-29 10:05:43 +01:00
Tobias Taschner
6ef5ed8110 Remove dynamic loading of AttachConsole.
API is available since WinXP.
2015-09-27 19:08:14 +02:00
Tobias Taschner
6973f13cd1 Remove wxApp::GetShell32Version().
This method was only used for checks for Windows 9x versions of shell32.

See ticket: #17120
2015-09-27 19:08:14 +02:00
Tobias Taschner
8282c1be0f Remove Windows CE support
Windows CE doesn't seem to be supported by Microsoft any longer. Last CE
release was in early 2013 and the PocketPC and Smartphone targets supported by
wxWidgets are long gone.

The build files where already removed in an earlier cleanup this commit
removes all files, every #ifdef and all documentation regarding the Windows CE
support.

Closes https://github.com/wxWidgets/wxWidgets/pull/81
2015-09-23 00:52:30 +02:00
Tobias Taschner
f1abb351af Remove MicroWindows support.
MicroWindows (aka Nano-X) support hasn’t been updated since 2010 and last work for it in wxWidgets happened more than 10 years ago.
2015-08-27 11:00:16 +02:00
Dimitri Schoolwerth
31145b8e3a Fix some typos, no code changes (besides strings) 2015-06-05 02:54:46 +04:00
Dimitri Schoolwerth
8f8d58d193 Use wx-prefixed macros throughout the repository.
Change {DECLARE,IMPLEMENT}_*CLASS and {DECLARE,BEGIN,END}_EVENT_TABLE
occurrences to use the wx-prefixed version of the macros.
2015-04-23 22:00:35 +04:00
Vadim Zeitlin
81f6d00518 Move MSWGetDefaultLayout() outside of #if wxUSE_EXCEPTIONS block.
Build fix for wxUSE_EXCEPTIONS==0 after r78236.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78250 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-12-06 13:07:10 +00:00
Vadim Zeitlin
f1fd45892f Fall back to default process layout direction in wxMSW.
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
2014-12-05 22:18:25 +00:00
Vadim Zeitlin
6c40531fb7 Make main thread wake up code more efficient and less error-prone in wxMSW.
Use a kernel event object to signal the thread wake up instead of sending
WM_NULL to one of its windows. This is simpler as we don't need to look for
any windows and doesn't suffer from the problem of overflowing the Windows
message queue if we do it too many times as signalling an already signalled
event simply doesn't do anything.

Closes #9053.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78041 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-10-19 12:57:08 +00:00
Vadim Zeitlin
e9f4d80887 Remove checks for ancient gcc/MinGW versions.
Don't test for wxUSE_NORLANDER_HEADERS, this is always true since many, many
years.

Remove tests for gcc version < 3.3, notably 2.95: the minimal supported gcc
version is 3.4.

Closes #15727.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76549 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-05-16 13:01:35 +00:00
Vadim Zeitlin
f825884f74 Don't use DWORD and WXDWORD interchangeably in wxMSW code.
WXDWORD is defined as unsigned long, while DWORD is defined as unsigned int in
64 bit builds using Cygwin gcc, so they are not the same type (although they
do have the same size) and using the latter instead of the former in the
function definition results in errors in this build configuration.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76501 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-05-12 13:14:20 +00:00
Vadim Zeitlin
2964de72a5 Don't duplicate wxGetOsVersion() in wxMSW wxGUIAppTraits.
Just call wxGetOsVersion() instead of using the Windows ::GetVersionEx()
function directly.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76408 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-04-27 22:39:34 +00:00
Vadim Zeitlin
d5216a4afc Fix Intel compiler warnings about hiding member variables.
Rename method parameters to avoid conflicts with member variables names.

Closes #15971.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76029 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-02-27 15:46:32 +00:00
Vadim Zeitlin
10597ecd04 Don't log error from wxMSW wxWakeUpIdle().
This is not necessary as there is nothing that can be done about this error
anyhow and the function still "works" even if it occurs (it doesn't wake up
anything but it is not necessary to do it if the message queue is already
full) and, worse, results in a crash due to stack overflow.

Closes #15951.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@75835 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-02-07 15:02:36 +00:00
Vadim Zeitlin
0180c58801 Call SetErrorMode() for all Windows applications, not just wxMSW ones.
This suppresses default system error message boxes when trying to load an
invalid DLL in wxGTK/Windows.

Closes #15559.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74974 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-10-09 10:34:19 +00:00
Vadim Zeitlin
3f66f6a5b3 Remove all lines containing cvs/svn "$Id$" keyword.
This keyword is not expanded by Git which means it's not replaced with the
correct revision value in the releases made using git-based scripts and it's
confusing to have lines with unexpanded "$Id$" in the released files. As
expanding them with Git is not that simple (it could be done with git archive
and export-subst attribute) and there are not many benefits in having them in
the first place, just remove all these lines.

If nothing else, this will make an eventual transition to Git simpler.

Closes #14487.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-07-26 16:02:46 +00:00
Vadim Zeitlin
0ec1064b79 Use a "hidden" dialog, not frame, in sync wxExecute() hack in wxMSW.
Replace a "hidden" (not really, but shown far off screen) frame with a dialog
to avoid this frame appearing in the Alt+TAB list.

Closes #13251.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72667 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-10-13 22:53:22 +00:00
Vadim Zeitlin
017dc06b50 Use wxString::t_str() in calls to Windows API functions in wxMSW.
Use t_str() instead of wx_str() to make the code work correctly in UTF-8 build
in which wx_str() returns a pointer to UTF-8 buffer while we need a wchar_t
pointer for Windows.

Closes #14371.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71640 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-06-03 19:16:59 +00:00
Vadim Zeitlin
dd1af40c59 Add wxUSE_THREADS checks around wxMSW functions dealing with threads.
This removes the code unneeded in wxUSE_THREADS==0 build and also fixes
compilation of wxGUIAppTraits::WaitForThread() which didn't compile any more
with wxUSE_THREADS==0 since r67185.

Closes #13050.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67288 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-03-22 17:15:56 +00:00
Vadim Zeitlin
b95a7c3144 Allow wxThread::Wait() and Delete() to block, even under wxMSW.
Add "wait mode" parameter to these methods which can be used to make them
block even under wxMSW where they currently dispatch messages when called
which can be totally unexpected.

Do keep the old behaviour for compatibility however, although it will change i
3.2.

Closes #12998.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67185 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-03-14 11:54:32 +00:00
Vadim Zeitlin
14ca3a3b0e Add more checks for wxUSE_DYNLIB_CLASS to wxMSW.
Compilation fixes for wxApp and wxComboBox for wxUSE_DYNLIB_CLASS==0.

See #12664.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66173 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-11-16 22:38:38 +00:00
Vadim Zeitlin
ef0fdf3914 Don't dispatch messages while waiting in worker thread in wxMSW.
We only want to continue dispatching messages while waiting for another thread
to terminate if we are waiting in the main thread.

Closes #12618.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65929 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-10-26 15:11:06 +00:00
Vadim Zeitlin
9106ea703c Fix wxMSW compilation in wxUSE_STL==1 case.
A wxDECLARE_NO_ASSIGN_CLASS() was recently added to ClassRegInfo but storing
it in a vector requires it to be "Assignable" so this broke compilation in STL
case (wxVector<> doesn't enforce this requirement currently).

Make ClassRegInfo assignable again to fix this.

Closes #12355.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65315 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-08-15 21:14:06 +00:00
Vadim Zeitlin
563cf28f2a Revert MSW window classes uniquification patch.
Making the class names unique doesn't seem to be necessary so revert the patch
which appended unique pointer value to their names (r57030).

See #9031.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65233 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-08-10 18:57:51 +00:00
Vadim Zeitlin
5431e4a684 Use wxGetInstance() instead of wxhInstance in wxMSW code.
No real changes, just use an accessor function instead of directly accessing
the global variable.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63554 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-02-25 00:03:59 +00:00
Julian Smart
4a00d37c96 Applied #11236: Event from thread not processed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62086 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-09-24 15:42:18 +00:00
Vadim Zeitlin
9a83f86094 Globally replace _T() with wxT().
Standardize on using a single macro across all wxWidgets sources and solve the name clash with Sun CC standard headers (see #10660).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61508 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-23 20:30:22 +00:00
Vadim Zeitlin
abd694417a remove wxMSW-specific (but copied into wxPalm too) wxAppTraits::AlwaysYield(), it's useless now that wxEventLoop is in wxBase
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@60734 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-05-24 19:39:40 +00:00
Vadim Zeitlin
ca21f825b5 no real changes, just correct a comment (closes #10563)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59459 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-03-09 23:05:25 +00:00
Francesco Montorsi
dde19c2180 second part of #10320: move wxApp event handling functions to wxEventLoopBase (in particular move Yield() functions); add backward compatible redirections to wxApp; update docs; remove global lists wxPendingEvents and wxPendingEventsLocker
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58911 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-02-15 14:25:08 +00:00
Vadim Zeitlin
c0c133e13b add wx-prefixed and semicolon-requiring versions of DECLARE_NO_{COPY,ASSIGN}_CLASS macros
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58757 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-02-08 11:45:59 +00:00
Vadim Zeitlin
a830dc4832 another compilation fix to switch in DoYield()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58665 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-02-04 21:25:00 +00:00
Vadim Zeitlin
365b9f162a compilation fixes to DoYield() after latest changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58662 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-02-04 20:36:20 +00:00
Francesco Montorsi
a552d2c3f2 update to the latest version of the patch at #10320 the wxApp::DoYield implementation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58658 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-02-04 18:02:03 +00:00
Francesco Montorsi
d48b06bd90 check in the 'selective yield' patch (see ticket #10320):
- implements YieldFor() with event filtering for wxMSW and wxGTK,
  adds TODO markers in other ports;
- replaces wxYield() in GTK's clipboard code with a wxTheApp->YieldFor() call, thus fixing possible reentrancies 
(and modifies clipboard sample to test synchronous IsSupported calls)
- replaces wxYieldIfNeeded() calls in wxProgressDialog with wxTheApp->YieldFor() calls, so that it processes only 
UI/user-input events, thus fixing the race condition visible in the "thread" sample
- documents the new functions


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58654 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-02-04 17:42:28 +00:00
Vadim Zeitlin
c76fb54570 move ClassRegInfo out from anonymous namespace to work around mingw32 4.3 bug
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58199 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-01-18 18:49:23 +00:00
Francesco Montorsi
d181e877b0 use a common m_isInsideYield flag instead of static booleans in all ports; add a IsYielding() test which can help to fix unwanted re-entrancies
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57637 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-29 15:03:39 +00:00
Vadim Zeitlin
5a9379d7b0 implement wxLoadedDLL, a safer alternative to wxDL_GET_LOADED (closes #10208)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57405 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-17 22:19:41 +00:00
Vadim Zeitlin
64accea5fa added .c_str() to wxStrlcpy() calls to fix wxUSE_STL build (closes #10252)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57391 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-12-17 09:49:42 +00:00