projects
/
wxWidgets.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
don't generate duplicate event for numpad keys with numlock on (patch 1448853)
[wxWidgets.git]
/
src
/
msw
/
dirdlg.cpp
diff --git
a/src/msw/dirdlg.cpp
b/src/msw/dirdlg.cpp
index f3f6771ae7b3ab442c1f20bd94efbb6882a8dba7..018f4e13239fdc33c8e9c4037c604a9ae68cb35c 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"
@@
-30,7
+26,8
@@
#if wxUSE_DIRDLG
#if wxUSE_DIRDLG
-#if defined(__WIN95__) && !defined(__GNUWIN32_OLD__) && wxUSE_OLE
+#if wxUSE_OLE && !defined(__GNUWIN32_OLD__) && (!defined(__WXWINCE__) || \
+ (defined(__HANDHELDPC__) && (_WIN32_WCE >= 500)))
#ifndef WX_PRECOMP
#include "wx/utils.h"
#ifndef WX_PRECOMP
#include "wx/utils.h"
@@
-41,22
+38,12
@@
#endif
#include "wx/msw/private.h"
#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
+66,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
+90,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,7
+124,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;
-#ifdef __WXWINCE__
+ // 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();
@@
-184,12
+170,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 )
{
@@
-197,18
+180,13
@@
int wxDirDialog::ShowModal()
return wxID_CANCEL;
}
return wxID_CANCEL;
}
- BOOL ok = SHGetPathFromIDList(pidl, wxStringBuffer(m_path, MAX_PATH));
-
- ItemListFree(pidl);
+ m_path = pidl.GetPath();
- if ( !ok )
- {
- wx
LogLastError(wxT("SHGetPathFromIDList")
);
+ // change current working directory if asked so
+ if (HasFlag(wxDD_CHANGE_DIR))
+ wx
SetWorkingDirectory(m_path
);
- return wxID_CANCEL;
- }
-
- return wxID_OK;
+ return m_path.empty() ? wxID_CANCEL : wxID_OK;
}
// ----------------------------------------------------------------------------
}
// ----------------------------------------------------------------------------
@@
-220,15
+198,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
@@
-266,27
+245,7
@@
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 // wxUSE_DIRDLG
#endif // compiler/platform on which the code here compiles
#endif // wxUSE_DIRDLG
+