diff --git a/dll/win32/browseui/addresseditbox.cpp b/dll/win32/browseui/addresseditbox.cpp index 2a0cfa23c04..2a3448a99a3 100644 --- a/dll/win32/browseui/addresseditbox.cpp +++ b/dll/win32/browseui/addresseditbox.cpp @@ -41,7 +41,8 @@ TODO: CAddressEditBox::CAddressEditBox() : fCombobox(NULL, this, 1), - fEditWindow(NULL, this, 1) + fEditWindow(NULL, this, 1), + fSite(NULL) { } @@ -69,6 +70,7 @@ HRESULT STDMETHODCALLTYPE CAddressEditBox::Init(HWND comboboxEx, HWND editContro { fCombobox.SubclassWindow(comboboxEx); fEditWindow.SubclassWindow(editControl); + fSite = param18; return S_OK; } @@ -82,7 +84,28 @@ HRESULT STDMETHODCALLTYPE CAddressEditBox::SetCurrentDir(long paramC) HRESULT STDMETHODCALLTYPE CAddressEditBox::ParseNow(long paramC) { - return E_NOTIMPL; + WCHAR address[4096]; + ULONG eaten; + LPITEMIDLIST pidl; + ULONG attributes; + HRESULT hr; + HWND topLevelWindow; + + CComPtr pisb; + hr = IUnknown_QueryService(fSite, SID_SShellBrowser, IID_PPV_ARG(IShellBrowser, &pisb)); + + IUnknown_GetWindow(pisb, &topLevelWindow); + + GetWindowText(fCombobox.m_hWnd, address, 4095); + + CComPtr psfDesktop; + hr = SHGetDesktopFolder(&psfDesktop); + hr = psfDesktop->ParseDisplayName(topLevelWindow, NULL, address, &eaten, &pidl, &attributes); + if (SUCCEEDED(hr)) + { + hr = pisb->BrowseObject(pidl, 0); + } + return hr; } HRESULT STDMETHODCALLTYPE CAddressEditBox::Execute(long paramC) diff --git a/dll/win32/browseui/addresseditbox.h b/dll/win32/browseui/addresseditbox.h index eeff524a63f..4e6b4172afb 100644 --- a/dll/win32/browseui/addresseditbox.h +++ b/dll/win32/browseui/addresseditbox.h @@ -35,6 +35,7 @@ class CAddressEditBox : private: CContainedWindow fCombobox; CContainedWindow fEditWindow; + CComPtr fSite; public: CAddressEditBox(); ~CAddressEditBox(); diff --git a/dll/win32/browseui/internettoolbar.cpp b/dll/win32/browseui/internettoolbar.cpp index 0a9604e3f3f..eba24bdf3cd 100644 --- a/dll/win32/browseui/internettoolbar.cpp +++ b/dll/win32/browseui/internettoolbar.cpp @@ -860,6 +860,8 @@ HRESULT STDMETHODCALLTYPE CInternetToolbar::InitNew() hResult = menuOleWindow->GetWindow(&fMenuBandWindow); fMenuBar.Attach(menuBar.Detach()); // transfer the ref count + // FIXME: The ros Rebar does not properly support fixed-size items such as the brandband, + // and it will put them in their own row, sized to take up the whole row. #if 0 /* Create and attach the brand/logo to the rebar */ hResult = CreateBrandBand(&logoBar); diff --git a/dll/win32/shell32/shlview.cpp b/dll/win32/shell32/shlview.cpp index aa5de1029fe..f1b4b4a0c88 100644 --- a/dll/win32/shell32/shlview.cpp +++ b/dll/win32/shell32/shlview.cpp @@ -1419,6 +1419,8 @@ void CDefView::DoActivate(UINT uState) { MergeFileMenu(mii.hSubMenu); } + + ::SetFocus(m_hWndList); } TRACE("-- before fnSetMenuSB\n");