mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 16:36:33 +00:00
[rosctrls.h] CListView: Add Arrange method
[SHELL32] CDefView: Start implementing Auto arrange. So far its effect is only shown when the browser window resizes.
This commit is contained in:
parent
410cfbfe15
commit
c69ef281c0
2 changed files with 29 additions and 22 deletions
|
@ -125,7 +125,6 @@ class CDefView :
|
|||
HRESULT OnStateChange(UINT uFlags);
|
||||
void UpdateStatusbar();
|
||||
void CheckToolbar();
|
||||
void SetStyle(DWORD dwAdd, DWORD dwRemove);
|
||||
BOOL CreateList();
|
||||
void UpdateListColors();
|
||||
BOOL InitList();
|
||||
|
@ -500,18 +499,6 @@ void CDefView::UpdateStatusbar()
|
|||
*
|
||||
* ##### helperfunctions for initializing the view #####
|
||||
*/
|
||||
/**********************************************************
|
||||
* change the style of the listview control
|
||||
*/
|
||||
void CDefView::SetStyle(DWORD dwAdd, DWORD dwRemove)
|
||||
{
|
||||
DWORD tmpstyle;
|
||||
|
||||
TRACE("(%p)\n", this);
|
||||
|
||||
tmpstyle = ::GetWindowLongPtrW(m_ListView, GWL_STYLE);
|
||||
::SetWindowLongPtrW(m_ListView, GWL_STYLE, dwAdd | (tmpstyle & ~dwRemove));
|
||||
}
|
||||
|
||||
/**********************************************************
|
||||
* ShellView_CreateList()
|
||||
|
@ -1193,10 +1180,18 @@ HRESULT CDefView::FillArrangeAsMenu(HMENU hmenuArrange)
|
|||
MF_BYCOMMAND);
|
||||
|
||||
if (m_FolderSettings.ViewMode == FVM_DETAILS || m_FolderSettings.ViewMode == FVM_LIST)
|
||||
{
|
||||
EnableMenuItem(hmenuArrange, FCIDM_SHVIEW_AUTOARRANGE, MF_BYCOMMAND | MF_GRAYED);
|
||||
}
|
||||
else
|
||||
{
|
||||
EnableMenuItem(hmenuArrange, FCIDM_SHVIEW_AUTOARRANGE, MF_BYCOMMAND);
|
||||
|
||||
if (GetAutoArrange() == S_OK)
|
||||
CheckMenuItem(hmenuArrange, FCIDM_SHVIEW_AUTOARRANGE, MF_CHECKED);
|
||||
}
|
||||
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
|
@ -1560,25 +1555,25 @@ LRESULT CDefView::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHand
|
|||
{
|
||||
case FCIDM_SHVIEW_SMALLICON:
|
||||
m_FolderSettings.ViewMode = FVM_SMALLICON;
|
||||
SetStyle (LVS_SMALLICON, LVS_TYPEMASK);
|
||||
m_ListView.ModifyStyle(LVS_TYPEMASK, LVS_SMALLICON);
|
||||
CheckToolbar();
|
||||
break;
|
||||
|
||||
case FCIDM_SHVIEW_BIGICON:
|
||||
m_FolderSettings.ViewMode = FVM_ICON;
|
||||
SetStyle (LVS_ICON, LVS_TYPEMASK);
|
||||
m_ListView.ModifyStyle(LVS_TYPEMASK, LVS_ICON);
|
||||
CheckToolbar();
|
||||
break;
|
||||
|
||||
case FCIDM_SHVIEW_LISTVIEW:
|
||||
m_FolderSettings.ViewMode = FVM_LIST;
|
||||
SetStyle (LVS_LIST, LVS_TYPEMASK);
|
||||
m_ListView.ModifyStyle(LVS_TYPEMASK, LVS_LIST);
|
||||
CheckToolbar();
|
||||
break;
|
||||
|
||||
case FCIDM_SHVIEW_REPORTVIEW:
|
||||
m_FolderSettings.ViewMode = FVM_DETAILS;
|
||||
SetStyle (LVS_REPORT, LVS_TYPEMASK);
|
||||
m_ListView.ModifyStyle(LVS_TYPEMASK, LVS_REPORT);
|
||||
CheckToolbar();
|
||||
break;
|
||||
|
||||
|
@ -1593,9 +1588,14 @@ LRESULT CDefView::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHand
|
|||
break;
|
||||
|
||||
case FCIDM_SHVIEW_SNAPTOGRID:
|
||||
case FCIDM_SHVIEW_AUTOARRANGE:
|
||||
//FIXME
|
||||
break;
|
||||
case FCIDM_SHVIEW_AUTOARRANGE:
|
||||
if (GetAutoArrange() == S_OK)
|
||||
m_ListView.ModifyStyle(LVS_AUTOARRANGE, 0);
|
||||
else
|
||||
AutoArrange();
|
||||
break;
|
||||
case FCIDM_SHVIEW_SELECTALL:
|
||||
m_ListView.SetItemState(-1, LVIS_SELECTED, LVIS_SELECTED);
|
||||
break;
|
||||
|
@ -2380,7 +2380,7 @@ HRESULT STDMETHODCALLTYPE CDefView::SetCurrentViewMode(UINT ViewMode)
|
|||
}
|
||||
}
|
||||
|
||||
SetStyle(dwStyle, LVS_TYPEMASK);
|
||||
m_ListView.ModifyStyle(LVS_TYPEMASK, dwStyle);
|
||||
|
||||
/* This will not necessarily be the actual mode set above.
|
||||
This mimics the behavior of Windows XP. */
|
||||
|
@ -2481,7 +2481,7 @@ HRESULT STDMETHODCALLTYPE CDefView::GetDefaultSpacing(POINT *ppt)
|
|||
|
||||
HRESULT STDMETHODCALLTYPE CDefView::GetAutoArrange()
|
||||
{
|
||||
return E_NOTIMPL;
|
||||
return ((m_ListView.GetStyle() & LVS_AUTOARRANGE) ? S_OK : S_FALSE);
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CDefView::SelectItem(int iItem, DWORD dwFlags)
|
||||
|
@ -2666,8 +2666,9 @@ HRESULT STDMETHODCALLTYPE CDefView::ArrangeGrid()
|
|||
|
||||
HRESULT STDMETHODCALLTYPE CDefView::AutoArrange()
|
||||
{
|
||||
FIXME("(%p) stub\n", this);
|
||||
return E_NOTIMPL;
|
||||
m_ListView.ModifyStyle(0, LVS_AUTOARRANGE);
|
||||
m_ListView.Arrange(LVA_DEFAULT);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT STDMETHODCALLTYPE CDefView::AddObject(PITEMID_CHILD pidl, UINT *item)
|
||||
|
|
|
@ -224,6 +224,12 @@ public:
|
|||
{
|
||||
return (BOOL)SendMessage(LVM_SETITEMPOSITION, nItem, MAKELPARAM(pPoint->x, pPoint->y));
|
||||
}
|
||||
|
||||
BOOL Arrange(UINT nCode)
|
||||
{
|
||||
return (BOOL)SendMessage(LVM_ARRANGE, nCode, 0);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
template<typename TItemData = DWORD_PTR>
|
||||
|
|
Loading…
Reference in a new issue