mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-06-11 12:14:53 +08:00
Merge pull request #655 from chrdavis/master
Switch to modeless experience and resize list view columns on dialog size
This commit is contained in:
commit
1d3acbe40b
@ -123,7 +123,7 @@ HRESULT CPowerRenameUI::s_CreateInstance(_In_ IPowerRenameManager* psrm, _In_opt
|
|||||||
// IPowerRenameUI
|
// IPowerRenameUI
|
||||||
IFACEMETHODIMP CPowerRenameUI::Show(_In_opt_ HWND hwndParent)
|
IFACEMETHODIMP CPowerRenameUI::Show(_In_opt_ HWND hwndParent)
|
||||||
{
|
{
|
||||||
return _DoModal(hwndParent);
|
return _DoModeless(hwndParent);
|
||||||
}
|
}
|
||||||
|
|
||||||
IFACEMETHODIMP CPowerRenameUI::Close()
|
IFACEMETHODIMP CPowerRenameUI::Close()
|
||||||
@ -354,12 +354,25 @@ void CPowerRenameUI::_OnCloseDlg()
|
|||||||
{
|
{
|
||||||
// Persist the current settings
|
// Persist the current settings
|
||||||
_WriteSettings();
|
_WriteSettings();
|
||||||
EndDialog(m_hwnd, 1);
|
|
||||||
|
if (m_modeless)
|
||||||
|
{
|
||||||
|
DestroyWindow(m_hwnd);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EndDialog(m_hwnd, 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CPowerRenameUI::_OnDestroyDlg()
|
void CPowerRenameUI::_OnDestroyDlg()
|
||||||
{
|
{
|
||||||
_Cleanup();
|
_Cleanup();
|
||||||
|
|
||||||
|
if (m_modeless)
|
||||||
|
{
|
||||||
|
PostQuitMessage(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CPowerRenameUI::_OnRename()
|
void CPowerRenameUI::_OnRename()
|
||||||
@ -384,6 +397,7 @@ void CPowerRenameUI::_OnAbout()
|
|||||||
|
|
||||||
HRESULT CPowerRenameUI::_DoModal(__in_opt HWND hwnd)
|
HRESULT CPowerRenameUI::_DoModal(__in_opt HWND hwnd)
|
||||||
{
|
{
|
||||||
|
m_modeless = false;
|
||||||
HRESULT hr = S_OK;
|
HRESULT hr = S_OK;
|
||||||
INT_PTR ret = DialogBoxParam(g_hInst, MAKEINTRESOURCE(IDD_MAIN), hwnd, s_DlgProc, (LPARAM)this);
|
INT_PTR ret = DialogBoxParam(g_hInst, MAKEINTRESOURCE(IDD_MAIN), hwnd, s_DlgProc, (LPARAM)this);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
@ -393,6 +407,33 @@ HRESULT CPowerRenameUI::_DoModal(__in_opt HWND hwnd)
|
|||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HRESULT CPowerRenameUI::_DoModeless(__in_opt HWND hwnd)
|
||||||
|
{
|
||||||
|
m_modeless = true;
|
||||||
|
HRESULT hr = S_OK;
|
||||||
|
if (NULL != CreateDialogParam(g_hInst, MAKEINTRESOURCE(IDD_MAIN), hwnd, s_DlgProc, (LPARAM)this))
|
||||||
|
{
|
||||||
|
ShowWindow(m_hwnd, SW_SHOWNORMAL);
|
||||||
|
MSG msg;
|
||||||
|
while (GetMessage(&msg, NULL, 0, 0))
|
||||||
|
{
|
||||||
|
if (!IsDialogMessage(m_hwnd, &msg))
|
||||||
|
{
|
||||||
|
TranslateMessage(&msg);
|
||||||
|
DispatchMessage(&msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DestroyWindow(m_hwnd);
|
||||||
|
m_hwnd = NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
hr = HRESULT_FROM_WIN32(GetLastError());
|
||||||
|
}
|
||||||
|
return hr;
|
||||||
|
}
|
||||||
|
|
||||||
INT_PTR CPowerRenameUI::_DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
|
INT_PTR CPowerRenameUI::_DlgProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
INT_PTR bRet = TRUE; // default for all handled cases in switch below
|
INT_PTR bRet = TRUE; // default for all handled cases in switch below
|
||||||
@ -618,6 +659,8 @@ void CPowerRenameUI::_OnSize(_In_ WPARAM wParam)
|
|||||||
{
|
{
|
||||||
_MoveControl(g_repositionMap[u].id, g_repositionMap[u].flags, xDelta, yDelta);
|
_MoveControl(g_repositionMap[u].id, g_repositionMap[u].flags, xDelta, yDelta);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m_listview.OnSize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -784,7 +827,7 @@ void CPowerRenameListView::Init(_In_ HWND hwndLV)
|
|||||||
SetWindowLongPtr(m_hwndLV, GWL_STYLE, dwLVStyle);
|
SetWindowLongPtr(m_hwndLV, GWL_STYLE, dwLVStyle);
|
||||||
|
|
||||||
// Set the extended view styles
|
// Set the extended view styles
|
||||||
ListView_SetExtendedListViewStyle(m_hwndLV, LVS_EX_CHECKBOXES | LVS_EX_DOUBLEBUFFER);
|
ListView_SetExtendedListViewStyle(m_hwndLV, LVS_EX_CHECKBOXES | LVS_EX_DOUBLEBUFFER | LVS_EX_AUTOSIZECOLUMNS);
|
||||||
|
|
||||||
// Get the system image lists. Our list view is setup to not destroy
|
// Get the system image lists. Our list view is setup to not destroy
|
||||||
// these since the image list belongs to the entire explorer process
|
// these since the image list belongs to the entire explorer process
|
||||||
@ -966,6 +1009,14 @@ void CPowerRenameListView::GetDisplayInfo(_In_ IPowerRenameManager* psrm, _Inout
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CPowerRenameListView::OnSize()
|
||||||
|
{
|
||||||
|
RECT rc = { 0 };
|
||||||
|
GetClientRect(m_hwndLV, &rc);
|
||||||
|
ListView_SetColumnWidth(m_hwndLV, 0, RECT_WIDTH(rc) / 2);
|
||||||
|
ListView_SetColumnWidth(m_hwndLV, 1, RECT_WIDTH(rc) / 2);
|
||||||
|
}
|
||||||
|
|
||||||
void CPowerRenameListView::RedrawItems(_In_ int first, _In_ int last)
|
void CPowerRenameListView::RedrawItems(_In_ int first, _In_ int last)
|
||||||
{
|
{
|
||||||
ListView_RedrawItems(m_hwndLV, first, last);
|
ListView_RedrawItems(m_hwndLV, first, last);
|
||||||
|
@ -16,6 +16,7 @@ public:
|
|||||||
void OnKeyDown(_In_ IPowerRenameManager* psrm, _In_ LV_KEYDOWN* lvKeyDown);
|
void OnKeyDown(_In_ IPowerRenameManager* psrm, _In_ LV_KEYDOWN* lvKeyDown);
|
||||||
void OnClickList(_In_ IPowerRenameManager* psrm, NM_LISTVIEW* pnmListView);
|
void OnClickList(_In_ IPowerRenameManager* psrm, NM_LISTVIEW* pnmListView);
|
||||||
void GetDisplayInfo(_In_ IPowerRenameManager* psrm, _Inout_ LV_DISPINFO* plvdi);
|
void GetDisplayInfo(_In_ IPowerRenameManager* psrm, _Inout_ LV_DISPINFO* plvdi);
|
||||||
|
void OnSize();
|
||||||
HWND GetHWND() { return m_hwndLV; }
|
HWND GetHWND() { return m_hwndLV; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -76,6 +77,7 @@ private:
|
|||||||
}
|
}
|
||||||
|
|
||||||
HRESULT _DoModal(__in_opt HWND hwnd);
|
HRESULT _DoModal(__in_opt HWND hwnd);
|
||||||
|
HRESULT _DoModeless(__in_opt HWND hwnd);
|
||||||
|
|
||||||
static INT_PTR CALLBACK s_DlgProc(HWND hdlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
static INT_PTR CALLBACK s_DlgProc(HWND hdlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
@ -120,6 +122,7 @@ private:
|
|||||||
bool m_initialized = false;
|
bool m_initialized = false;
|
||||||
bool m_enableDragDrop = false;
|
bool m_enableDragDrop = false;
|
||||||
bool m_disableCountUpdate = false;
|
bool m_disableCountUpdate = false;
|
||||||
|
bool m_modeless = true;
|
||||||
HWND m_hwnd = nullptr;
|
HWND m_hwnd = nullptr;
|
||||||
HWND m_hwndLV = nullptr;
|
HWND m_hwndLV = nullptr;
|
||||||
HICON m_iconMain = nullptr;
|
HICON m_iconMain = nullptr;
|
||||||
|
Loading…
Reference in New Issue
Block a user