Commit Graph

84 Commits

Author SHA1 Message Date
Vadim Zeitlin
5bd765355b Make ConvertIShellItemToPath() public and rename
Extract a private function from src/msw/dirdlg.cpp, change its return
type to avoid losing information about the error and rename it to a more
clear name now that it's used outside of this file.

No real changes.
2022-06-03 01:35:30 +01:00
Vadim Zeitlin
d54bf06060 Dynamically load SHCreateItemFromParsingName() only once
Don't do it every time the dialog is shown.
2022-05-25 21:06:42 +01:00
Vadim Zeitlin
4bcbff00f3 Split wxIFileDialog::Show() in multiple functions
No real changes, just refactor the code to have separate ctor, setter
functions and Show() instead of doing everything in a single function.

This commit is best viewed ignoring whitespace-only changes.
2022-05-25 21:06:42 +01:00
Vadim Zeitlin
d77a373118 Extract wxIFileDialog::Show() from wxDirDialog code
Add a trivial class for showing an IFileDialog (and not just
IFileOpenDialog) and getting result(s) from it.

This class will be also used by wxFileDialog soon, but this commit only
updates wxDirDialog to use it.

This commit is best viewed with git --color-moved
--color-moved-ws=ignore-all-spac options.
2022-05-25 21:06:42 +01:00
Vadim Zeitlin
a623f34b39 Split GetPathsFromIFileOpenDialog() into 2 functions
Use different functions for the case of multiple paths and a single path
as they are rather different and even use methods of different
interfaces, which will become important soon.

Also pass just raw pointers to these functions, there is no reason to
use wxCOMPtr here as these functions don't take ownership of the
pointer but just use it during their execution.

No real changes yet.

This commit is best viewed ignoring whitespace-only changes.
2022-05-25 21:06:41 +01:00
Vadim Zeitlin
c05d62f94f Put private IFileDialog helpers into an anonymous namespace
Don't use extern linkage for these private helpers.

No real changes.
2022-05-25 21:06:41 +01:00
Vadim Zeitlin
9a17c09834 Pass FOS_xxx options to InitIFileOpenDialog() directly
This is more flexible and will allow using this function for the file
(and not just directory) dialog too in the future and makes the code
more readable and robust already because it removes the use of
non-obvious boolean parameters.

No real changes.
2022-05-25 21:06:41 +01:00
Vadim Zeitlin
a058951259 Skip disabling the correct window when showing MSW modal dialogs
The fix of a5a5b1bb15 (Fix restoring focus after showing native modal
dialogs in wxMSW, 2022-04-07) wasn't quite correct as it used the parent
window specified when showing the dialog, but it should have been using
the effective dialog parent, i.e. owner window in MSW terms.

Fix this by passing GetParentForModalDialog() to wxWindowDisabler, which
ensures that the preserve the same behaviour as before, including
refreshing the owner window after the dialog as dismissed -- which turns
out to be important because some existing code relies on this happening,
see #22362.

