Skip to content

Commit d039653

Browse files
committed
[SHELL32] CDefView: Respect item attributes
1 parent 91e63ee commit d039653

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

dll/win32/shell32/CDefView.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1587,6 +1587,26 @@ LRESULT CDefView::OnExplorerCommand(UINT uCommand, BOOL bUseSelection)
15871587
if (FAILED_UNEXPECTEDLY( hResult))
15881588
goto cleanup;
15891589

1590+
if (bUseSelection)
1591+
{
1592+
// FIXME: we should cache this....
1593+
SFGAOF rfg = SFGAO_BROWSABLE | SFGAO_CANCOPY | SFGAO_CANLINK | SFGAO_CANMOVE | SFGAO_CANDELETE | SFGAO_CANRENAME | SFGAO_HASPROPSHEET | SFGAO_FILESYSTEM | SFGAO_FOLDER;
1594+
hResult = m_pSFParent->GetAttributesOf(m_cidl, m_apidl, &rfg);
1595+
if (FAILED_UNEXPECTEDLY(hResult))
1596+
return 0;
1597+
1598+
if (!(rfg & SFGAO_CANMOVE) && uCommand == FCIDM_SHVIEW_CUT)
1599+
return 0;
1600+
if (!(rfg & SFGAO_CANCOPY) && uCommand == FCIDM_SHVIEW_COPY)
1601+
return 0;
1602+
if (!(rfg & SFGAO_CANDELETE) && uCommand == FCIDM_SHVIEW_DELETE)
1603+
return 0;
1604+
if (!(rfg & SFGAO_CANRENAME) && uCommand == FCIDM_SHVIEW_RENAME)
1605+
return 0;
1606+
if (!(rfg & SFGAO_HASPROPSHEET) && uCommand == FCIDM_SHVIEW_PROPERTIES)
1607+
return 0;
1608+
}
1609+
15901610
InvokeContextMenuCommand(uCommand);
15911611

15921612
cleanup:
@@ -1819,6 +1839,9 @@ LRESULT CDefView::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHand
18191839
case FCIDM_SHVIEW_PROPERTIES:
18201840
case FCIDM_SHVIEW_COPYTO:
18211841
case FCIDM_SHVIEW_MOVETO:
1842+
if (SHRestricted(REST_NOVIEWCONTEXTMENU))
1843+
return 0;
1844+
18221845
return OnExplorerCommand(dwCmdID, TRUE);
18231846

18241847
case FCIDM_SHVIEW_INSERT:

0 commit comments

Comments
 (0)