Просмотр исходного кода

fix colorpicker in text editor. now inits with selected color and prevents event errors in wysihtml5 framework.

Joscha Jaeger 10 лет назад
Родитель
Сommit
c90014f525
2 измененных файлов с 33 добавлено и 21 удалено
  1. 14 21
      src/allplatforms/classes/TextEditor.js
  2. 19 0
      src/allplatforms/libs/wysihtml5/wysihtml5.js

+ 14 - 21
src/allplatforms/classes/TextEditor.js

@@ -206,7 +206,11 @@ SC.loadPackage({ 'TextEditor': {
 
                         initialColor: undefined,
                         setCallback: function(colorCode){
-                            editor.composer.commands.exec('fontColorStyle', colorCode );
+                            
+                            if ( editor.composer.commands.stateValue("fontColorStyle") !== colorCode ) {
+                                editor.composer.commands.exec('fontColorStyle', colorCode );
+                            }
+
                         }
 
                     });
@@ -266,34 +270,23 @@ SC.loadPackage({ 'TextEditor': {
 
                     document.querySelector('.wysihtml5-sandbox').contentWindow.addEventListener('mouseup', function(evt) {
                         if (!fired) {
-                            if (this.getSelection().type != 'Range') {
+                            if (this.getSelection().type == 'Range') {
                                                                 
-                                //$('#textShapeToolbar .colorpicker2').removeClass('active');
-                                tmpTextColor = "rgb(0,0,0)";
-
-                            } else {
-                                
                                 var currentFontColor = undefined;
 
-                                /*
-                                var sel = editor.composer.selection.getSelection();
-                                if (sel.rangeCount > 0) {
-                                    var range = sel.getRangeAt(0);
-                                    var parentElement = range.commonAncestorContainer;
-                                    if (parentElement.nodeType == 3) {
-                                        parentElement = parentElement.parentNode;
-                                    }
-                                    if (parentElement.style.color.length > 0) {
-                                        currentFontColor = parentElement.style.color;
-                                    }
+                                if ( editor.composer.commands.stateValue("fontColorStyle") ) {
+                                    currentFontColor = editor.composer.commands.stateValue("fontColorStyle");
                                 }
-                                */
 
                                 self.do('initColorpicker', {
 
                                     initialColor: currentFontColor,
                                     setCallback: function(colorCode){
-                                        editor.composer.commands.exec('fontColorStyle', colorCode );
+                                        
+                                        if ( editor.composer.commands.stateValue("fontColorStyle") !== colorCode ) {
+                                            editor.composer.commands.exec('fontColorStyle', colorCode );
+                                        }
+
                                     }
 
                                 });
@@ -627,7 +620,7 @@ SC.loadPackage({ 'TextEditor': {
                         colorpickerInputB.value = rgb.b;
                         
                         
-                        colorPickerConfig.setCallback.call(this, 'rgb('+rgb.r+', '+rgb.g+', '+rgb.b+')');
+                        colorPickerConfig.setCallback.call(this, 'rgb('+rgb.r+','+rgb.g+','+rgb.b+')');
                     }
 
                 }

+ 19 - 0
src/allplatforms/libs/wysihtml5/wysihtml5.js

@@ -10418,6 +10418,25 @@ wysihtml5.Commands = Base.extend(
 
 		state: function(composer, command, value) {
 			return wysihtml5.commands.formatInline.state(composer, command, "span", false, false, "color", REG_EXP);
+		},
+		
+		stateValue: function(composer, command, props) {
+			var st = this.state(composer, command),
+				colorStr,
+				val = false;
+
+			if (st && wysihtml5.lang.object(st).isArray()) {
+				st = st[0];
+			}
+
+			if (st) {
+				colorStr = st.getAttribute('style');
+				if (colorStr) {
+					val = wysihtml5.quirks.styleParser.parseColor(colorStr, "color");
+					return wysihtml5.quirks.styleParser.unparseColor(val, props);
+				}
+			}
+			return false;
 		}
 	};
 })(wysihtml5);