@@ -79,14 +79,13 @@ class CWebDiffWindow : public IWebDiffWindow
79
79
if (m_hWnd)
80
80
{
81
81
Close ();
82
- std::shared_ptr<int > counter (new int { nPanes });
83
82
for (int i = 0 ; i < nPanes; ++i)
84
83
{
85
84
std::wstring userDataFolder = GetUserDataFolderPath (i);
86
85
ComPtr<IWebDiffCallback> callback2 (callback);
87
86
hr = m_webWindow[i].Create (m_hInstance, m_hWnd, urls[i], userDataFolder.c_str (),
88
87
m_size, m_fitToWindow, m_zoom, m_userAgent, nullptr ,
89
- [this , i, counter, callback2](WebDiffEvent::EVENT_TYPE event, IUnknown* sender, IUnknown* args)
88
+ [this , i, callback2](WebDiffEvent::EVENT_TYPE event, IUnknown* sender, IUnknown* args)
90
89
{
91
90
WebDiffEvent ev{};
92
91
ev.type = event;
@@ -122,6 +121,8 @@ class CWebDiffWindow : public IWebDiffWindow
122
121
}
123
122
else if (event == WebDiffEvent::NavigationStarting)
124
123
{
124
+ m_documentLoaded[ev.pane ] = false ;
125
+ m_urlChanged[ev.pane ] = true ;
125
126
SetCompareState (NOT_COMPARED);
126
127
}
127
128
else if (event == WebDiffEvent::FrameNavigationStarting)
@@ -130,9 +131,13 @@ class CWebDiffWindow : public IWebDiffWindow
130
131
else if (event == WebDiffEvent::NavigationCompleted)
131
132
{
132
133
addEventListener (sender, ev.pane , nullptr );
133
- *counter = *counter - 1 ;
134
- if (*counter == 0 )
134
+ m_documentLoaded[ev.pane ] = true ;
135
+ if ((std::count (m_documentLoaded, m_documentLoaded + m_nPanes, true ) == m_nPanes) &&
136
+ (std::count (m_urlChanged, m_urlChanged + m_nPanes, true ) == m_nPanes))
137
+ {
138
+ std::fill_n (m_urlChanged, m_nPanes, false );
135
139
Recompare (callback2.Get ());
140
+ }
136
141
}
137
142
else if (event == WebDiffEvent::FrameNavigationCompleted)
138
143
{
@@ -1477,6 +1482,8 @@ class CWebDiffWindow : public IWebDiffWindow
1477
1482
bool m_bShowDifferences = true ;
1478
1483
bool m_bShowWordDifferences = true ;
1479
1484
bool m_bSynchronizeEvents = true ;
1485
+ bool m_documentLoaded[3 ] = { false , false , false };
1486
+ bool m_urlChanged[3 ] = { false , false , false };
1480
1487
unsigned m_eventSyncFlags = EVENT_SCROLL | EVENT_CLICK | EVENT_INPUT | EVENT_GOBACKFORWARD;
1481
1488
CompareState m_compareState = NOT_COMPARED;
1482
1489
IWebDiffWindow::ColorSettings m_colorSettings = {
0 commit comments