Skip to content

Commit a5c6478

Browse files
committed
WIP (7)
1 parent 5cb3d5c commit a5c6478

File tree

5 files changed

+37
-6
lines changed

5 files changed

+37
-6
lines changed

src/WinWebDiff/Resource.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,10 @@
3838
#define IDM_COMPARE_LASTDIFFERENCE 149
3939
#define IDM_COMPARE_NEXTCONFLICT 150
4040
#define IDM_COMPARE_PREVIOUSCONFLICT 151
41-
#define IDM_SYNC_SCROLL 160
42-
#define IDM_SYNC_CLICK 161
43-
#define IDM_SYNC_INPUT 162
41+
#define IDM_SYNC_ENABLED 160
42+
#define IDM_SYNC_SCROLL 161
43+
#define IDM_SYNC_CLICK 162
44+
#define IDM_SYNC_INPUT 163
4445
#define IDM_CLEAR_DISK_CACHE 171
4546
#define IDM_CLEAR_COOKIES 172
4647
#define IDM_CLEAR_BROWSING_HISTORY 173

src/WinWebDiff/WinWebDiff.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,7 @@ void UpdateMenuState(HWND hWnd)
367367
CheckMenuItem(hMenu, IDM_VIEW_SPLITHORIZONTALLY, m_pWebDiffWindow->GetHorizontalSplit() ? MF_CHECKED : MF_UNCHECKED);
368368
CheckMenuRadioItem(hMenu, IDM_VIEW_DIFF_ALGORITHM_MYERS, IDM_VIEW_DIFF_ALGORITHM_NONE,
369369
m_pWebDiffWindow->GetDiffOptions().diffAlgorithm + IDM_VIEW_DIFF_ALGORITHM_MYERS, MF_BYCOMMAND);
370+
CheckMenuItem(hMenu, IDM_SYNC_ENABLED, m_pWebDiffWindow->GetSyncEvents() ? MF_CHECKED : MF_UNCHECKED);
370371
CheckMenuItem(hMenu, IDM_SYNC_SCROLL, m_pWebDiffWindow->GetSyncEventFlag(IWebDiffWindow::EVENT_SCROLL) ? MF_CHECKED : MF_UNCHECKED);
371372
CheckMenuItem(hMenu, IDM_SYNC_CLICK, m_pWebDiffWindow->GetSyncEventFlag(IWebDiffWindow::EVENT_CLICK) ? MF_CHECKED : MF_UNCHECKED);
372373
CheckMenuItem(hMenu, IDM_SYNC_INPUT, m_pWebDiffWindow->GetSyncEventFlag(IWebDiffWindow::EVENT_INPUT) ? MF_CHECKED : MF_UNCHECKED);
@@ -586,6 +587,10 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
586587
case IDM_COMPARE_PREVIOUSCONFLICT:
587588
m_pWebDiffWindow->PrevConflict();
588589
break;
590+
case IDM_SYNC_ENABLED:
591+
m_pWebDiffWindow->SetSyncEvents(!m_pWebDiffWindow->GetSyncEvents());
592+
UpdateMenuState(m_hWnd);
593+
break;
589594
case IDM_SYNC_SCROLL:
590595
m_pWebDiffWindow->SetSyncEventFlag(IWebDiffWindow::EVENT_SCROLL,
591596
!m_pWebDiffWindow->GetSyncEventFlag(IWebDiffWindow::EVENT_SCROLL));

src/WinWebDiff/WinWebDiff.rc

194 Bytes
Binary file not shown.

src/WinWebDiffLib/WebDiffWindow.hpp

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ class CWebDiffWindow : public IWebDiffWindow
286286
}
287287
else if (event == L"click")
288288
{
289-
if (GetSyncEventFlag(EVENT_CLICK))
289+
if (m_bSynchronizeEvents && GetSyncEventFlag(EVENT_CLICK))
290290
{
291291
const std::wstring& window = doc[L"window"].GetString();
292292
const std::wstring& selector = doc[L"selector"].GetString();
@@ -295,7 +295,7 @@ class CWebDiffWindow : public IWebDiffWindow
295295
}
296296
else if (event == L"input")
297297
{
298-
if (GetSyncEventFlag(EVENT_INPUT))
298+
if (m_bSynchronizeEvents && GetSyncEventFlag(EVENT_INPUT))
299299
{
300300
const std::wstring& window = doc[L"window"].GetString();
301301
const std::wstring& selector = doc[L"selector"].GetString();
@@ -305,7 +305,7 @@ class CWebDiffWindow : public IWebDiffWindow
305305
}
306306
else if (event == L"scroll")
307307
{
308-
if (GetSyncEventFlag(EVENT_SCROLL))
308+
if (m_bSynchronizeEvents && GetSyncEventFlag(EVENT_SCROLL))
309309
{
310310
const double left = doc[L"left"].GetDouble();
311311
const double top = doc[L"top"].GetDouble();
@@ -630,6 +630,26 @@ class CWebDiffWindow : public IWebDiffWindow
630630
Recompare(nullptr);
631631
}
632632

633+
bool GetSyncEvents() const
634+
{
635+
return m_bSynchronizeEvents;
636+
}
637+
638+
void SetSyncEvents(bool syncEvents)
639+
{
640+
m_bSynchronizeEvents = syncEvents;
641+
}
642+
643+
unsigned GetSyncEventFlags() const
644+
{
645+
return m_eventSyncFlags;
646+
}
647+
648+
void SetSyncEventFlags(unsigned flags)
649+
{
650+
m_eventSyncFlags = flags;
651+
}
652+
633653
bool GetSyncEventFlag(EventType event) const
634654
{
635655
return (m_eventSyncFlags & event) != 0;
@@ -1556,6 +1576,7 @@ class CWebDiffWindow : public IWebDiffWindow
15561576
DiffOptions m_diffOptions{};
15571577
bool m_bShowDifferences = true;
15581578
bool m_bShowWordDifferences = true;
1579+
bool m_bSynchronizeEvents = true;
15591580
unsigned m_eventSyncFlags = EVENT_SCROLL | EVENT_CLICK | EVENT_INPUT;
15601581
struct LastEvent {
15611582
std::wstring type;

src/WinWebDiffLib/WinWebDiffLib.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,10 @@ struct IWebDiffWindow
177177
virtual bool CanRedo() = 0;
178178
virtual const DiffOptions& GetDiffOptions() const = 0;
179179
virtual void SetDiffOptions(const DiffOptions& diffOptions) = 0;
180+
virtual bool GetSyncEvents() const = 0;
181+
virtual void SetSyncEvents(bool syncEvents) = 0;
182+
virtual unsigned GetSyncEventFlags() const = 0;
183+
virtual void SetSyncEventFlags(unsigned flags) = 0;
180184
virtual bool GetSyncEventFlag(EventType event) const = 0;
181185
virtual void SetSyncEventFlag(EventType event, bool flag) = 0;
182186
};

0 commit comments

Comments
 (0)