Skip to content

Commit

Permalink
Support moving logger dialog around with touch events
Browse files Browse the repository at this point in the history
  • Loading branch information
gorhill committed Feb 19, 2023
1 parent c338a08 commit e740068
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 19 deletions.
2 changes: 1 addition & 1 deletion src/css/logger-ui.css
Expand Up @@ -523,7 +523,7 @@ body[dir="rtl"] .closeButton {
}

.netFilteringDialog {
font-size: 95%;
font-size: var(--font-size-smaller);
}
.netFilteringDialog a {
text-decoration: none;
Expand Down
54 changes: 36 additions & 18 deletions src/js/logger-ui.js
Expand Up @@ -86,8 +86,17 @@ const onStartMovingWidget = (( ) => {
let cw = 0, ch = 0;
let timer;

const xyFromEvent = ev => {
if ( ev.type.startsWith('mouse') ) {
return { x: ev.pageX, y: ev.pageY };
}
const touch = ev.touches[0];
return { x: touch.pageX, y: touch.pageY };
};

const eatEvent = function(ev) {
ev.stopPropagation();
if ( ev.touches !== undefined ) { return; }
ev.preventDefault();
};

Expand All @@ -108,8 +117,8 @@ const onStartMovingWidget = (( ) => {

const moveAsync = ev => {
if ( timer !== undefined ) { return; }
mx1 = ev.pageX;
my1 = ev.pageY;
const coord = xyFromEvent(ev);
mx1 = coord.x; my1 = coord.y;
timer = self.requestAnimationFrame(move);
eatEvent(ev);
};
Expand All @@ -119,9 +128,11 @@ const onStartMovingWidget = (( ) => {
self.cancelAnimationFrame(timer);
timer = undefined;
}
if ( widget === null ) { return; }
if ( widget.classList.contains('moving') === false ) { return; }
widget.classList.remove('moving');
self.removeEventListener('mousemove', moveAsync, { capture: true });
self.removeEventListener('touchmove', moveAsync, { capture: true });
eatEvent(ev);
widget = null;
if ( ondone !== null ) {
Expand All @@ -134,7 +145,8 @@ const onStartMovingWidget = (( ) => {
if ( dom.cl.has(target, 'moving') ) { return; }
widget = target;
ondone = callback || null;
mx0 = ev.pageX; my0 = ev.pageY;
const coord = xyFromEvent(ev);
mx0 = coord.x; my0 = coord.y;
const widgetParent = widget.parentElement;
const crect = widget.getBoundingClientRect();
const prect = widgetParent.getBoundingClientRect();
Expand All @@ -144,6 +156,8 @@ const onStartMovingWidget = (( ) => {
widget.classList.add('moving');
self.addEventListener('mousemove', moveAsync, { capture: true });
self.addEventListener('mouseup', stop, { capture: true, once: true });
self.addEventListener('touchmove', moveAsync, { capture: true });
self.addEventListener('touchend', stop, { capture: true, once: true });
eatEvent(ev);
};
})();
Expand Down Expand Up @@ -1938,6 +1952,22 @@ dom.on(document, 'keydown', ev => {
parseStaticInputs();
};

const moveDialog = ev => {
if ( ev.button !== 0 && ev.touches === undefined ) { return; }
const widget = qs$('#netInspector .entryTools');
onStartMovingWidget(ev, widget, ( ) => {
vAPI.localStorage.setItem(
'loggerUI.entryTools',
JSON.stringify({
bottom: widget.style.bottom,
left: widget.style.left,
right: widget.style.right,
top: widget.style.top,
})
);
});
};

const fillDialog = function(domains) {
dialog = dom.clone('#templates .netFilteringDialog');
dom.cl.toggle(
Expand All @@ -1961,21 +1991,9 @@ dom.on(document, 'keydown', ev => {
} else {
container.append(dialog);
}
dom.on(qs$(dialog, '.moveBand'), 'mousedown', ev => {
if ( ev.button !== 0 ) { return; }
onStartMovingWidget(ev, container, ( ) => {
const widget = qs$('#netInspector .entryTools');
vAPI.localStorage.setItem(
'loggerUI.entryTools',
JSON.stringify({
bottom: widget.style.bottom,
left: widget.style.left,
right: widget.style.right,
top: widget.style.top,
})
);
});
});
const moveBand = qs$(dialog, '.moveBand');
dom.on(moveBand, 'mousedown', moveDialog);
dom.on(moveBand, 'touchstart', moveDialog);
};

const toggleOn = async function(ev) {
Expand Down

0 comments on commit e740068

Please sign in to comment.