@@ -1142,27 +1142,31 @@ class CWebDiffWindow : public IWebDiffWindow
1142
1142
return S_OK;
1143
1143
}
1144
1144
1145
- HRESULT applyDOMLoop (std::shared_ptr<std::vector<WDocument>> documents, IWebDiffCallback* callback, int pane = 0 )
1145
+ HRESULT applyDOMLoop (std::shared_ptr<std::vector<WDocument>> documents, IWebDiffCallback* callback)
1146
1146
{
1147
1147
ComPtr<IWebDiffCallback> callback2 (callback);
1148
- auto nodes = std::make_shared<std::list<ModifiedNode> >();
1149
- Highlighter::modifiedNodesToHTMLs ((*documents)[ pane][ L" root " ], *nodes);
1150
- HRESULT hr = applyHTMLLoop (pane, nodes,
1151
- Callback<IWebDiffCallback>([ this , documents, callback2, pane]( const WebDiffCallbackResult& result) -> HRESULT
1152
- {
1153
- HRESULT hr = result. errorCode ;
1154
- if ( SUCCEEDED (hr))
1148
+ auto count = std::make_shared<int >();
1149
+ for ( int pane = 0 ; pane < m_nPanes; ++pane)
1150
+ {
1151
+ auto nodes = std::make_shared<std::list<ModifiedNode>>();
1152
+ Highlighter::modifiedNodesToHTMLs ((*documents)[pane][ L" root " ], *nodes);
1153
+ HRESULT hr = applyHTMLLoop (pane, nodes,
1154
+ Callback<IWebDiffCallback>([ this , callback2, count]( const WebDiffCallbackResult& result) -> HRESULT
1155
1155
{
1156
- if (pane + 1 < m_nPanes)
1157
- hr = applyDOMLoop (documents, callback2.Get (), pane + 1 );
1158
- else if (callback2)
1159
- return callback2->Invoke ({ hr, nullptr });
1160
- }
1161
- if (FAILED (hr) && callback2)
1162
- return callback2->Invoke ({ hr, nullptr });
1163
- return hr;
1164
- }).Get ());
1165
- return hr;
1156
+ (*count)++;
1157
+ if (*count == m_nPanes && callback2)
1158
+ callback2->Invoke ({ result.errorCode , nullptr });
1159
+ return S_OK;
1160
+ }).Get ());
1161
+ if (FAILED (hr))
1162
+ {
1163
+ (*count)++;
1164
+ if (*count == m_nPanes && callback2)
1165
+ callback2->Invoke ({ hr, nullptr });
1166
+ }
1167
+
1168
+ }
1169
+ return S_OK;
1166
1170
}
1167
1171
1168
1172
HRESULT setStyleSheetLoop (const std::wstring& styles, IWebDiffCallback* callback, int pane = 0 )
0 commit comments