From 2dded9459bdda5b5237be97b6ea1a6c7edd55066 Mon Sep 17 00:00:00 2001 From: Mark MacKay Date: Thu, 10 Dec 2020 15:46:17 -0600 Subject: [PATCH] gradient fix --- src/js/lib/jquery.jgraduate.js | 81 +++++++++++++++++++--------------- 1 file changed, 45 insertions(+), 36 deletions(-) diff --git a/src/js/lib/jquery.jgraduate.js b/src/js/lib/jquery.jgraduate.js index 673200b..bc7ecc6 100644 --- a/src/js/lib/jquery.jgraduate.js +++ b/src/js/lib/jquery.jgraduate.js @@ -52,12 +52,6 @@ $.jGraduate.Paint({hex: "#rrggbb", linearGradient: o}) -> throws an exception? (function() { var ns = { svg: 'http://www.w3.org/2000/svg', xlink: 'http://www.w3.org/1999/xlink' }; -if(!window.console) { - window.console = new function() { - this.log = function(str) {}; - this.dir = function(str) {}; - }; -} $.jGraduate = { Paint: @@ -293,7 +287,7 @@ jQuery.fn.jGraduate = '
' + '' + '
' + - '' + + '' + '' + '
' + '' + @@ -534,40 +528,49 @@ jQuery.fn.jGraduate = 'stroke-width': 1.5 }, stopGroup); - $(path).mousedown(function(e) { + var $path = $(path); + + $path + .data('stop', stop) + .data('bg', pathbg) + .on("click", function(e) { + if (wasDragged) return wasDragged = false; // just dragged stop + $('div.jGraduate_LightBox').show(); + var colorhandle = this; + var stopOpacity = +stop.getAttribute('stop-opacity') || 1; + var stopColor = stop.getAttribute('stop-color') || 1; + var thisAlpha = (parseFloat(stopOpacity)*255).toString(16); + while (thisAlpha.length < 2) { thisAlpha = "0" + thisAlpha; } + color = stopColor.substr(1) + thisAlpha; + $('#'+id+'_jGraduate_stopPicker').css({'left': 100, 'bottom': 15}).jPicker({ + window: { title: "Pick the start color and opacity for the gradient" }, + images: { clientPath: $settings.images.clientPath }, + color: { active: color, alphaSupport: true } + }, function(color, arg2){ + stopColor = color.val('hex') ? ('#'+color.val('hex')) : "none"; + stopOpacity = color.val('a') !== null ? color.val('a')/256 : 1; + colorhandle.setAttribute('fill', stopColor); + colorhandle.setAttribute('fill-opacity', stopOpacity); + stop.setAttribute('stop-color', stopColor); + stop.setAttribute('stop-opacity', stopOpacity); + $('div.jGraduate_LightBox').hide(); + $('#'+id+'_jGraduate_stopPicker').hide(); + }, null, function() { + $('div.jGraduate_LightBox').hide(); + $('#'+id+'_jGraduate_stopPicker').hide(); + }); + }); + + $path.mousedown(function(e) { selectStop(this); drag = cur_stop; + wasDragged = false; $win.mousemove(dragColor).mouseup(remDrags); stop_offset = stopMakerDiv.offset(); e.preventDefault(); return false; - }).data('stop', stop).data('bg', pathbg).dblclick(function() { - $('div.jGraduate_LightBox').show(); - var colorhandle = this; - var stopOpacity = +stop.getAttribute('stop-opacity') || 1; - var stopColor = stop.getAttribute('stop-color') || 1; - var thisAlpha = (parseFloat(stopOpacity)*255).toString(16); - while (thisAlpha.length < 2) { thisAlpha = "0" + thisAlpha; } - color = stopColor.substr(1) + thisAlpha; - $('#'+id+'_jGraduate_stopPicker').css({'left': 100, 'bottom': 15}).jPicker({ - window: { title: "Pick the start color and opacity for the gradient" }, - images: { clientPath: $settings.images.clientPath }, - color: { active: color, alphaSupport: true } - }, function(color, arg2){ - stopColor = color.val('hex') ? ('#'+color.val('hex')) : "none"; - stopOpacity = color.val('a') !== null ? color.val('a')/256 : 1; - colorhandle.setAttribute('fill', stopColor); - colorhandle.setAttribute('fill-opacity', stopOpacity); - stop.setAttribute('stop-color', stopColor); - stop.setAttribute('stop-opacity', stopOpacity); - $('div.jGraduate_LightBox').hide(); - $('#'+id+'_jGraduate_stopPicker').hide(); - }, null, function() { - $('div.jGraduate_LightBox').hide(); - $('#'+id+'_jGraduate_stopPicker').hide(); - }); }); - + $(curGradient).find('stop').each(function() { var cur_s = $(this); if(+this.getAttribute('offset') > n) { @@ -597,6 +600,8 @@ jQuery.fn.jGraduate = var stops, stopGroup; + + var wasDragged = false; var stopMakerDiv = $('#' + id + '_jGraduate_StopSlider'); @@ -623,7 +628,10 @@ jQuery.fn.jGraduate = var stop_offset; - function remDrags() { + function remDrags(e) { + if (!wasDragged) { + $(e.target).trigger("click"); // safari and windows fix, others no harm done + } $win.unbind('mousemove', dragColor); if(delStop.getAttribute('display') !== 'none') { remStop(); @@ -649,7 +657,7 @@ jQuery.fn.jGraduate = } function dragColor(evt) { - + wasDragged = true; var x = evt.pageX - stop_offset.left; var y = evt.pageY - stop_offset.top; x = x < 10 ? 10 : x > MAX + 10 ? MAX + 10: x; @@ -1062,6 +1070,7 @@ jQuery.fn.jGraduate = }); var dragSlider = function(evt) { + wasDragged = true; setSlider(evt); evt.preventDefault(); };