This commit should hopefully fix the last regression after d311c705d7
(Make native dialogs application-modal in wxMSW, 2022-04-01) and still
solve the original problem (see #11887), while preserving the original
behaviour when there is just one top-level window.
2022-05-12 18:52:02 +01:00
Vadim Zeitlin
a5a5b1bb15 Fix restoring focus after showing native modal dialogs in wxMSW
This fixes a regression introduced in d311c705d7 (Make native dialogs
application-modal in wxMSW, 2022-04-01) which resulted in a focus loss
after showing a modal dialog, as the parent window was still disabled
when the native modal dialog was closed and so focus couldn't be set to
any of its children and was simply lost as the result.

Fix this by not disabling the dialog parent ourselves, but leaving
handling the parent status to the native modal dialog, which already
takes care of disabling the parent it uses when it is shown and
re-enabling it when it is dismissed. Still use wxWindowDisabler to
disable all the other top level windows, if any, to ensure that the
modal dialogs are truly app-modal and not just window-modal, i.e. ensure
that #11887 still remains fixed.

Closes #22285.
2022-04-07 23:43:53 +01:00
Vadim Zeitlin
d311c705d7 Make native dialogs application-modal in wxMSW
Being able to use other application windows while a modal dialog was
shown was unexpected and could easily result in nasty reentrancies, and
was also inconsistent with the behaviour of ShowModal() for the dialogs
defined in wx, so disable all the windows, not just the parent one,
while showing the native modal dialogs too.

Closes #11887.
2022-04-01 02:50:38 +02:00
PB
318784fc1b Handle invalid paths better in MSW wxDirDialog
When setting a path including an invalid drive in IFileDialog-based
wxDirDialog, Windows returned ERROR_INVALID_DRIVE error. wxWidgets
treated this as an error and reverted to showing the old
ShowSHBrowseForFolder()-based dialog.

However, it is better to just ignore any errors produced when attempting
to set the default folder (as the code already did for ERROR_FILE_NOT_FOUND)
and show IFileDialog-based dialog anyway.

Closes https://github.com/wxWidgets/wxWidgets/pull/2356
2021-05-01 14:11:24 +02:00
PB
f57f214122 Remove BCC-specific hdrstop pragma from everywhere 2020-10-12 21:58:37 +02:00
Vadim Zeitlin
a47fd95e45 Avoid overriding wxDirDialog::GetPath[s]() unnecessarily
Don't duplicate practically the same code in all ports, just add m_paths
itself to the base class. The only drawback of doing this is that it's
unused in the ports not (yet) using it, but this saves enough code in
the aggregate to be worth it.
2020-07-10 03:52:15 +02:00
Vadim Zeitlin
d8f460200a Use wxCoTaskMemPtr<> instead of manual ::CoTaskMemFree()
No real changes, just use a smart pointer instead of manual memory
management calls.
2020-07-10 03:40:53 +02:00
PB
83aa1a19a5 Implement MSW support for wxDD_MULTIPLE and wxDD_SHOW_HIDDEN 2020-07-10 03:32:49 +02:00
Paul Cornett
948ddc6e0f Eliminate -Wcast-qual warnings with GCC and Clang
Use const_cast, mutable, and various other changes to avoid -Wcast-qual
2020-02-02 22:50:32 -08:00
Maarten Bent
8d72f3c5f4 Fix multiple definition error when using clang on Windows 2018-08-16 21:18:43 +02:00
Catalin
0ff8012c4a Remove checks for BIF_XXX
<https://msdn.microsoft.com/en-us/library/windows/desktop/bb773205(v=vs.85).aspx>
2017-03-05 15:08:40 +02:00
Catalin
eb1d11607c Remove check for BFFM_SETSELECTION
<https://msdn.microsoft.com/en-us/library/windows/desktop/bb762598(v=vs.85).aspx>
2017-03-05 03:04:51 +02:00
Vadim Zeitlin
baff0c942b Try to always give wxDirDialog a valid parent in wxMSW
Use the same GetParentForModalDialog() method as for the normal dialogs to
find the parent to use for this native dialog and ensure that it is shown
modally even if no parent is explicitly specified when constructing it.

Closes #17384.
2016-02-20 13:42:12 +01:00
Tobias Taschner
03b243da21 Remove checks GetComCtl32Version() aimed prior WinXP.
Windows XP always has ComCtl32Version 582 available. If the executable includes a manifest version 600 is available.
2015-09-27 19:07:19 +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
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
3e2a7cca72 Show new style Windows directory selector even for non-existent paths.
Passing an invalid initial directory to wxDirDialog resulted in using the old
style Windows directory selector dialog instead of the new style (file dialog
like) one, which was unintentional, as incorrect initial directory shouldn't
prevent the dialog from being shown.

Fix this by handling ERROR_FILE_NOT_FOUND error specifically and still showing
the new dialog, just without the (non existent) initial directory value, in
this case.

Closes #16430.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77464 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-08-24 15:31:27 +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
a489001977 Disable the use of new style wxDirDialog under Vista.
IFileDialog-based dialog has a bug making it return a wrong path sometimes
under Vista, disable its use there to avoid it.

Closes #16005.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76152 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2014-03-16 13:05:47 +00:00
Vadim Zeitlin
4a2d030adf Fix problem with COMDLG_FILTERSPEC declaration with MinGW-w64 4.8.
Forward declaring as a struct a symbol previously defined as a typedef results
in an error when using MinGW-w64 4.8.1, so forward declare the struct itself
instead.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74883 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2013-09-30 23:48:55 +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
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
5fce622a21 Fix wxUSE_IFILEDIALOG definition in wxUSE_DYNLIB_CLASS==0 case.
wxUSE_XXX symbols such as this one need to be defined as 0 and not as nothing
at all.

Closes #14509.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72182 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-07-23 15:03:52 +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
f797518e8f Unconditionally define IID_IShellItem in wxMSW sources.
This GUID may not be defined in uuid.lib even when
__IShellItem_INTERFACE_DEFINED__ is defined in the headers, so just define it
always to avoid any problems.

Closes #14244.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71395 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-05-09 14:24:51 +00:00
Vadim Zeitlin
6f3320bf3d No real changes, just some typo fixes for previous commits.
Fix wxCOMPtr comment and don't use "s_" for non-static variable.

Closes #14227.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71202 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-04-16 12:12:15 +00:00
Vadim Zeitlin
580ffdf4c0 Use new style directory selection dialog under Vista and later.
Use IFileDialog in wxDirDialog implementation if possible, it shows a much
more user-friendly dialog than the one used by SHBrowseForFolder().

Closes #11401.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71201 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2012-04-15 23:18:12 +00:00
Vadim Zeitlin
359cde15e0 Fix out of bounds string access in wxMSW wxDirDialog.
Using the initial directory of "/" (or "\\" or in fact any string consisting
solely of slashes and backslashes) resulted in a crash as the code incorrectly
tried to read the character before the beginning of the string.

Fix this by checking that the string is not empty before using s.end()-1
iterator.

Closes #12946.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66961 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-02-19 00:30:32 +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
Václav Slavík
c9f7896861 first phase of transition to unified Unicode build:
1. changed c_str() to return wxCStrData (implicitly convertible to wxChar*)
2. added template type-safe wrappers for vararg functions
3. added wxUniChar class representing single Unicode character
4. changed wxString::operator[] and wxString::iterator to return wxUniChar


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44865 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2007-03-17 10:26:10 +00:00
Włodzimierz Skiba
1ab440bc20 Include wx/scrolwin.h and wx/dirdlg.h according to precompiled headers of wx/wx.h (with other minor cleaning).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39613 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-06-07 11:44:19 +00:00
Vadim Zeitlin
ff3e84ffdc File/dir dialog styles and other changes (patch 1488371):
- check invalid combinations of styles in wxFileDialogBase::Create()
- use wxFD_XXX naming convention for wxFileDialog styles
- replaces wxDD_NEW_DIR_BUTTON with wxDD_DIR_MUST_EXIST
- removes #ifdef __WXGTK24__ / #endif blocks from wxGTK code
- removes wxFileDialogBase::Get/SetStyle and wxFileDialogBase::m_fileName
- renames wxDirDialogGTK to wxDirDialog


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39402 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-05-28 23:32:12 +00:00
Vadim Zeitlin
141d782d56 misc fixes for wxDirDialog; new wxDD_CHANGE_DIR flag (patch 1478051)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39079 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-05-06 20:10:11 +00:00
Julian Smart
08bce50191 Cleanup
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36986 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-01-18 22:02:49 +00:00
Włodzimierz Skiba
a71d815bbe __WIN95__ removed (used to differ win3.1 vs. 'modern' 95 look, nowadays always defined for WXMSW so useless). Minor cleanings and corrections for correct #includes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36466 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2005-12-19 10:47:44 +00:00
Mart Raudsepp
8907154c1a Nuke #pragma implementation/interface's
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35650 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2005-09-23 12:56:45 +00:00
Julian Smart
bcfced3616 Neither PocketPC nor SmartPhone have SHBrowseForFolder
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30863 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-12-05 18:56:29 +00:00
Vadim Zeitlin
6bb0970672 extracted LPITEMIDLIST wrappers in a separate header (also [will be] used by wxStdnardPaths)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30000 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-10-19 16:43:53 +00:00
Julian Smart
58e0338a8c Fixed the change that broke eVC++ compile (please don't blind-fix this)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29765 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-10-10 09:30:02 +00:00
Vadim Zeitlin
f07962f933 the #ifdef around BROWSEINFO.lpszTitle assignment is bogus; should be c_str() everywhere
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29761 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-10-09 21:48:14 +00:00
Julian Smart
02538f2d7a Fix for Standard WinCE SDK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29759 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-10-09 20:34:56 +00:00
Włodzimierz Skiba
3180bc0e63 Hardware defines spec.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29505 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2004-09-28 18:17:07 +00:00