mirror of
https://github.com/reactos/reactos.git
synced 2024-09-22 18:45:51 +00:00
[BROWSEUI][SHELL32] Ignore navigation requests during browser destruction (#7161)
PR #7141 causes calls to IShellBrowser::BrowseObject while the shell browser is in the middle of destruction and the ShellView ListView has already been destroyed and DefView is not prepared for this.
This commit is contained in:
parent
f6a25d48d5
commit
6219a1abe5
|
@ -308,6 +308,7 @@ private:
|
|||
ShellSettings m_settings;
|
||||
SBFOLDERSETTINGS m_deffoldersettings;
|
||||
DWORD m_BrowserSvcFlags;
|
||||
bool m_Destroyed;
|
||||
public:
|
||||
#if 0
|
||||
ULONG InternalAddRef()
|
||||
|
@ -728,6 +729,7 @@ extern HRESULT CreateProgressDialog(REFIID riid, void **ppv);
|
|||
CShellBrowser::CShellBrowser()
|
||||
{
|
||||
m_BrowserSvcFlags = BSF_RESIZABLE | BSF_CANMAXIMIZE;
|
||||
m_Destroyed = false;
|
||||
fCurrentShellViewWindow = NULL;
|
||||
fCurrentDirectoryPIDL = NULL;
|
||||
fStatusBar = NULL;
|
||||
|
@ -1022,6 +1024,9 @@ HRESULT CShellBrowser::BrowseToPath(IShellFolder *newShellFolder,
|
|||
HRESULT hResult;
|
||||
//TODO: BOOL nohistory = m_BrowserSvcFlags & BSF_NAVNOHISTORY;
|
||||
|
||||
if (m_Destroyed)
|
||||
return S_FALSE;
|
||||
|
||||
if (newShellFolder == NULL)
|
||||
return E_INVALIDARG;
|
||||
|
||||
|
@ -3619,15 +3624,15 @@ LRESULT CShellBrowser::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &b
|
|||
LRESULT CShellBrowser::OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
|
||||
{
|
||||
HRESULT hr;
|
||||
SaveViewState();
|
||||
|
||||
/* The current thread is about to go down so render any IDataObject that may be left in the clipboard */
|
||||
OleFlushClipboard();
|
||||
|
||||
// TODO: rip down everything
|
||||
{
|
||||
m_Destroyed = true; // Ignore browse requests from Explorer band TreeView during destruction
|
||||
fToolbarProxy.Destroy();
|
||||
|
||||
SaveViewState();
|
||||
fCurrentShellView->DestroyViewWindow();
|
||||
fCurrentShellView->UIActivate(SVUIA_DEACTIVATE);
|
||||
|
||||
|
|
|
@ -3227,6 +3227,8 @@ HRESULT CDefView::LoadViewState()
|
|||
|
||||
HRESULT CDefView::SaveViewState(IStream *pStream)
|
||||
{
|
||||
if (!m_ListView.m_hWnd)
|
||||
return E_UNEXPECTED;
|
||||
int sortcol = MapListColumnToFolderColumn(m_sortInfo.ListColumn);
|
||||
PERSISTCLASSICVIEWSTATE cvs;
|
||||
cvs.SortColId = sortcol >= 0 ? (WORD)sortcol : 0;
|
||||
|
|
Loading…
Reference in a new issue