Skip to content

Commit 61c9749

Browse files
committed
26.5.7 Some fix
1 parent 4b98b45 commit 61c9749

5 files changed

Lines changed: 42 additions & 29 deletions

File tree

Debug/lib/te32.dll

0 Bytes
Binary file not shown.

Debug/lib/te64.dll

0 Bytes
Binary file not shown.

TE/Resource.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
#else
1616
//Version(DLL)
1717
#define VER_Y 26
18-
#define VER_M 4
19-
#define VER_D 11
18+
#define VER_M 5
19+
#define VER_D 7
2020
#endif
2121

2222
//Icon

TE/TE.cpp

Lines changed: 39 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2585,7 +2585,7 @@ LRESULT CALLBACK TELVProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, UIN
25852585
static HWND hwndEdit = NULL;
25862586
static FolderItem *pidEdit = NULL;
25872587

2588-
CteShellBrowser *pSB = (CteShellBrowser *)GetWindowLongPtr(hwnd, GWLP_USERDATA);
2588+
CteShellBrowser *pSB = (CteShellBrowser *)dwRefData;
25892589
try {
25902590
BOOL bDoCallProc = TRUE;
25912591
LRESULT lResult = S_FALSE;
@@ -2976,7 +2976,7 @@ LRESULT CALLBACK TELVProc2(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam, UI
29762976
{
29772977
HWND hTree;
29782978
try {
2979-
CteShellBrowser *pSB = (CteShellBrowser *)GetWindowLongPtr(hwnd, GWLP_USERDATA);
2979+
CteShellBrowser *pSB = (CteShellBrowser *)dwRefData;
29802980
switch (msg)
29812981
{
29822982
case LVM_SETTEXTCOLOR:
@@ -6348,7 +6348,7 @@ VOID CteShellBrowser::FocusItem()
63486348
if (GetFolderViewAndItemCount(&pFV, SVGIO_ALLVIEW)) {
63496349
int nTop = -1;
63506350
if (SUCCEEDED(pFV->GetFocusedItem(&nTop)) && nTop < 0) {
6351-
pFV->SelectItem(0, SVSI_FOCUSED | SVSI_ENSUREVISIBLE | SVSI_NOTAKEFOCUS | SVSI_SELECTIONMARK);
6351+
SelectItemNum(0, SVSI_FOCUSED | SVSI_ENSUREVISIBLE | SVSI_NOTAKEFOCUS | SVSI_SELECTIONMARK);
63526352
}
63536353
pFV->Release();
63546354
}
@@ -8653,8 +8653,9 @@ STDMETHODIMP CteShellBrowser::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid
86538653
return S_OK;
86548654
#endif
86558655
case TE_METHOD + 0xf300://Notify
8656+
{
8657+
long lEvent = GetIntFromVariant(&pDispParams->rgvarg[nArg]);
86568658
if (nArg >= 2) {
8657-
long lEvent = GetIntFromVariant(&pDispParams->rgvarg[nArg]);
86588659
BOOL bTFS = (nArg >= 3 && GetBoolFromVariant(&pDispParams->rgvarg[nArg - 3]));
86598660
for (int i = 1; i < (lEvent & (SHCNE_RENAMEITEM | SHCNE_RENAMEFOLDER) ? 3 : 2); ++i) {
86608661
LPITEMIDLIST pidl;
@@ -8666,7 +8667,8 @@ STDMETHODIMP CteShellBrowser::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid
86668667
if (bTFS) {
86678668
WCHAR szBuf[MAX_COLUMN_NAME_LEN];
86688669
SetFolderSize(pSF2, pidlLast, szBuf, _countof(szBuf));
8669-
} else {
8670+
}
8671+
else {
86708672
BSTR bsPath;
86718673
if SUCCEEDED(teGetDisplayNameBSTR(pSF2, pidl, SHGDN_FORPARSING, &bsPath)) {
86728674
if SUCCEEDED(teDelProperty(m_ppDispatch[SB_TotalFileSize], bsPath)) {
@@ -8685,7 +8687,7 @@ STDMETHODIMP CteShellBrowser::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid
86858687
}
86868688
}
86878689
return S_OK;
8688-
8690+
}
86898691
case TE_METHOD + 0xf400://NavigateComplete
86908692
m_bBeforeNavigate = FALSE;
86918693
if (m_bVisible && !IsWindowVisible(m_hwnd)) {
@@ -8914,7 +8916,7 @@ STDMETHODIMP CteShellBrowser::Invoke(DISPID dispIdMember, REFIID riid, LCID lcid
89148916
}
89158917
IFolderView *pFV;
89168918
if (GetFolderViewAndItemCount(&pFV,SVGIO_SELECTION) == 0) {
8917-
pFV->SelectItem(0, SVSI_FOCUSED | SVSI_NOTAKEFOCUS);
8919+
SelectItemNum(0, SVSI_FOCUSED | SVSI_NOTAKEFOCUS);
89188920
}
89198921
SafeRelease(&pFV);
89208922
return DoFunc(TE_OnSort, this, S_OK);
@@ -9310,23 +9312,8 @@ STDMETHODIMP CteShellBrowser::SelectItem(VARIANT *pvfi, int dwFlags)
93109312
if (m_pShellView) {
93119313
teFixListState(m_hwndLV, dwFlags);
93129314
if (teVarIsNumber(pvfi) && pvfi->vt != VT_BSTR) {
9313-
IFolderView *pFV = NULL;
93149315
int nIndex = GetIntFromVariant(pvfi);
9315-
int nCount = GetFolderViewAndItemCount(&pFV, SVGIO_ALLVIEW);
9316-
if (nIndex < nCount) {
9317-
if (m_hwndLV && !(dwFlags & (SVSI_SELECT | SVSI_DESELECTOTHERS))) {//21.12.15
9318-
if (nIndex == ListView_GetNextItem(m_hwndLV, -1, LVNI_SELECTED)) {
9319-
if (ListView_GetNextItem(m_hwndLV, nIndex, LVNI_SELECTED) < 0) {
9320-
dwFlags |= SVSI_DESELECTOTHERS;
9321-
}
9322-
}
9323-
}
9324-
if (dwFlags & (SVSI_SELECTIONMARK | (SVSI_KEYBOARDSELECT & ~SVSI_SELECT))) {//21.4.7
9325-
pFV->SelectItem(nIndex, dwFlags & (SVSI_SELECTIONMARK | SVSI_KEYBOARDSELECT | SVSI_NOTAKEFOCUS));
9326-
}
9327-
hr = pFV->SelectItem(nIndex, dwFlags & ~(SVSI_SELECTIONMARK | (SVSI_KEYBOARDSELECT & ~SVSI_SELECT)));
9328-
}
9329-
SafeRelease(&pFV);
9316+
hr = SelectItemNum(nIndex, dwFlags);
93309317
} else {
93319318
IDataObject *pDataObj;
93329319
if (GetDataObjFromVariant(&pDataObj, pvfi)) {
@@ -9350,7 +9337,6 @@ STDMETHODIMP CteShellBrowser::SelectItem(VARIANT *pvfi, int dwFlags)
93509337
teCoTaskMemFree(pidl);
93519338
}
93529339
}
9353-
CteFolderItem *pid1 = NULL;
93549340
if (m_pFolderItem) {
93559341
teILFreeClear(&m_pFolderItem->m_pidlFocused);
93569342
}
@@ -9380,17 +9366,43 @@ HRESULT CteShellBrowser::SelectItemEx(LPITEMIDLIST pidl, int dwFlags)
93809366
SafeRelease(&pFV);
93819367
}
93829368
}
9369+
BOOL bRedraw = m_hwndLV && (dwFlags & SVSI_ENSUREVISIBLE);
9370+
if (bRedraw) {
9371+
m_dwRedraw |= 2;
9372+
SendMessage(m_hwnd, WM_SETREDRAW, FALSE, 0);
9373+
}
93839374
if (dwFlags & (SVSI_SELECTIONMARK | (SVSI_KEYBOARDSELECT & ~SVSI_SELECT))) {//21.4.7
93849375
m_pShellView->SelectItem(pidlLast, dwFlags & (SVSI_SELECTIONMARK | SVSI_KEYBOARDSELECT | SVSI_NOTAKEFOCUS));
93859376
}
93869377
hr = m_pShellView->SelectItem(pidlLast, dwFlags & ~(SVSI_SELECTIONMARK | (SVSI_KEYBOARDSELECT & ~SVSI_SELECT)));
9378+
93879379
if (FAILED(hr) && (dwFlags & SVSI_DESELECTOTHERS)) {
93889380
hr = m_pShellView->SelectItem(pidlLast, SVSI_DESELECTOTHERS);
93899381
}
9382+
if (bRedraw) {
9383+
RedrawUpdate();
9384+
}
9385+
93909386
}
93919387
return hr;
93929388
}
93939389

9390+
HRESULT CteShellBrowser::SelectItemNum(int nIndex, int dwFlags)
9391+
{
9392+
HRESULT hr = E_NOTIMPL;
9393+
IFolderView *pFV = NULL;
9394+
int nCount = GetFolderViewAndItemCount(&pFV, SVGIO_ALLVIEW);
9395+
if (nIndex < nCount) {
9396+
LPITEMIDLIST pidl;
9397+
if SUCCEEDED(pFV->Item(nIndex, &pidl)) {
9398+
SelectItemEx(pidl, dwFlags);
9399+
teILFreeClear(&pidl);
9400+
}
9401+
}
9402+
SafeRelease(&pFV);
9403+
return hr;
9404+
}
9405+
93949406
STDMETHODIMP CteShellBrowser::PopupItemMenu(FolderItem *pfi, VARIANT vx, VARIANT vy, BSTR *pbs)
93959407
{
93969408
HRESULT hr = E_NOTIMPL;
@@ -10034,7 +10046,7 @@ VOID CteShellBrowser::AddItem(LPITEMIDLIST pidl)
1003410046
LPITEMIDLIST pidlChild = NULL;
1003510047
if (IncludeObject2(pSF, pidlPart, pidl) == S_OK) {
1003610048
m_dwRedraw |= 2;
10037-
SetRedraw(FALSE);
10049+
SendMessage(m_hwnd, WM_SETREDRAW, FALSE, 0);
1003810050
try {
1003910051
IResultsFolder *pRF;
1004010052
if (SUCCEEDED(m_pShellView->QueryInterface(IID_PPV_ARGS(&pFV))) && SUCCEEDED(pFV->GetFolder(IID_PPV_ARGS(&pRF)))) {
@@ -10535,7 +10547,7 @@ VOID CteShellBrowser::SetPropEx()
1053510547
{
1053610548
if (IUnknown_GetWindow(m_pShellView, &m_hwndDV) == S_OK) {
1053710549
if (SetWindowLongPtr(m_hwndDV, GWLP_USERDATA, (LONG_PTR)this) != (LONG_PTR)this) {
10538-
SetWindowSubclass(m_hwndDV, TELVProc, (UINT_PTR)TELVProc, 0);
10550+
SetWindowSubclass(m_hwndDV, TELVProc, (UINT_PTR)TELVProc, (DWORD_PTR)this);
1053910551
for (int i = WM_USER + 173; i <= WM_USER + 175; ++i) {
1054010552
teChangeWindowMessageFilterEx(m_hwndDV, i, MSGFLT_ALLOW, NULL);
1054110553
}
@@ -10565,7 +10577,7 @@ VOID CteShellBrowser::SetPropEx()
1056510577
}
1056610578
SendMessage(m_hwndLV, WM_CHANGEUISTATE, MAKELONG(UIS_SET, UISF_HIDEFOCUS), 0);
1056710579
if (SetWindowLongPtr(m_hwndLV, GWLP_USERDATA, (LONG_PTR)this) != (LONG_PTR)this) {
10568-
SetWindowSubclass(m_hwndLV, TELVProc2, (UINT_PTR)TELVProc2, 0);
10580+
SetWindowSubclass(m_hwndLV, TELVProc2, (UINT_PTR)TELVProc2, (LONG_PTR)this);
1056910581
}
1057010582
FixColumnEmphasis();
1057110583
} else {

TE/TE.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,7 @@ class CteShellBrowser : public IShellBrowser, public ICommDlgBrowser2,
327327
VOID ExItems(CteFolderItems *pFolderItems, IFolderView *pFV, int nCount, UINT uItem);
328328
HRESULT Items(UINT uItem, FolderItems **ppid);
329329
HRESULT SelectItemEx(LPITEMIDLIST pidl, int dwFlags);
330+
HRESULT SelectItemNum(int nIndex, int dwFlags);
330331
VOID InitFolderSize();
331332
HRESULT GetPropertyKey(int iItem, PROPERTYKEY *pPropKey);
332333
BOOL SetColumnsProperties(int iItem);

0 commit comments

Comments
 (0)