projects
/
wxWidgets.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixes for non precompiled headers
[wxWidgets.git]
/
src
/
msw
/
dirdlg.cpp
diff --git
a/src/msw/dirdlg.cpp
b/src/msw/dirdlg.cpp
index 0177d1d3abf889eba1ad68472eadc88383ec2b52..f379d76255cd5bff362451e9f41bb4656753cbb4 100644
(file)
--- a/
src/msw/dirdlg.cpp
+++ b/
src/msw/dirdlg.cpp
@@
-1,5
+1,5
@@
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
-// Name: dirdlg.cpp
+// Name:
src/msw/
dirdlg.cpp
// Purpose: wxDirDialog
// Author: Julian Smart
// Modified by:
// Purpose: wxDirDialog
// Author: Julian Smart
// Modified by:
@@
-17,10
+17,6
@@
// headers
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
- #pragma implementation "dirdlg.h"
-#endif
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
@@
-28,35
+24,27
@@
#pragma hdrstop
#endif
#pragma hdrstop
#endif
-#if wxUSE_DIRDLG
&& !(defined(__SMARTPHONE__) && defined(__WXWINCE__))
+#if wxUSE_DIRDLG
-#if defined(__WIN95__) && !defined(__GNUWIN32_OLD__) && wxUSE_OLE
+#if wxUSE_OLE && !defined(__GNUWIN32_OLD__) && (!defined(__WXWINCE__) || \
+ (defined(__HANDHELDPC__) && (_WIN32_WCE >= 500)))
+
+#include "wx/dirdlg.h"
#ifndef WX_PRECOMP
#include "wx/utils.h"
#include "wx/dialog.h"
#ifndef WX_PRECOMP
#include "wx/utils.h"
#include "wx/dialog.h"
- #include "wx/dirdlg.h"
#include "wx/log.h"
#include "wx/app.h" // for GetComCtl32Version()
#endif
#include "wx/msw/private.h"
#include "wx/log.h"
#include "wx/app.h" // for GetComCtl32Version()
#endif
#include "wx/msw/private.h"
-
-#ifdef __WXWINCE__
-#include <winreg.h>
-#include <objbase.h>
-#include <shlguid.h>
-#endif
-#include <shlobj.h> // Win95 shell
+#include "wx/msw/wrapshl.h"
// ----------------------------------------------------------------------------
// constants
// ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
// constants
// ----------------------------------------------------------------------------
-#ifndef MAX_PATH
- #define MAX_PATH 4096 // be generous
-#endif
-
#ifndef BIF_NEWDIALOGSTYLE
#define BIF_NEWDIALOGSTYLE 0x0040
#endif
#ifndef BIF_NEWDIALOGSTYLE
#define BIF_NEWDIALOGSTYLE 0x0040
#endif
@@
-79,9
+67,6
@@
IMPLEMENT_CLASS(wxDirDialog, wxDialog)
// private functions prototypes
// ----------------------------------------------------------------------------
// private functions prototypes
// ----------------------------------------------------------------------------
-// free the parameter
-static void ItemListFree(LPITEMIDLIST pidl);
-
// the callback proc for the dir dlg
static int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lp,
LPARAM pData);
// the callback proc for the dir dlg
static int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lp,
LPARAM pData);
@@
-106,7
+91,7
@@
wxDirDialog::wxDirDialog(wxWindow *parent,
m_message = message;
m_parent = parent;
m_message = message;
m_parent = parent;
- SetStyle(style);
+ Set
Window
Style(style);
SetPath(defaultPath);
}
SetPath(defaultPath);
}
@@
-140,8
+125,9
@@
int wxDirDialog::ShowModal()
bi.hwndOwner = parent ? GetHwndOf(parent) : NULL;
bi.pidlRoot = NULL;
bi.pszDisplayName = NULL;
bi.hwndOwner = parent ? GetHwndOf(parent) : NULL;
bi.pidlRoot = NULL;
bi.pszDisplayName = NULL;
- // WinCE StandardSDK requires .c_str() form
-#if defined(__WXWINCE__) && (defined(__POCKETPC__) || defined(__SMARTPHONE__))
+ // Please don't change this without checking it compiles
+ // with eVC++ first.
+#if defined(__POCKETPC__) || defined(__SMARTPHONE__)
bi.lpszTitle = m_message.mb_str();
#else
bi.lpszTitle = m_message.c_str();
bi.lpszTitle = m_message.mb_str();
#else
bi.lpszTitle = m_message.c_str();
@@
-163,7
+149,7
@@
int wxDirDialog::ShowModal()
// is also the only way to have a resizable dialog
//
// "new" style is only available in the version 5.0+ of comctl32.dll
// is also the only way to have a resizable dialog
//
// "new" style is only available in the version 5.0+ of comctl32.dll
- const bool needNewDir =
HasFlag(wxDD_NEW_DIR_BUTTON
);
+ const bool needNewDir =
!HasFlag(wxDD_DIR_MUST_EXIST
);
if ( (needNewDir || HasFlag(wxRESIZE_BORDER)) && (verComCtl32 >= 500) )
{
if (needNewDir)
if ( (needNewDir || HasFlag(wxRESIZE_BORDER)) && (verComCtl32 >= 500) )
{
if (needNewDir)
@@
-185,12
+171,9
@@
int wxDirDialog::ShowModal()
}
// do show the dialog
}
// do show the dialog
-
LPITEMIDLIST pidl = SHBrowseForFolder(&bi
);
+
wxItemIdList pidl(SHBrowseForFolder(&bi)
);
- if ( bi.pidlRoot )
- {
- ItemListFree((LPITEMIDLIST)bi.pidlRoot);
- }
+ wxItemIdList::Free((LPITEMIDLIST)bi.pidlRoot);
if ( !pidl )
{
if ( !pidl )
{
@@
-198,18
+181,13
@@
int wxDirDialog::ShowModal()
return wxID_CANCEL;
}
return wxID_CANCEL;
}
-
BOOL ok = SHGetPathFromIDList(pidl, wxStringBuffer(m_path, MAX_PATH)
);
+
m_path = pidl.GetPath(
);
- ItemListFree(pidl);
-
- if ( !ok )
- {
- wxLogLastError(wxT("SHGetPathFromIDList"));
-
- return wxID_CANCEL;
- }
+ // change current working directory if asked so
+ if (HasFlag(wxDD_CHANGE_DIR))
+ wxSetWorkingDirectory(m_path);
- return wxID_OK;
+ return
m_path.empty() ? wxID_CANCEL :
wxID_OK;
}
// ----------------------------------------------------------------------------
}
// ----------------------------------------------------------------------------
@@
-221,15
+199,16
@@
BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lp, LPARAM pData)
{
switch(uMsg)
{
{
switch(uMsg)
{
+#ifdef BFFM_SETSELECTION
case BFFM_INITIALIZED:
// sent immediately after initialisation and so we may set the
// initial selection here
//
// wParam = TRUE => lParam is a string and not a PIDL
case BFFM_INITIALIZED:
// sent immediately after initialisation and so we may set the
// initial selection here
//
// wParam = TRUE => lParam is a string and not a PIDL
-#ifndef __WXWINCE__
::SendMessage(hwnd, BFFM_SETSELECTION, TRUE, pData);
::SendMessage(hwnd, BFFM_SETSELECTION, TRUE, pData);
-#endif
break;
break;
+#endif // BFFM_SETSELECTION
+
case BFFM_SELCHANGED:
// note that this doesn't work with the new style UI (MSDN doesn't
case BFFM_SELCHANGED:
// note that this doesn't work with the new style UI (MSDN doesn't
@@
-267,27
+246,6
@@
BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lp, LPARAM pData)
return 0;
}
return 0;
}
-
-static void ItemListFree(LPITEMIDLIST pidl)
-{
- if ( pidl )
- {
- LPMALLOC pMalloc;
- SHGetMalloc(&pMalloc);
- if ( pMalloc )
- {
- pMalloc->Free(pidl);
- pMalloc->Release();
- }
- else
- {
- wxLogLastError(wxT("SHGetMalloc"));
- }
- }
-}
-
-#else
- #include "../generic/dirdlgg.cpp"
#endif // compiler/platform on which the code here compiles
#endif // compiler/platform on which the code here compiles
-#endif // wxUSE_DIRDLG
&& !(__SMARTPHONE__ && __WXWINCE__)
+#endif // wxUSE_DIRDLG