Commit Graph

83 Commits

Author SHA1 Message Date
Vadim Zeitlin
69e48f036b Add wxApp::GetMainTopWindow() wrapper
This trivial function just allows to avoid checking if wxTheApp is not
null before calling GetTopWindow() on it.

Replace the existing "wxTheApp && wxTheApp->GetTopWindow()" calls with
wxApp::GetMainTopWindow().

No real changes.
2021-03-07 23:51:54 +01:00
PB
f57f214122 Remove BCC-specific hdrstop pragma from everywhere 2020-10-12 21:58:37 +02:00
Maarten Bent
13cb9d41d8 Require wxWindow parameter for wxNativeFontInfo constructor in MSW
Use the DPI of the window to determine the correct font pointSize.

To not break user code, add a default argument when not building the library.
2019-09-05 23:14:25 +02:00
Maarten Bent
10fec15751 Calculate correct font pointSize for GetNonClientMetrics
wxNativeFontInfo constructor calculates the pointSize using the main screen DPI.
But lfHeight returned by GetNonClientMetrics is based on the window DPI.
2019-08-25 22:01:56 +02:00
Maarten Bent
0a79c48631 Use DPI Aware wxSystemParametersInfo
Require a wxWindow when requesting GetNonClientMetrics.
If no wxWindow is known, use wxTheApp->GetTopWindow().
2019-07-15 00:00:19 +02:00
Maarten Bent
f74d756ca5 Use DPI Aware wxGetSystemMetrics
If no wxWindow is known, use wxTheApp->GetTopWindow().
Also use a wxWindow for all wxSystemSettings::GetMetric calls.
2019-07-15 00:00:18 +02:00
Vadim Zeitlin
2aef6570bb Add TempHWNDSetter RAII helper to wxMSW and use it
No real changes, just replace pairs of SetHWND(hwnd)/SetHWND(0) calls
with the use of TempHWNDSetter.
2019-04-25 17:12:41 +02:00
Maarten Bent
eb23d4735c Fix unannotated fall-through warnings 2018-11-25 21:29:37 +01:00
Vadim Zeitlin
4ad9cde380 Use the new wxDisplay(wxWindow*) ctor to simplify the code
Make the code simpler and, in a couple of places where the fall back to
the primary display in case wxDisplay::GetFromWindow() returned -1 was
missing, also more correct.
2018-11-01 00:06:34 +01:00
René Kijewski
82de2bba0f Rename variable CHAR_WIDTH in src/msw/msgdlg.cpp
When compiling wxWidgets with MinGW64, CHAR_WIDTH can be already defined as a
macro, avoid clashing with it by renaming our variable with the same name.

