colorpicker: invoke callback on first color change

This commit is contained in:
tophf 2017-11-27 13:04:00 +03:00
parent 761f6a5085
commit fad03fb7c9

View File

@ -520,57 +520,39 @@
} }
function onSaturationMouseDown(event) { function onSaturationMouseDown(event) {
if (event.button === 0) { if (captureMouse(event, 'saturation')) {
setFromSaturationElement(event); setFromSaturationElement(event);
dragging.saturation = true;
captureMouse();
} }
} }
function onSaturationMouseUp(event) { function onSaturationMouseUp(event) {
if (event.button === 0) { releaseMouse(event, 'saturation');
dragging.saturation = false;
releaseMouse();
}
} }
function onHueKnobMouseDown(event) { function onHueKnobMouseDown(event) {
if (event.button === 0) { captureMouse(event, 'hue');
dragging.hue = true;
captureMouse();
}
} }
function onOpacityKnobMouseDown(event) { function onOpacityKnobMouseDown(event) {
if (event.button === 0) { captureMouse(event, 'opacity');
dragging.opacity = true;
captureMouse();
}
} }
function onHueMouseDown(event) { function onHueMouseDown(event) {
if (event.button === 0) { if (captureMouse(event, 'hue')) {
dragging.hue = true;
setFromHueElement(event); setFromHueElement(event);
captureMouse();
} }
} }
function onOpacityMouseDown(event) { function onOpacityMouseDown(event) {
if (event.button === 0) { if (captureMouse(event, 'opacity')) {
dragging.opacity = true;
setFromOpacityElement(event); setFromOpacityElement(event);
captureMouse();
} }
} }
function onMouseUp(event) { function onMouseUp(event) {
if (event.button === 0) { if (releaseMouse(event, ['saturation', 'hue', 'opacity']) &&
releaseMouse(); !event.target.closest('.codemirror-colorview, .colorpicker-popup, .CodeMirror')) {
dragging.saturation = dragging.hue = dragging.opacity = false; hide();
if (!event.target.closest('.codemirror-colorview, .colorpicker-popup, .CodeMirror')) {
hide();
}
} }
} }
@ -640,16 +622,36 @@
} }
} }
function captureMouse() { function captureMouse({button}, mode) {
if (button !== 0) {
return;
}
document.addEventListener('mouseup', onMouseUp); document.addEventListener('mouseup', onMouseUp);
document.addEventListener('mousemove', onMouseMove); document.addEventListener('mousemove', onMouseMove);
if (!mode) {
return;
}
for (const m of (Array.isArray(mode) ? mode : [mode])) {
dragging[m] = true;
}
userActivity = performance.now(); userActivity = performance.now();
return true;
} }
function releaseMouse() { function releaseMouse(event, mode) {
if (event && event.button !== 0) {
return;
}
document.removeEventListener('mouseup', onMouseUp); document.removeEventListener('mouseup', onMouseUp);
document.removeEventListener('mousemove', onMouseMove); document.removeEventListener('mousemove', onMouseMove);
if (!mode) {
return;
}
for (const m of (Array.isArray(mode) ? mode : [mode])) {
dragging[m] = false;
}
userActivity = performance.now(); userActivity = performance.now();
return true;
} }
function getTouchPosition(event) { function getTouchPosition(event) {