From: David Quintana Date: Tue, 19 Aug 2014 21:30:04 +0000 (+0000) Subject: [BROWSEUI] X-Git-Tag: backups/shell-experiments@75904~175 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=9ea7e65b5b7a649b27bf92161c5fee43b2cd20f7 [BROWSEUI] [SHELL32] * Fix accelerator handling. * Disallow accelerators if renaming. svn path=/branches/shell-experiments/; revision=63905 --- diff --git a/dll/win32/browseui/shellbrowser.cpp b/dll/win32/browseui/shellbrowser.cpp index 9a0a8f1913b..39353d5120d 100644 --- a/dll/win32/browseui/shellbrowser.cpp +++ b/dll/win32/browseui/shellbrowser.cpp @@ -2563,13 +2563,7 @@ HRESULT STDMETHODCALLTYPE CShellBrowser::v_MayTranslateAccelerator(MSG *pmsg) return S_OK; } - if (fCurrentShellView->TranslateAcceleratorW(pmsg) != S_OK) - { - if (TranslateAcceleratorSB(pmsg, 0) != S_OK) - return S_FALSE; - return S_OK; - } - return S_OK; + return fCurrentShellView->TranslateAcceleratorW(pmsg); } HRESULT STDMETHODCALLTYPE CShellBrowser::_GetBorderDWHelper(IUnknown *punkSrc, LPRECT lprectBorder, BOOL bUseHmonitor) diff --git a/dll/win32/shell32/shlview.cpp b/dll/win32/shell32/shlview.cpp index 34ee529cdd8..ee3dd030eb2 100644 --- a/dll/win32/shell32/shlview.cpp +++ b/dll/win32/shell32/shlview.cpp @@ -105,6 +105,8 @@ class CDefView : POINT m_ptLastMousePos; /* Mouse position at last DragOver call */ // CComPtr m_pCM; + + BOOL m_isEditing; public: CDefView(); ~CDefView(); @@ -173,7 +175,6 @@ class CDefView : virtual HRESULT STDMETHODCALLTYPE GetArrangeParam(LPARAM *sort); virtual HRESULT STDMETHODCALLTYPE ArrangeGrid(); virtual HRESULT STDMETHODCALLTYPE AutoArrange(); - virtual HRESULT STDMETHODCALLTYPE IShellFolderView_GetAutoArrange(); virtual HRESULT STDMETHODCALLTYPE AddObject(PITEMID_CHILD pidl, UINT *item); virtual HRESULT STDMETHODCALLTYPE GetObject(PITEMID_CHILD *pidl, UINT item); virtual HRESULT STDMETHODCALLTYPE RemoveObject(PITEMID_CHILD pidl, UINT *item); @@ -376,6 +377,7 @@ CDefView::CDefView() m_cScrollDelay = 0; m_ptLastMousePos.x = 0; m_ptLastMousePos.y = 0; + m_isEditing = FALSE; } CDefView::~CDefView() @@ -1795,6 +1797,7 @@ LRESULT CDefView::OnNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandl m_pSFParent->GetAttributesOf(1, (LPCITEMIDLIST*)&pidl, &dwAttr); if (SFGAO_CANRENAME & dwAttr) { + m_isEditing = TRUE; return FALSE; } return TRUE; @@ -1803,6 +1806,9 @@ LRESULT CDefView::OnNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandl case LVN_ENDLABELEDITW: { TRACE("-- LVN_ENDLABELEDITW %p\n", this); + + m_isEditing = FALSE; + if (lpdi->item.pszText) { HRESULT hr; @@ -1991,6 +1997,9 @@ HRESULT WINAPI CDefView::ContextSensitiveHelp(BOOL fEnterMode) */ HRESULT WINAPI CDefView::TranslateAccelerator(LPMSG lpmsg) { + if (m_isEditing) + return S_FALSE; + if (lpmsg->message >= WM_KEYFIRST && lpmsg->message <= WM_KEYLAST) { if (::TranslateAcceleratorW(m_hWnd, m_hAccel, lpmsg) != 0) @@ -1999,7 +2008,7 @@ HRESULT WINAPI CDefView::TranslateAccelerator(LPMSG lpmsg) TRACE("-- key=0x04%lx\n", lpmsg->wParam) ; } - return S_FALSE; /* not handled */ + return m_pShellBrowser->TranslateAcceleratorSB(lpmsg, 0); } HRESULT WINAPI CDefView::EnableModeless(BOOL fEnable) @@ -2454,12 +2463,6 @@ HRESULT STDMETHODCALLTYPE CDefView::AutoArrange() return E_NOTIMPL; } -HRESULT STDMETHODCALLTYPE CDefView::IShellFolderView_GetAutoArrange() -{ - TRACE("(%p)\n", this); - return GetAutoArrange(); -} - HRESULT STDMETHODCALLTYPE CDefView::AddObject(PITEMID_CHILD pidl, UINT *item) { FIXME("(%p)->(%p %p) stub\n", this, pidl, item);