Closes https://github.com/wxWidgets/wxWidgets/pull/383
2017-01-06 19:08:44 +01:00
Gavs64
ab95207c78 Fix message boxes with wxYES_NO|wxCANCEL style in wxMSW
Windows CE code removal in 8282c1be0f (see
https://github.com/wxWidgets/wxWidgets/pull/81) broke message boxes showing
"Yes", "No" and "Cancel" buttons at once, add accidentally removed code back.

Closes https://github.com/wxWidgets/wxWidgets/pull/139
2015-11-29 16:22:16 +01: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
Paul Cornett
36e31e515e avoid shadowed variable warnings with VS2015 2015-07-24 20:56:11 -07: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
c76ad77c01 Don't use right-to-left markers in wxMSW wxMessageDialog code.
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
2014-12-05 22:18:29 +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
eb171a4592 Don't dereference wxTheApp unconditionally when showing wxMessageDialog.
The application might not yet (or already) exist, don't crash in this case.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78234 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-12-05 22:18:16 +00:00
Tim Kosse
80d58a2268 Remove the unused anonymous function OffsetWindow to fix a compiler warning.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76700 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-06-14 20:23:22 +00:00
Vadim Zeitlin
9b31387508 Merge the changes from 3.0 branch.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@75178 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-11-12 18:06:37 +00:00
Václav Slavík
d9b22d8fff wxMSW: return correct value from wxMessageDialog::GetReturnCode().
wxMessageDialog's native code didn't call SetReturnCode() as it should.
As a result, it didn't work with ShowWindowModal().

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74776 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-09-06 17:09:23 +00:00
Vadim Zeitlin
f592a93992 Compilation fix for wxMSW with wxUSE_MSGBOX_HOOK==0.
Include wx/fontutil.h unconditionally, it's needed outside message box hook
code.

Closes #15395.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74643 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-08-07 15:44:56 +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
691745ab41 Add a public wxModalDialogHook class for intercepting modal dialogs.
Extract wxModalDialogHook from wx/testing.h into its own wx/modalhook.h,
extend it to allow to be notified not only about showing modal dialogs but
also about dismissing them and document it and show its use in the dialogs
sample.

Also replace all the WX_TESTING_SHOW_MODAL_HOOK macros occurrences with
WX_HOOK_MODAL_DIALOG.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74037 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-05-20 13:15:41 +00:00
Vadim Zeitlin
67315c8bf9 Add support for wxICON_AUTH_NEEDED to wxMessageDialog.
Allow showing the standard "Authentication needed" dialog in the message boxes
under MSW.

Closes #15121.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73877 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-04-29 12:54:08 +00:00
Václav Slavík
643e9cf9f6 Add wxTEST_DIALOG for testing of modal dialogs.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72837 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-11-01 16:45:11 +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
5f519da23d Try to avoid truncation of the message in wxMSW wxMessageDialog.
Use (documented but undefined) TDF_SIZE_TO_CONTENT flag under Windows Vista/7
to reduce the chance that Windows truncates or ellipsizes the message text if
it can't wrap it.

Truncation can still happen for very long words but there doesn't seem to be
any drawbacks to using TDF_SIZE_TO_CONTENT and it does avoid truncation in at
least some cases.

This also improves the situation for wxRichMessageDialog and wxProgressDialog.

Closes #13843.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70409 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-01-20 12:30:08 +00:00
Vadim Zeitlin
c22ce32199 Don't replace non default wxMessageDialog labels with default translations.
The code translating the button labels of wxMessageBox to the application
language was overeager and replaced even the custom labels with the
translations of the default ones.

This shouldn't be done, of course, so simply check that no custom labels had
been set before translating.

See #10962.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69591 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-10-30 16:22:30 +00:00
Vadim Zeitlin
7112cdd1f3 Add support for wxHELP button to wxMessageDialog.
Implement support for wxHELP for wxMSW, wxGTK and wxOSX/Cocoa (at least when
showing the message box from the main thread, there doesn't seem to be any way
to show more than three buttons with CFUserNotificationDisplayAlert() so
"Help" button is not supported when using it).

This is useful not only on its own, i.e. to allow the user to ask for help,
but also because it brings the total number of buttons supported by the
message dialog to 4, meaning that more choices can be offered to the user
(which is rarely, but not quite never, useful).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68537 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-08-04 22:53:42 +00:00
Dimitri Schoolwerth
dc8c61bef7 Fixed wxMessageBox with only an OK button returning wxCANCEL under MSW.
Since r67620 when wxMessageDialog::ShowModal uses a native task dialog and only has an OK button it actually uses a Cancel button, this resulted in the function's return value wrongly changing to wxID_CANCEL. Fix this by handling the special case with only an OK button and return wxID_OK instead of wxID_CANCEL (and thus wxMessageBox, which uses wxMessageDialog::ShowModal, returning wxOK instead of wxCANCEL).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67771 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-05-20 22:48:17 +00:00
Vadim Zeitlin
18c8dd2be2 Ensure that message boxes with only "OK" can be closed with Escape in wxMSW.
The native task dialog doesn't allow using Escape (nor Alt-F4 but this is less
annoying) to close it unless it has a Cancel button, so by default the dialogs
with only "OK" couldn't be closed with Escape.

Work around this by creating a Cancel button with "OK" label instead. This is
not ideal but there doesn't seem to be any other way to make this work.

See #12501.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67620 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-04-26 22:57:30 +00:00
Vadim Zeitlin
3672f9d04d Avoid dereferencing invalid iterator in wxMessageDialog code.
The iterator wxString::rbegin().base()+1 is invalid so check that we don't use
it.

Closes #13126.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67407 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-04-06 14:37:36 +00:00
Paul Cornett
d2bc87252a non-pch build fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66613 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-01-07 04:50:53 +00:00
Vadim Zeitlin
00bc0d1734 VC6 compilation fix: don't return void values.
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
2010-11-23 13:12:33 +00:00
Vadim Zeitlin
dd53b347de Don't try to center task dialogs under Windows.
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
2010-11-22 12:49:07 +00:00
Vadim Zeitlin
5b1985a920 Check for task dialog availability even under Vista and later.
Task dialogs are not always available under Vista and later Windows versions
because we might not be using the right (i.e. 6+) version of comctl32.dll.

