1818 clearTimeout(wdw.timeout);
1919 wdw.timeout = setTimeout(function() {
2020 if (el.scroll)
21+ {
22+ window.removeEventListener('scroll', onScroll, true);
2123 el.scroll(sleft, stop);
24+ setTimeout(function() { window.addEventListener('scroll', onScroll, true); }, 10);
25+ }
2226 }, 100);
2327 }
2428 }
@@ -116,57 +120,38 @@ LR"(
116120 }
117121 return selectorList.join(' > ');
118122 }
119- window.addEventListener('click', function(e) {
123+ function onScroll(e) {
124+ var el = ('scrollingElement' in e.target) ? e.target.scrollingElement : e.target;
125+ var sel = getElementSelector(el);
126+ var msg = {
127+ "event": "scroll",
128+ "window": getWindowLocation(),
129+ "selector": sel,
130+ "left": ((el.scrollWidth == el.clientWidth) ? 0 : (el.scrollLeft / (el.scrollWidth - el.clientWidth))),
131+ "top": ((el.scrollHeight == el.clientHeight) ? 0 : (el.scrollTop / (el.scrollHeight - el.clientHeight)))
132+ };
133+ window.chrome.webview.postMessage(JSON.stringify(msg));
134+ }
135+ function onClick(e) {
120136 if (wdw.inClick)
121137 return;
122138 var sel = getElementSelector(e.target);
123139 var msg = { "event": "click", "window": getWindowLocation(), "selector": sel };
124140 window.chrome.webview.postMessage(JSON.stringify(msg));
125- }, true);
126- window.addEventListener('input', function(e) {
141+ }
142+ function onInput (e) {
127143 var sel = getElementSelector(e.target);
128144 var msg = { "event": "input", "window": getWindowLocation(), "selector": sel, "value": e.target.value };
129145 window.chrome.webview.postMessage(JSON.stringify(msg));
130- }, true);
131- /*
132- var forms = document.querySelectorAll('form');
133- forms.forEach(function(form) {
134- form.addEventListener('submit', function(e) {
135- if (wdw.inSubmit)
136- return;
137- var sel = getElementSelector(e.target);
138- var msg = { "event": "submit", "window": getWindowLocation(), "selector": sel };
139- window.chrome.webview.postMessage(JSON.stringify(msg));
140- });
141- }, true);
142- window.addEventListener('keydown', function(e) {
143- if (wdw.inKeydown)
144- return;
145- var sel = getElementSelector(e.target);
146- var msg = { "event": "keydown", "window": getWindowLocation(), "selector": sel, "altKey": e.altKey, "code": e.code, "ctrlKey": e.ctrlKey, "isComposing": e.isComposing, "key": e.key, "locale": e.locale, "location": e.location, "metaKey": e.metaKey, "repeat": e.repeat, "shiftKey": e.shiftKey };
147- window.chrome.webview.postMessage(JSON.stringify(msg));
148- }, true);
149- */
150- window.addEventListener('dblclick', function(e) {
146+ }
147+ function onDblClick(e) {
151148 var el = e.target;
152149 var sel = getElementSelector(el);
153150 var wwdid = ('wwdid' in el.dataset) ? el.dataset['wwdid'] : (('wwdid' in el.parentElement.dataset) ? el.parentElement.dataset['wwdid'] : -1);
154151 var msg = { "event": "dblclick", "window": getWindowLocation(), "selector": sel, "wwdid": parseInt(wwdid) };
155152 window.chrome.webview.postMessage(JSON.stringify(msg));
156- }, true);
157- window.addEventListener('scroll', function(e) {
158- var el = ('scrollingElement' in e.target) ? e.target.scrollingElement : e.target;
159- var sel = getElementSelector(el);
160- var msg = {
161- "event": "scroll",
162- "window": getWindowLocation(),
163- "selector": sel,
164- "left": ((el.scrollWidth == el.clientWidth) ? 0 : (el.scrollLeft / (el.scrollWidth - el.clientWidth))),
165- "top": ((el.scrollHeight == el.clientHeight) ? 0 : (el.scrollTop / (el.scrollHeight - el.clientHeight)))
166- };
167- window.chrome.webview.postMessage(JSON.stringify(msg));
168- }, true);
169- window.chrome.webview.addEventListener('message', function(arg) {
153+ }
154+ function onMessage(arg) {
170155 var data = arg.data;
171156 switch (data.event) {
172157 case "scroll":
@@ -186,8 +171,32 @@ LR"(
186171 syncKeydown(data);
187172 break;
188173*/
189- }
190- });
174+ }
175+ }
176+ window.addEventListener('click', onClick, true);
177+ window.addEventListener('input', onInput, true);
178+ window.addEventListener('dblclick', onDblClick, true);
179+ window.addEventListener('scroll', onScroll, true);
180+ window.chrome.webview.addEventListener('message', onMessage);
181+ /*
182+ var forms = document.querySelectorAll('form');
183+ forms.forEach(function(form) {
184+ form.addEventListener('submit', function(e) {
185+ if (wdw.inSubmit)
186+ return;
187+ var sel = getElementSelector(e.target);
188+ var msg = { "event": "submit", "window": getWindowLocation(), "selector": sel };
189+ window.chrome.webview.postMessage(JSON.stringify(msg));
190+ });
191+ }, true);
192+ window.addEventListener('keydown', function(e) {
193+ if (wdw.inKeydown)
194+ return;
195+ var sel = getElementSelector(e.target);
196+ var msg = { "event": "keydown", "window": getWindowLocation(), "selector": sel, "altKey": e.altKey, "code": e.code, "ctrlKey": e.ctrlKey, "isComposing": e.isComposing, "key": e.key, "locale": e.locale, "location": e.location, "metaKey": e.metaKey, "repeat": e.repeat, "shiftKey": e.shiftKey };
197+ window.chrome.webview.postMessage(JSON.stringify(msg));
198+ }, true);
199+ */
191200})();
192201)" ;
193202
@@ -1164,7 +1173,6 @@ class CWebDiffWindow : public IWebDiffWindow
11641173 if (*count == m_nPanes && callback2)
11651174 callback2->Invoke ({ hr, nullptr });
11661175 }
1167-
11681176 }
11691177 return S_OK;
11701178 }
0 commit comments