Improve the check for task dialog availability and fall back to the classic
message box if we can't use it.

Closes #12553.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65816 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-10-15 23:46:19 +00:00
Vadim Zeitlin
aebe0d3b6c Improve main and extended messages handling in new wxMSW wxMessageDialog.
Don't use the main message if there is no extended message: this looks bad as
the main message is emphasized to contrast with the extended one which doesn't
make sense visually if there is no extended message.

Also recognize the common use of wxMessageBox() with a multiline text composed
of the first string that plays the role of the main message with the rest
being the extended one and handle this appropriately automatically. This
results in a better appearance by default for a lot of message boxes,
including even the one in our own minimal sample.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65466 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-09-04 13:33:29 +00:00
Vadim Zeitlin
ede7b01760 Provide a task-dialog based wxMSW wxMessageDialog implementation.
Use the task dialog instead of the legacy message box for wxMessageDialog
implementation under wxMSW on recent (Vista and later) Windows versions.

As part of this change, remove wxMessageDialogWithCustomLabels and integrate
its functionality in wxMessageDialogBase itself as it's now used by all
platforms.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65348 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-08-18 22:48:28 +00:00
Vadim Zeitlin
cdc48273b4 Fix bug with using uninitialized flags in GetParentForModalDialog().
GetParentForModalDialog() was called from the ctor initialized list before
m_windowStyle could be initialized by the base class ctor in several different
places, meaning that the check for wxDIALOG_NO_PARENT in this function was
using uninitialized variable.

Fix this by passing the style parameter explicitly to this function to allow
using it from derived class ctors. Still keep an overload which uses the
actual window parent and flags which is simpler to use for later calls to this
function.

Thanks valgrind for finding this one.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64019 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-04-18 00:05:37 +00:00
Vadim Zeitlin
a4578b0ced Add wxMessageDialog::GetEffectiveIcon() and use it in all ports.
Remove code duplication and inconsistencies among different ports by using a
single function in the base class for the determination of the effective icon
style to use, correctly handling both wxICON_NONE and the absence of any
wxICON_XXX styles.

Closes #11822.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63725 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-03-20 13:18:23 +00:00
Vadim Zeitlin
b76b3d2854 Use an appropriate icon automatically in wxMSW wxMessageDialog.
wxMessageBox() functions uses wxICON_QUESTION or wxICON_INFORMATION
automatically if no other icon style (including wxICON_NONE) is specified but
wxMessageDialog under MSW didn't do this, unlike under e.g. wxGTK.

Fix this by also determining the appropriate icon automatically in
wxMessageDialog itself in wxMSW.

Ideally we'd do this in all ports wxMessageDialog implementations and remove
the code doing it from wxMessageBox() but right now it's still needed for the
platforms other than wxMSW and wxGTK.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63683 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-03-14 14:15:49 +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
Vadim Zeitlin
d3019e4d0a Fix bug in wxMSW wxMessageDialog when the text was empty.
Don't crash in ReplaceStaticWithEdit() dereferencing an invalid end()-1
iterator in this case, use the always valid rbegin() instead.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63377 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2010-02-03 21:07:38 +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
42c097b83e translate wxMessageDialog labels to the language of the current locale (closes #10962)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61319 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-07-05 11:48:01 +00:00
Vadim Zeitlin
8bda0ec6a3 remove wxMSW-specific FindSuitableParent() and use GetParentForModalDialog() everywhere; extend it with additional checks and remove redundant ones elsewhere
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@60559 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2009-05-09 12:26:15 +00:00
Vadim Zeitlin
cc5e20f838 STL build fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55571 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-09-12 15:47:06 +00:00
Vadim Zeitlin
f45d6ade08 added wxCANCEL_DEFAULT style to wxMessageDialog (only implemented for MSW for now); also tightened up the style checks in wxMessageDialog::SetMessageDialogStyle()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55561 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-09-11 23:37:35 +00:00
Vadim Zeitlin
4b02d42e37 replace the static control in wxMessageDialog with an edit control with a vertical scrollbar if the message box is too big to fit on the screen
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55544 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-09-11 10:39:49 +00:00
Vadim Zeitlin
b6bcaaca0f adjust the labels before centering the dialog as doing it can change the dialog size
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55487 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2008-09-05 19:28:38 +00:00