From 6218777acc138cfdbe57fc61057b9411bce5fa46 Mon Sep 17 00:00:00 2001 From: Neil Fraser Date: Sun, 10 May 2015 15:13:50 -0700 Subject: [PATCH 1/4] Reduce image sizes by using greyscale. --- blocks/text.js | 4 ++-- blocks_compressed.js | 2 +- media/quote0.png | Bin 880 -> 796 bytes media/quote1.png | Bin 840 -> 738 bytes media/sprites.png | Bin 1129 -> 819 bytes 5 files changed, 3 insertions(+), 3 deletions(-) diff --git a/blocks/text.js b/blocks/text.js index b885cfc46..9457258a6 100644 --- a/blocks/text.js +++ b/blocks/text.js @@ -55,9 +55,9 @@ Blockly.Blocks['text'] = { */ newQuote_: function(open) { if (open == this.RTL) { - var file = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAYAAACALL/6AAAA0UlEQVQY023QP0oDURSF8e8MImhlUIiCjWKhrUUK3YCIVkq6bMAF2LkCa8ENWLoNS1sLEQKprMQ/GBDks3kDM+Oc8nfPfTxuANQTYBeYAvdJLL4FnAFfwF2ST9Rz27kp5YH/kwrYp50LdaXHAU4rYNYzWAdeenx7AbgF5sAhcARsAkkyVQ+ACbAKjIGqta4+l78udXxc/LiJG+qvet0pV+q7+tHE+iJzdbGz8FhmOzVcqj/qq7rcKI7Ut1Leq70C1oCrJMMk343HB8ADMEzyVOMff72l48gwfqkAAAAASUVORK5CYII='; + var file = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAqUlEQVQI1z3KvUpCcRiA8ef9E4JNHhI0aFEacm1o0BsI0Slx8wa8gLauoDnoBhq7DcfWhggONDmJJgqCPA7neJ7p934EOOKOnM8Q7PDElo/4x4lFb2DmuUjcUzS3URnGib9qaPNbuXvBO3sGPHJDRG6fGVdMSeWDP2q99FQdFrz26Gu5Tq7dFMzUvbXy8KXeAj57cOklgA+u1B5AoslLtGIHQMaCVnwDnADZIFIrXsoXrgAAAABJRU5ErkJggg=='; } else { - var file = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAYAAACALL/6AAAAvklEQVQY022PoapCQRRF97lBVDRYhBcEQcP1BwS/QLAqr7xitZn0HzRr8Rts+htmQdCqSbQIwmMZPMIw3lVmZu0zG44UAFSBLdBVBDAFZqFo8eYKtANfBC7AE5h8ZNOHd1FrDnh4VgmDO3ADkujDHPgHfkLZ84bfaLjg/hD6RFLq9z6wBDr+rvuZB1bAEDABY76pA2mGHyWSjvqmIemc4WsCLKOp4nssIj8wD8qS/iSVJK3N7OTeJPV9n72ZbV7iDuSc2BaQBQAAAABJRU5ErkJggg=='; + var file = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAn0lEQVQI1z3OMa5BURSF4f/cQhAKjUQhuQmFNwGJEUi0RKN5rU7FHKhpjEH3TEMtkdBSCY1EIv8r7nFX9e29V7EBAOvu7RPjwmWGH/VuF8CyN9/OAdvqIXYLvtRaNjx9mMTDyo+NjAN1HNcl9ZQ5oQMM3dgDUqDo1l8DzvwmtZN7mnD+PkmLa+4mhrxVA9fRowBWmVBhFy5gYEjKMfz9AylsaRRgGzvZAAAAAElFTkSuQmCC'; } return new Blockly.FieldImage(file, 12, 12, '"'); } diff --git a/blocks_compressed.js b/blocks_compressed.js index b3677fb1f..a78e35a99 100644 --- a/blocks_compressed.js +++ b/blocks_compressed.js @@ -120,7 +120,7 @@ document.createElement("mutation");a.setAttribute("value",Number(this.hasReturnV b.type&&this.hasReturnValue_?(this.removeInput("VALUE"),this.appendDummyInput("VALUE").appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN),this.hasReturnValue_=!1):"procedures_defreturn"!=b.type||this.hasReturnValue_||(this.removeInput("VALUE"),this.appendValueInput("VALUE").appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN),this.hasReturnValue_=!0),this.setWarningText(null)):this.setWarningText(Blockly.Msg.PROCEDURES_IFRETURN_WARNING)}}}; // Copyright 2012 Google Inc. Apache License 2.0 Blockly.Blocks.texts={};Blockly.Blocks.texts.HUE=160; -Blockly.Blocks.text={init:function(){this.setHelpUrl(Blockly.Msg.TEXT_TEXT_HELPURL);this.setColour(Blockly.Blocks.texts.HUE);this.appendDummyInput().appendField(this.newQuote_(!0)).appendField(new Blockly.FieldTextInput(""),"TEXT").appendField(this.newQuote_(!1));this.setOutput(!0,"String");this.setTooltip(Blockly.Msg.TEXT_TEXT_TOOLTIP)},newQuote_:function(a){return new Blockly.FieldImage(a==this.RTL?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAYAAACALL/6AAAA0UlEQVQY023QP0oDURSF8e8MImhlUIiCjWKhrUUK3YCIVkq6bMAF2LkCa8ENWLoNS1sLEQKprMQ/GBDks3kDM+Oc8nfPfTxuANQTYBeYAvdJLL4FnAFfwF2ST9Rz27kp5YH/kwrYp50LdaXHAU4rYNYzWAdeenx7AbgF5sAhcARsAkkyVQ+ACbAKjIGqta4+l78udXxc/LiJG+qvet0pV+q7+tHE+iJzdbGz8FhmOzVcqj/qq7rcKI7Ut1Leq70C1oCrJMMk343HB8ADMEzyVOMff72l48gwfqkAAAAASUVORK5CYII=":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAYAAACALL/6AAAAvklEQVQY022PoapCQRRF97lBVDRYhBcEQcP1BwS/QLAqr7xitZn0HzRr8Rts+htmQdCqSbQIwmMZPMIw3lVmZu0zG44UAFSBLdBVBDAFZqFo8eYKtANfBC7AE5h8ZNOHd1FrDnh4VgmDO3ADkujDHPgHfkLZ84bfaLjg/hD6RFLq9z6wBDr+rvuZB1bAEDABY76pA2mGHyWSjvqmIemc4WsCLKOp4nssIj8wD8qS/iSVJK3N7OTeJPV9n72ZbV7iDuSc2BaQBQAAAABJRU5ErkJggg==", +Blockly.Blocks.text={init:function(){this.setHelpUrl(Blockly.Msg.TEXT_TEXT_HELPURL);this.setColour(Blockly.Blocks.texts.HUE);this.appendDummyInput().appendField(this.newQuote_(!0)).appendField(new Blockly.FieldTextInput(""),"TEXT").appendField(this.newQuote_(!1));this.setOutput(!0,"String");this.setTooltip(Blockly.Msg.TEXT_TEXT_TOOLTIP)},newQuote_:function(a){return new Blockly.FieldImage(a==this.RTL?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAqUlEQVQI1z3KvUpCcRiA8ef9E4JNHhI0aFEacm1o0BsI0Slx8wa8gLauoDnoBhq7DcfWhggONDmJJgqCPA7neJ7p934EOOKOnM8Q7PDElo/4x4lFb2DmuUjcUzS3URnGib9qaPNbuXvBO3sGPHJDRG6fGVdMSeWDP2q99FQdFrz26Gu5Tq7dFMzUvbXy8KXeAj57cOklgA+u1B5AoslLtGIHQMaCVnwDnADZIFIrXsoXrgAAAABJRU5ErkJggg==":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAKCAQAAAAqJXdxAAAAn0lEQVQI1z3OMa5BURSF4f/cQhAKjUQhuQmFNwGJEUi0RKN5rU7FHKhpjEH3TEMtkdBSCY1EIv8r7nFX9e29V7EBAOvu7RPjwmWGH/VuF8CyN9/OAdvqIXYLvtRaNjx9mMTDyo+NjAN1HNcl9ZQ5oQMM3dgDUqDo1l8DzvwmtZN7mnD+PkmLa+4mhrxVA9fRowBWmVBhFy5gYEjKMfz9AylsaRRgGzvZAAAAAElFTkSuQmCC", 12,12,'"')}}; Blockly.Blocks.text_join={init:function(){this.setHelpUrl(Blockly.Msg.TEXT_JOIN_HELPURL);this.setColour(Blockly.Blocks.texts.HUE);this.itemCount_=2;this.updateShape_();this.setOutput(!0,"String");this.setMutator(new Blockly.Mutator(["text_create_join_item"]));this.setTooltip(Blockly.Msg.TEXT_JOIN_TOOLTIP)},mutationToDom:function(){var a=document.createElement("mutation");a.setAttribute("items",this.itemCount_);return a},domToMutation:function(a){this.itemCount_=parseInt(a.getAttribute("items"),10); this.updateShape_()},decompose:function(a){var b=Blockly.Block.obtain(a,"text_create_join_container");b.initSvg();for(var c=b.getInput("STACK").connection,d=0;d~*nbLO6(7QL%`&V6|K&i9?~oC8?I6tD3zeK?6rIK=y`vxECMOOo7w z>15l%X_DkYGuFu43^l^#4l4^a$p$^xOIat3w!1ka(HG;fB!?B-BD=Mw37(~@V{u>; z#}(`hR~S+-qR>~kCJtQB=Mq+6yCDS`C5S0@#)BKnbq#frwf|syo=fAwoDyx9v0$s1 zm*`#{n3S?r=imei*QlN=Sma~4}U z4R;I$X1@SVGGj5`Dx6E0Lw@B4!i>G{mJ`M{rFY(E8 zI_?s_$M8{Wj5M|iGf%yr=A#_q)|$n4y)h67Gp{W1)?Q&?+`M%>?I3hK2B3?iXzS$QxWZLAHZkKSz>O(x=JpPu&!}?$=G*5 zqlht&87sZAWcuhBMM#7#$I0AtoHi~lF^!a^rP<9B#w zL5o7`eZYi;E>udr!?=BhmF{a+9#pa(O0P}ja-{i$<^hATdb{(K#?&7lPv#s?D?NLwvNo^!21X;&2oT^0UVHPFYpMnrWDy|1Z@ls5@c;D{7hXoI8Csi0 Q<^TWy07*qoM6N<$g3W47YybcN delta 800 zcmV+*1K<3d2Ji-u85#xv008pW*lYj*00v@9M??Vs0RI60puMM)kuMmLS~7p$NklW05^XFqx{vn6wNjR!v*YZKCoKgDwEX<%uH#Lz{8E97fkzhD zAh5zQ1gc{O;t9}_1h_P`Qo}j`O!-GC%?0``?2dn=zzR!T<$xv+ zvss|WVz$i%deUNcwdX#&-(t4i1=wN%ZuB&}ER-1wwc7<)0rW)xk9(T6g~Bzb#S3&s z0Ed8TPs5umVbu=Z;bisa|o9dwOx%$`s`v@lFB3cJo6mgIg*w{wDlWf zekOsH1>XxLMP;vxz^>qTe(M>Q)F)}MgwZ#WzD2ZM0GdPW*OKlAe`X?T+FEf_4%lw1 z<$#))Gl@-|;r-dSXsnUcBk8)ONc<&f!jXST(rutJEyH>3l(c_0qODv~r3brR(&4b- zaY;W#yy5pL7;cobs8|?F%BC=jYYGi#Qi2v6;c-bLDX?c38vc+H zw5rInA0CUYc;Ya|e3EoC1>VO=0sJR1Tu#++L0 zjCm87_R(Omth9I*cXh{PyoQ)-D4T9YCZ?Do5uY(JcEo4CcMx?oXLU2O1F| zzyjvHvJGqHU8*+E3v9KDuI3nZyT%8F8)Z8=ZKTgd!5r;2VA$KVl|HS4Nj`B1 ze_^{Oo8UNIwtssOEzoVZHQ_FSe#`~{NC3zSC#Rbm6>q&j@5Sbta9Kce=vKUpKxc5E zCM?@Y)`jaPksjiTxWXwc3)c%Gy#>t`;U6*3bhw@s=`#LQgx|zK7hC@;CdDkb013dG z#HfHafZ=eN#h56ZuI2a!d?)%Hf#Ti4gV;lk^&D{=`hWLa7wNvEoOAF+ZEP}y0!r8f z;1_@siqZ!h@n#~SB#}oSwpZyA)L-xMUfcI@Mu}jG8-yJXME7So$E-s^aX;akkV|zI z2d>Urj;!MO-cM(|N$gkLcaA3FPOTVSLL&4Deb^Q8kg|S?&q5;l(H5>>;FUdscI`0r z3-M<8R)3*KTxa^e0zRw^Zinz?g?`4BcJP>XS9b`qC9N7gcJQF}ax~Gqw4`0JgT0!p zkOt;7S>Kul4r{W{+2WKfM&^n6dBYS(HE@Di=g>N<(No-J27CDNA7nfEG7@c@30uRP zk+J7l4*L$UNZJBnZx6jl1}kz8imPuOqqp(8DN>D<|l8jP=q9h>~22s%_DCiGpQ4nNNK|=dLidsYw zt%3(_TG$VY3=$!u7HYc5c4bDNHd8#NcjvvicUpAdF>o&LGhfb}Gv~~a{xdVS1E5mU zT1kbH=7Qh2q$y*}51*TV0_Bn#Bo$|{rzK4qV`k&RYJpqWZ3;LG)H(=V3Jef!mw^rW z0(TJ4dSi%f1jb^pPv-(Q;bz@=KD99i_6Zv>1w3>V`~j$s5L*BY;%=L>LEG`O8xew= zJ=qU{qTjrN;M(f>wrK%YTFz=b*;^&84hx?3gf>ZPv7A+UvMVKj?F6k~+&C5Cx z8uLw3pQMA5J|#YXUIHbO+9h>LS{1mz2iL4G7p6F;z8trbE=syw^3tJr@5XN$)+=p-WPKT^9dSNzYv(P!CL6BGBa- z-74Ufg?-coSP0y)0PkfE*p7lPSlEw&#V)|Uh%e{{PqCd5b0V+JiM(sa_V=ZZb5}-csOC9|%?IwxpI7Kx?Qo?nwfg0`3E6 nfZ`-q{K59}N)k^@l70aLBzN;pJEoTa0000ljQ6oroqZZa^1h|&mkU_gpGfap+0n3(z(BC&K}NhOdH zh!7pSAkl@=jb_Y3x0XtfpTLGxMGaEQ){v4$m4L=M3?+_V{A?$V6N+??r}#d<^V#>k z`>q09SS^lmbf8jy*n~CI6CIQ=7mfKevS@;!eP;m{sJS|h_a=x_tRgM;@aTm zCYEue`NU4eP*GylzHGanK1L3)VDl-U&q}Xf$Sc2};%Bsf8!spY0I+9AKDlBerJ%P6 zcYFcnaR!2DYZlqai_m`?cC`V5c%zAQpQ#}eeIarts*VPd9srRPqI1o9mf{s;$6bp3 zj~5f>Bn~4H04|PibntX3ZgQx8fE|_?%_8J9vuu*Iw;>m3QKwGty-AX%TxEQqJyyhH zFZ(4Pbmw<}+}+XwIQjwm-XSye?+4=ejBQ-jnWwqyoZk_dIsYb#T1;sGNU}`7Qv4SC zxZ*ZXaGh<{L5UY!07^g57qeKT{xG_a-?-avZgQDN?k}v2iLs&tt7^722|8wuF;|)Y zg4dz?0mIb~7{m1gH*gieBP8)szxV=D007*xL#}>*ATR|L)Nu=6QSjS*3oz(x2F78+$o&% zHJtS-#av-_%%#}>c%eyi0*8@EB$}jryO*^&lyTE%K#dQcRmTPpXdelJF_L`*2nGPG zG5Xwb<_G+%YU*DvLIDr}(M387qAEvuLw11x2!H?xfB*=900@8p2!H?xfB*=900@8p z{I>wDNM>w?2lyBXz=zNPMjk&#w*PKC2@R0jH}2s*PC}cXpk&<1eH-qfKY&G~^vkHb Q5dZ)H07*qoM6N<$g5OkH`2YX_ literal 1129 zcmeAS@N?(olHy`uVBq!ia0vp^4nQ2k!3HGn)o!)}QY^(zo*^7SP{WbZ0pxQQctjQh z)t>-i#@bJ+D}aKMC9V-A!TD(=<%vb94CUqJdYO6I#mR{Use1WE>9gP2NHH)lKl5~P z45^s&cGmuU5qF8U`HVRlEBZ8!a0CV@M2d7eO`NjO>*)Rl7iULip^5KgS{CeK(=-vV zT2LZvRp;@*UNKfBB~itheTD>gXTw|bqxTl3-kdvk=iRgAp3f$RZQAnr?4J9(t#{wA zv-5EIe0P7zyJIp8c?{9A>o)T0FtuC7D9?&~ptFH5qeR5gEv<*CKljx7Z$JJ-KQP*` ze6NYxW0nss=Y=&Mhn?K9>T%jpnWKg08zwho&+%0Gd|UUE;m}0 zG_7I1^fM6`{vBL7RYyW3844Dv`5ibvuOj}ASb_A9qD5!2W-$6O>oW;`klY|0@$Jak z2luZlX76YFwRo%4X65Y#(tlWaY@XLM-P^h)Ox@%zQ?lHYBQ{(e#_bU+9~FaXp7vXC<%L&Uw=Hx(3U3oYT6QePPN3rxiVNAA};9_i^+{p0_t`4VY*7 z$opY&%ClCZsY?qc&fuRm^Ww#$cRE{GCt24qi6lbU`r&N>#fqeICqV#?mQ=HHBl#p*(xE=m(K&K#LL z?O{Ph$D8`HcJ(<)p_e|kwzf|7G~II0g>B1(KN7{li+D2(e;O`Rt1(HiklFTCxzkUQ zhi&b@ge>>J6aJf>WXNW`roz02RYiz1*sHrMQ@iVyUfriZ@8z4|QW2ARHi#wo8Xbsg zFr}JcaO#0$_Nxw^ubMtNT=K())2_-p?>~LAl+EHf+kyG9dNL=ppWpeZC$3?-;Qo92 zvU9ckf7tfC402%2Z*YBn$NX>I|H|pye|aV5O_upHmq`m)EHHSw`njxgN@xNAIGyOi From bfee4277e986f07d882840a3cb9c0edec4e33d38 Mon Sep 17 00:00:00 2001 From: Neil Fraser Date: Sun, 10 May 2015 23:21:11 -0700 Subject: [PATCH 2/4] Suppress redefinition warning. --- core/msg.js | 1 + 1 file changed, 1 insertion(+) diff --git a/core/msg.js b/core/msg.js index dda9b1730..c7e0eb906 100644 --- a/core/msg.js +++ b/core/msg.js @@ -40,6 +40,7 @@ goog.getMsgOrig = goog.getMsg; * @param {string} str Translatable string, places holders in the form {$foo}. * @param {Object=} opt_values Maps place holder name to value. * @return {string} message with placeholders filled. + * @suppress {duplicate} */ goog.getMsg = function(str, opt_values) { var key = goog.getMsg.blocklyMsgMap[str]; From 2a9993e5f3e1a19797a11670464a0399e64250b6 Mon Sep 17 00:00:00 2001 From: Neil Fraser Date: Wed, 13 May 2015 22:45:51 -0700 Subject: [PATCH 3/4] Fix cloud storage (issue 100) --- appengine/storage.js | 16 +++++++++------- demos/code/code.js | 26 +++++++++++++------------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/appengine/storage.js b/appengine/storage.js index da2273014..4f8a78e8b 100644 --- a/appengine/storage.js +++ b/appengine/storage.js @@ -29,13 +29,12 @@ var BlocklyStorage = {}; /** * Backup code blocks to localStorage. - * @param {Blockly.WorkspaceSvg} opt_workspace Workspace. + * @param {!Blockly.WorkspaceSvg} workspace Workspace. * @private */ -BlocklyStorage.backupBlocks_ = function(opt_workspace) { +BlocklyStorage.backupBlocks_ = function(workspace) { if ('localStorage' in window) { - var workspace = opt_workspace || Blockly.getMainWorkspace(); - var xml = Blockly.Xml.workspaceToDom(Blockly.workspace); + var xml = Blockly.Xml.workspaceToDom(workspace); // Gets the current URL, not including the hash. var url = window.location.href.split('#')[0]; window.localStorage.setItem(url, Blockly.Xml.domToText(xml)); @@ -44,9 +43,12 @@ BlocklyStorage.backupBlocks_ = function(opt_workspace) { /** * Bind the localStorage backup function to the unload event. + * @param {Blockly.WorkspaceSvg} opt_workspace Workspace. */ -BlocklyStorage.backupOnUnload = function() { - window.addEventListener('unload', BlocklyStorage.backupBlocks_, false); +BlocklyStorage.backupOnUnload = function(opt_workspace) { + var workspace = opt_workspace || Blockly.getMainWorkspace(); + window.addEventListener('unload', + function() {BlocklyStorage.backupBlocks_(workspace);}, false); }; /** @@ -70,7 +72,7 @@ BlocklyStorage.link = function(opt_workspace) { var workspace = opt_workspace || Blockly.getMainWorkspace(); var xml = Blockly.Xml.workspaceToDom(workspace); var data = Blockly.Xml.domToText(xml); - BlocklyStorage.makeRequest_('/storage', 'xml', data); + BlocklyStorage.makeRequest_('/storage', 'xml', data, workspace); }; /** diff --git a/demos/code/code.js b/demos/code/code.js index 2fed68b40..d285e5d70 100644 --- a/demos/code/code.js +++ b/demos/code/code.js @@ -335,18 +335,6 @@ Code.renderContent = function() { Code.init = function() { Code.initLanguage(); - // Disable the link button if page isn't backed by App Engine storage. - var linkButton = document.getElementById('linkButton'); - if ('BlocklyStorage' in window) { - BlocklyStorage['HTTPREQUEST_ERROR'] = MSG['httpRequestError']; - BlocklyStorage['LINK_ALERT'] = MSG['linkAlert']; - BlocklyStorage['HASH_ERROR'] = MSG['hashError']; - BlocklyStorage['XML_ERROR'] = MSG['xmlError']; - Code.bindClick(linkButton, BlocklyStorage.link); - } else if (linkButton) { - linkButton.className = 'disabled'; - } - var rtl = Code.isRtl(); var container = document.getElementById('content_area'); var onresize = function(e) { @@ -390,7 +378,7 @@ Code.init = function() { if ('BlocklyStorage' in window) { // Hook a save function onto unload. - BlocklyStorage.backupOnUnload(); + BlocklyStorage.backupOnUnload(Code.workspace); } Code.tabClick(Code.selected); @@ -399,6 +387,18 @@ Code.init = function() { Code.bindClick('trashButton', function() {Code.discard(); Code.renderContent();}); Code.bindClick('runButton', Code.runJS); + // Disable the link button if page isn't backed by App Engine storage. + var linkButton = document.getElementById('linkButton'); + if ('BlocklyStorage' in window) { + BlocklyStorage['HTTPREQUEST_ERROR'] = MSG['httpRequestError']; + BlocklyStorage['LINK_ALERT'] = MSG['linkAlert']; + BlocklyStorage['HASH_ERROR'] = MSG['hashError']; + BlocklyStorage['XML_ERROR'] = MSG['xmlError']; + Code.bindClick(linkButton, + function() {BlocklyStorage.link(Code.workspace);}); + } else if (linkButton) { + linkButton.className = 'disabled'; + } for (var i = 0; i < Code.TABS_.length; i++) { var name = Code.TABS_[i]; From 3cf4b51c31d05f4d73012e84903c131bf505c06c Mon Sep 17 00:00:00 2001 From: Neil Fraser Date: Wed, 13 May 2015 23:04:09 -0700 Subject: [PATCH 4/4] Remove bubble's filter for JavaFX (issue 99). --- blockly_compressed.js | 4 ++-- blockly_uncompressed.js | 26 ++++++++++++++------------ core/bubble.js | 11 ++++++++++- 3 files changed, 26 insertions(+), 15 deletions(-) diff --git a/blockly_compressed.js b/blockly_compressed.js index acb22ceaa..241e6b2f2 100644 --- a/blockly_compressed.js +++ b/blockly_compressed.js @@ -854,8 +854,8 @@ Blockly.Bubble=function(a,b,c,d,e,f,g){this.workspace_=a;this.content_=b;this.sh "mousedown",this,this.bubbleMouseDown_),this.resizeGroup_&&Blockly.bindEvent_(this.resizeGroup_,"mousedown",this,this.resizeMouseDown_))};Blockly.Bubble.BORDER_WIDTH=6;Blockly.Bubble.ARROW_THICKNESS=10;Blockly.Bubble.ARROW_ANGLE=20;Blockly.Bubble.ARROW_BEND=4;Blockly.Bubble.ANCHOR_RADIUS=8;Blockly.Bubble.onMouseUpWrapper_=null;Blockly.Bubble.onMouseMoveWrapper_=null; Blockly.Bubble.unbindDragEvents_=function(){Blockly.Bubble.onMouseUpWrapper_&&(Blockly.unbindEvent_(Blockly.Bubble.onMouseUpWrapper_),Blockly.Bubble.onMouseUpWrapper_=null);Blockly.Bubble.onMouseMoveWrapper_&&(Blockly.unbindEvent_(Blockly.Bubble.onMouseMoveWrapper_),Blockly.Bubble.onMouseMoveWrapper_=null)};Blockly.Bubble.prototype.rendered_=!1;Blockly.Bubble.prototype.anchorX_=0;Blockly.Bubble.prototype.anchorY_=0;Blockly.Bubble.prototype.relativeLeft_=0;Blockly.Bubble.prototype.relativeTop_=0; Blockly.Bubble.prototype.width_=0;Blockly.Bubble.prototype.height_=0;Blockly.Bubble.prototype.autoLayout_=!0; -Blockly.Bubble.prototype.createDom_=function(a,b){this.bubbleGroup_=Blockly.createSvgElement("g",{},null);var c=Blockly.createSvgElement("g",{filter:"url(#blocklyEmboss)"},this.bubbleGroup_);this.bubbleArrow_=Blockly.createSvgElement("path",{},c);this.bubbleBack_=Blockly.createSvgElement("rect",{"class":"blocklyDraggable",x:0,y:0,rx:Blockly.Bubble.BORDER_WIDTH,ry:Blockly.Bubble.BORDER_WIDTH},c);b?(this.resizeGroup_=Blockly.createSvgElement("g",{"class":this.workspace_.RTL?"blocklyResizeSW":"blocklyResizeSE"}, -this.bubbleGroup_),c=2*Blockly.Bubble.BORDER_WIDTH,Blockly.createSvgElement("polygon",{points:"0,x x,x x,0".replace(/x/g,c.toString())},this.resizeGroup_),Blockly.createSvgElement("line",{"class":"blocklyResizeLine",x1:c/3,y1:c-1,x2:c-1,y2:c/3},this.resizeGroup_),Blockly.createSvgElement("line",{"class":"blocklyResizeLine",x1:2*c/3,y1:c-1,x2:c-1,y2:2*c/3},this.resizeGroup_)):this.resizeGroup_=null;this.bubbleGroup_.appendChild(a);return this.bubbleGroup_}; +Blockly.Bubble.prototype.createDom_=function(a,b){this.bubbleGroup_=Blockly.createSvgElement("g",{},null);var c={filter:"url(#blocklyEmboss)"};-1!=goog.userAgent.getUserAgentString().indexOf("JavaFX")&&(c={});c=Blockly.createSvgElement("g",c,this.bubbleGroup_);this.bubbleArrow_=Blockly.createSvgElement("path",{},c);this.bubbleBack_=Blockly.createSvgElement("rect",{"class":"blocklyDraggable",x:0,y:0,rx:Blockly.Bubble.BORDER_WIDTH,ry:Blockly.Bubble.BORDER_WIDTH},c);b?(this.resizeGroup_=Blockly.createSvgElement("g", +{"class":this.workspace_.RTL?"blocklyResizeSW":"blocklyResizeSE"},this.bubbleGroup_),c=2*Blockly.Bubble.BORDER_WIDTH,Blockly.createSvgElement("polygon",{points:"0,x x,x x,0".replace(/x/g,c.toString())},this.resizeGroup_),Blockly.createSvgElement("line",{"class":"blocklyResizeLine",x1:c/3,y1:c-1,x2:c-1,y2:c/3},this.resizeGroup_),Blockly.createSvgElement("line",{"class":"blocklyResizeLine",x1:2*c/3,y1:c-1,x2:c-1,y2:2*c/3},this.resizeGroup_)):this.resizeGroup_=null;this.bubbleGroup_.appendChild(a);return this.bubbleGroup_}; Blockly.Bubble.prototype.bubbleMouseDown_=function(a){this.promote_();Blockly.Bubble.unbindDragEvents_();Blockly.isRightButton(a)?a.stopPropagation():Blockly.isTargetInput_(a)||(Blockly.Css.setCursor(Blockly.Css.Cursor.CLOSED),this.dragDeltaX=this.workspace_.RTL?this.relativeLeft_+a.clientX:this.relativeLeft_-a.clientX,this.dragDeltaY=this.relativeTop_-a.clientY,Blockly.Bubble.onMouseUpWrapper_=Blockly.bindEvent_(document,"mouseup",this,Blockly.Bubble.unbindDragEvents_),Blockly.Bubble.onMouseMoveWrapper_= Blockly.bindEvent_(document,"mousemove",this,this.bubbleMouseMove_),Blockly.hideChaff(),a.stopPropagation())};Blockly.Bubble.prototype.bubbleMouseMove_=function(a){this.autoLayout_=!1;this.relativeLeft_=this.workspace_.RTL?this.dragDeltaX-a.clientX:this.dragDeltaX+a.clientX;this.relativeTop_=this.dragDeltaY+a.clientY;this.positionBubble_();this.renderArrow_()}; Blockly.Bubble.prototype.resizeMouseDown_=function(a){this.promote_();Blockly.Bubble.unbindDragEvents_();Blockly.isRightButton(a)||(Blockly.Css.setCursor(Blockly.Css.Cursor.CLOSED),this.resizeDeltaWidth=this.workspace_.RTL?this.width_+a.clientX:this.width_-a.clientX,this.resizeDeltaHeight=this.height_-a.clientY,Blockly.Bubble.onMouseUpWrapper_=Blockly.bindEvent_(document,"mouseup",this,Blockly.Bubble.unbindDragEvents_),Blockly.Bubble.onMouseMoveWrapper_=Blockly.bindEvent_(document,"mousemove",this, diff --git a/blockly_uncompressed.js b/blockly_uncompressed.js index 2985e6373..5d5b8870e 100644 --- a/blockly_uncompressed.js +++ b/blockly_uncompressed.js @@ -28,7 +28,7 @@ goog.addDependency("../../../" + dir + "/core/block.js", ['Blockly.Block'], ['Bl goog.addDependency("../../../" + dir + "/core/block_svg.js", ['Blockly.BlockSvg'], ['Blockly.Block', 'Blockly.ContextMenu', 'goog.asserts', 'goog.dom', 'goog.math.Coordinate', 'goog.Timer']); goog.addDependency("../../../" + dir + "/core/blockly.js", ['Blockly'], ['Blockly.BlockSvg', 'Blockly.FieldAngle', 'Blockly.FieldCheckbox', 'Blockly.FieldColour', 'Blockly.FieldDropdown', 'Blockly.FieldImage', 'Blockly.FieldTextInput', 'Blockly.FieldVariable', 'Blockly.Generator', 'Blockly.Msg', 'Blockly.Procedures', 'Blockly.Realtime', 'Blockly.Toolbox', 'Blockly.WidgetDiv', 'Blockly.WorkspaceSvg', 'Blockly.inject', 'Blockly.utils', 'goog.color']); goog.addDependency("../../../" + dir + "/core/blocks.js", ['Blockly.Blocks'], ['goog.asserts']); -goog.addDependency("../../../" + dir + "/core/bubble.js", ['Blockly.Bubble'], ['Blockly.Workspace', 'goog.dom', 'goog.math']); +goog.addDependency("../../../" + dir + "/core/bubble.js", ['Blockly.Bubble'], ['Blockly.Workspace', 'goog.dom', 'goog.math', 'goog.userAgent']); goog.addDependency("../../../" + dir + "/core/comment.js", ['Blockly.Comment'], ['Blockly.Bubble', 'Blockly.Icon', 'goog.userAgent']); goog.addDependency("../../../" + dir + "/core/connection.js", ['Blockly.Connection', 'Blockly.ConnectionDB'], ['goog.dom']); goog.addDependency("../../../" + dir + "/core/contextmenu.js", ['Blockly.ContextMenu'], ['goog.dom', 'goog.events', 'goog.style', 'goog.ui.Menu', 'goog.ui.MenuItem']); @@ -68,7 +68,7 @@ goog.addDependency("../../../" + dir + "/core/xml.js", ['Blockly.Xml'], ['goog.d goog.addDependency("../../alltests.js", [], []); goog.addDependency("base.js", [], []); goog.addDependency("base_module_test.js", [], []); -goog.addDependency("base_test.js", ['goog.baseTest', 'ns', 'goog.test.name.space', 'goog.test', 'goog.test.name', 'goog.xy', 'goog.xy.z', 'goog.explicit', 'goog.implicit.explicit', 'an.existing.path', 'dup.base', 'testDep.bar', 'far.out'], ['goog.Timer', 'goog.dom.TagName', 'goog.functions', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.userAgent', 'goog.test_module']); +goog.addDependency("base_test.js", ['goog.baseTest', 'ns', 'goog.test.name.space', 'goog.test', 'goog.test.name', 'goog.xy', 'goog.xy.z', 'goog.explicit', 'goog.implicit.explicit', 'an.existing.path', 'dup.base', 'testDep.bar', 'far.out'], ['goog.Promise', 'goog.Timer', 'goog.dom.TagName', 'goog.functions', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.userAgent', 'goog.test_module']); goog.addDependency("defineclass_test.js", ['goog.defineClassTest'], ['goog.testing.jsunit']); goog.addDependency("deps.js", [], []); goog.addDependency("test_module.js", [], []); @@ -401,7 +401,7 @@ goog.addDependency("events/actioneventwrapper_test.js", ['goog.events.actionEven goog.addDependency("events/actionhandler.js", ['goog.events.ActionEvent', 'goog.events.ActionHandler', 'goog.events.ActionHandler.EventType', 'goog.events.BeforeActionEvent'], ['goog.events', 'goog.events.BrowserEvent', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.userAgent']); goog.addDependency("events/actionhandler_test.js", ['goog.events.ActionHandlerTest'], ['goog.dom', 'goog.events', 'goog.events.ActionHandler', 'goog.testing.events', 'goog.testing.jsunit']); goog.addDependency("events/browserevent.js", ['goog.events.BrowserEvent', 'goog.events.BrowserEvent.MouseButton'], ['goog.events.BrowserFeature', 'goog.events.Event', 'goog.events.EventType', 'goog.reflect', 'goog.userAgent']); -goog.addDependency("events/browserevent_test.js", ['goog.events.BrowserEventTest'], ['goog.events.BrowserEvent', 'goog.events.BrowserFeature', 'goog.math.Coordinate', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.userAgent']); +goog.addDependency("events/browserevent_test.js", ['goog.events.BrowserEventTest'], ['goog.events.BrowserEvent', 'goog.events.BrowserFeature', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.userAgent']); goog.addDependency("events/browserfeature.js", ['goog.events.BrowserFeature'], ['goog.userAgent']); goog.addDependency("events/event.js", ['goog.events.Event', 'goog.events.EventLike'], ['goog.Disposable', 'goog.events.EventId']); goog.addDependency("events/event_test.js", ['goog.events.EventTest'], ['goog.events.Event', 'goog.events.EventId', 'goog.events.EventTarget', 'goog.testing.jsunit']); @@ -422,7 +422,7 @@ goog.addDependency("events/filedrophandler_test.js", ['goog.events.FileDropHandl goog.addDependency("events/focushandler.js", ['goog.events.FocusHandler', 'goog.events.FocusHandler.EventType'], ['goog.events', 'goog.events.BrowserEvent', 'goog.events.EventTarget', 'goog.userAgent']); goog.addDependency("events/imehandler.js", ['goog.events.ImeHandler', 'goog.events.ImeHandler.Event', 'goog.events.ImeHandler.EventType'], ['goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.userAgent']); goog.addDependency("events/imehandler_test.js", ['goog.events.ImeHandlerTest'], ['goog.array', 'goog.dom', 'goog.events', 'goog.events.ImeHandler', 'goog.events.KeyCodes', 'goog.object', 'goog.string', 'goog.testing.PropertyReplacer', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.userAgent']); -goog.addDependency("events/inputhandler.js", ['goog.events.InputHandler', 'goog.events.InputHandler.EventType'], ['goog.Timer', 'goog.dom', 'goog.dom.TagName', 'goog.events.BrowserEvent', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.KeyCodes', 'goog.userAgent']); +goog.addDependency("events/inputhandler.js", ['goog.events.InputHandler', 'goog.events.InputHandler.EventType'], ['goog.Timer', 'goog.dom.TagName', 'goog.events.BrowserEvent', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.KeyCodes', 'goog.userAgent']); goog.addDependency("events/inputhandler_test.js", ['goog.events.InputHandlerTest'], ['goog.dom', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.events.InputHandler', 'goog.events.KeyCodes', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.userAgent']); goog.addDependency("events/keycodes.js", ['goog.events.KeyCodes'], ['goog.userAgent']); goog.addDependency("events/keycodes_test.js", ['goog.events.KeyCodesTest'], ['goog.events.BrowserEvent', 'goog.events.KeyCodes', 'goog.object', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.userAgent']); @@ -874,7 +874,7 @@ goog.addDependency("net/xpc/crosspagechannel.js", ['goog.net.xpc.CrossPageChanne goog.addDependency("net/xpc/crosspagechannel_test.js", ['goog.net.xpc.CrossPageChannelTest'], ['goog.Disposable', 'goog.Uri', 'goog.async.Deferred', 'goog.dom', 'goog.dom.TagName', 'goog.labs.userAgent.browser', 'goog.log', 'goog.log.Level', 'goog.net.xpc', 'goog.net.xpc.CfgFields', 'goog.net.xpc.CrossPageChannel', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.TransportTypes', 'goog.object', 'goog.testing.AsyncTestCase', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit']); goog.addDependency("net/xpc/crosspagechannelrole.js", ['goog.net.xpc.CrossPageChannelRole'], []); goog.addDependency("net/xpc/directtransport.js", ['goog.net.xpc.DirectTransport'], ['goog.Timer', 'goog.async.Deferred', 'goog.events.EventHandler', 'goog.log', 'goog.net.xpc', 'goog.net.xpc.CfgFields', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.Transport', 'goog.net.xpc.TransportTypes', 'goog.object']); -goog.addDependency("net/xpc/directtransport_test.js", ['goog.net.xpc.DirectTransportTest'], ['goog.dom', 'goog.dom.TagName', 'goog.labs.userAgent.browser', 'goog.log', 'goog.log.Level', 'goog.net.xpc', 'goog.net.xpc.CfgFields', 'goog.net.xpc.CrossPageChannel', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.TransportTypes', 'goog.testing.AsyncTestCase', 'goog.testing.jsunit']); +goog.addDependency("net/xpc/directtransport_test.js", ['goog.net.xpc.DirectTransportTest'], ['goog.Promise', 'goog.dom', 'goog.dom.TagName', 'goog.labs.userAgent.browser', 'goog.log', 'goog.log.Level', 'goog.net.xpc', 'goog.net.xpc.CfgFields', 'goog.net.xpc.CrossPageChannel', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.TransportTypes', 'goog.testing.jsunit']); goog.addDependency("net/xpc/frameelementmethodtransport.js", ['goog.net.xpc.FrameElementMethodTransport'], ['goog.log', 'goog.net.xpc', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.Transport', 'goog.net.xpc.TransportTypes']); goog.addDependency("net/xpc/iframepollingtransport.js", ['goog.net.xpc.IframePollingTransport', 'goog.net.xpc.IframePollingTransport.Receiver', 'goog.net.xpc.IframePollingTransport.Sender'], ['goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.log', 'goog.log.Level', 'goog.net.xpc', 'goog.net.xpc.CfgFields', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.Transport', 'goog.net.xpc.TransportTypes', 'goog.userAgent']); goog.addDependency("net/xpc/iframepollingtransport_test.js", ['goog.net.xpc.IframePollingTransportTest'], ['goog.Timer', 'goog.dom', 'goog.dom.TagName', 'goog.functions', 'goog.net.xpc.CfgFields', 'goog.net.xpc.CrossPageChannel', 'goog.net.xpc.CrossPageChannelRole', 'goog.net.xpc.TransportTypes', 'goog.object', 'goog.testing.MockClock', 'goog.testing.jsunit', 'goog.testing.recordFunction']); @@ -903,7 +903,7 @@ goog.addDependency("positioning/viewportclientposition.js", ['goog.positioning.V goog.addDependency("positioning/viewportclientposition_test.js", ['goog.positioning.ViewportClientPositionTest'], ['goog.dom', 'goog.positioning.Corner', 'goog.positioning.Overflow', 'goog.positioning.ViewportClientPosition', 'goog.style', 'goog.testing.jsunit', 'goog.userAgent']); goog.addDependency("positioning/viewportposition.js", ['goog.positioning.ViewportPosition'], ['goog.math.Coordinate', 'goog.positioning', 'goog.positioning.AbstractPosition', 'goog.positioning.Corner', 'goog.style']); goog.addDependency("promise/promise.js", ['goog.Promise'], ['goog.Thenable', 'goog.asserts', 'goog.async.FreeList', 'goog.async.run', 'goog.async.throwException', 'goog.debug.Error', 'goog.promise.Resolver']); -goog.addDependency("promise/promise_test.js", ['goog.PromiseTest'], ['goog.Promise', 'goog.Thenable', 'goog.functions', 'goog.testing.AsyncTestCase', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction']); +goog.addDependency("promise/promise_test.js", ['goog.PromiseTest'], ['goog.Promise', 'goog.Thenable', 'goog.Timer', 'goog.functions', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.jsunit', 'goog.testing.recordFunction']); goog.addDependency("promise/resolver.js", ['goog.promise.Resolver'], []); goog.addDependency("promise/testsuiteadapter.js", ['goog.promise.testSuiteAdapter'], ['goog.Promise']); goog.addDependency("promise/thenable.js", ['goog.Thenable'], []); @@ -1187,7 +1187,7 @@ goog.addDependency("ui/advancedtooltip_test.js", ['goog.ui.AdvancedTooltipTest'] goog.addDependency("ui/animatedzippy.js", ['goog.ui.AnimatedZippy'], ['goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.fx.Animation', 'goog.fx.Transition', 'goog.fx.easing', 'goog.ui.Zippy', 'goog.ui.ZippyEvent']); goog.addDependency("ui/animatedzippy_test.js", ['goog.ui.AnimatedZippyTest'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.asserts', 'goog.dom', 'goog.events', 'goog.functions', 'goog.fx.Animation', 'goog.fx.Transition', 'goog.testing.PropertyReplacer', 'goog.testing.asserts', 'goog.testing.jsunit', 'goog.ui.AnimatedZippy', 'goog.ui.Zippy']); goog.addDependency("ui/attachablemenu.js", ['goog.ui.AttachableMenu'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.array', 'goog.asserts', 'goog.dom', 'goog.dom.classlist', 'goog.events.Event', 'goog.events.KeyCodes', 'goog.string', 'goog.style', 'goog.ui.ItemEvent', 'goog.ui.MenuBase', 'goog.ui.PopupBase', 'goog.userAgent']); -goog.addDependency("ui/bidiinput.js", ['goog.ui.BidiInput'], ['goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.events', 'goog.events.InputHandler', 'goog.i18n.bidi', 'goog.i18n.bidi.Dir', 'goog.ui.Component']); +goog.addDependency("ui/bidiinput.js", ['goog.ui.BidiInput'], ['goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.events', 'goog.events.InputHandler', 'goog.i18n.bidi', 'goog.ui.Component']); goog.addDependency("ui/bidiinput_test.js", ['goog.ui.BidiInputTest'], ['goog.dom', 'goog.testing.jsunit', 'goog.ui.BidiInput']); goog.addDependency("ui/bubble.js", ['goog.ui.Bubble'], ['goog.Timer', 'goog.dom.safe', 'goog.events', 'goog.events.EventType', 'goog.html.SafeHtml', 'goog.html.legacyconversions', 'goog.math.Box', 'goog.positioning', 'goog.positioning.AbsolutePosition', 'goog.positioning.AnchoredPosition', 'goog.positioning.Corner', 'goog.positioning.CornerBit', 'goog.string.Const', 'goog.style', 'goog.ui.Component', 'goog.ui.Popup']); goog.addDependency("ui/button.js", ['goog.ui.Button', 'goog.ui.Button.Side'], ['goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.ui.ButtonRenderer', 'goog.ui.ButtonSide', 'goog.ui.Component', 'goog.ui.Control', 'goog.ui.NativeButtonRenderer', 'goog.ui.registry']); @@ -1275,7 +1275,7 @@ goog.addDependency("ui/iframemask.js", ['goog.ui.IframeMask'], ['goog.Disposable goog.addDependency("ui/iframemask_test.js", ['goog.ui.IframeMaskTest'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.iframe', 'goog.structs.Pool', 'goog.style', 'goog.testing.MockClock', 'goog.testing.StrictMock', 'goog.testing.jsunit', 'goog.ui.IframeMask', 'goog.ui.Popup', 'goog.ui.PopupBase', 'goog.userAgent']); goog.addDependency("ui/imagelessbuttonrenderer.js", ['goog.ui.ImagelessButtonRenderer'], ['goog.dom.TagName', 'goog.dom.classlist', 'goog.ui.Button', 'goog.ui.Component', 'goog.ui.CustomButtonRenderer', 'goog.ui.INLINE_BLOCK_CLASSNAME', 'goog.ui.registry']); goog.addDependency("ui/imagelessmenubuttonrenderer.js", ['goog.ui.ImagelessMenuButtonRenderer'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.ui.INLINE_BLOCK_CLASSNAME', 'goog.ui.MenuButton', 'goog.ui.MenuButtonRenderer', 'goog.ui.registry']); -goog.addDependency("ui/inputdatepicker.js", ['goog.ui.InputDatePicker'], ['goog.date.DateTime', 'goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.string', 'goog.ui.Component', 'goog.ui.DatePicker', 'goog.ui.PopupBase', 'goog.ui.PopupDatePicker']); +goog.addDependency("ui/inputdatepicker.js", ['goog.ui.InputDatePicker'], ['goog.date.DateTime', 'goog.dom', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.string', 'goog.ui.Component', 'goog.ui.DatePicker', 'goog.ui.LabelInput', 'goog.ui.PopupBase', 'goog.ui.PopupDatePicker']); goog.addDependency("ui/inputdatepicker_test.js", ['goog.ui.InputDatePickerTest'], ['goog.dom', 'goog.i18n.DateTimeFormat', 'goog.i18n.DateTimeParse', 'goog.testing.jsunit', 'goog.ui.InputDatePicker']); goog.addDependency("ui/itemevent.js", ['goog.ui.ItemEvent'], ['goog.events.Event']); goog.addDependency("ui/keyboardshortcuthandler.js", ['goog.ui.KeyboardShortcutEvent', 'goog.ui.KeyboardShortcutHandler', 'goog.ui.KeyboardShortcutHandler.EventType'], ['goog.Timer', 'goog.array', 'goog.asserts', 'goog.dom.TagName', 'goog.events', 'goog.events.Event', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyNames', 'goog.object', 'goog.userAgent']); @@ -1305,7 +1305,9 @@ goog.addDependency("ui/menuseparatorrenderer.js", ['goog.ui.MenuSeparatorRendere goog.addDependency("ui/menuseparatorrenderer_test.js", ['goog.ui.MenuSeparatorRendererTest'], ['goog.dom', 'goog.testing.jsunit', 'goog.ui.MenuSeparator', 'goog.ui.MenuSeparatorRenderer']); goog.addDependency("ui/mockactivitymonitor.js", ['goog.ui.MockActivityMonitor'], ['goog.events.EventType', 'goog.ui.ActivityMonitor']); goog.addDependency("ui/mockactivitymonitor_test.js", ['goog.ui.MockActivityMonitorTest'], ['goog.events', 'goog.functions', 'goog.testing.jsunit', 'goog.testing.recordFunction', 'goog.ui.ActivityMonitor', 'goog.ui.MockActivityMonitor']); -goog.addDependency("ui/modalpopup.js", ['goog.ui.ModalPopup'], ['goog.Timer', 'goog.a11y.aria', 'goog.a11y.aria.State', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.dom.iframe', 'goog.events', 'goog.events.EventType', 'goog.events.FocusHandler', 'goog.fx.Transition', 'goog.string', 'goog.style', 'goog.ui.Component', 'goog.ui.PopupBase', 'goog.userAgent']); +goog.addDependency("ui/modalariavisibilityhelper.js", ['goog.ui.ModalAriaVisibilityHelper'], ['goog.a11y.aria', 'goog.a11y.aria.State']); +goog.addDependency("ui/modalariavisibilityhelper_test.js", ['goog.ui.ModalAriaVisibilityHelperTest'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.dom', 'goog.string', 'goog.testing.jsunit', 'goog.ui.ModalAriaVisibilityHelper']); +goog.addDependency("ui/modalpopup.js", ['goog.ui.ModalPopup'], ['goog.Timer', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.dom.iframe', 'goog.events', 'goog.events.EventType', 'goog.events.FocusHandler', 'goog.fx.Transition', 'goog.string', 'goog.style', 'goog.ui.Component', 'goog.ui.ModalAriaVisibilityHelper', 'goog.ui.PopupBase', 'goog.userAgent']); goog.addDependency("ui/modalpopup_test.js", ['goog.ui.ModalPopupTest'], ['goog.a11y.aria', 'goog.a11y.aria.State', 'goog.dispose', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.EventTarget', 'goog.fx.Transition', 'goog.fx.css3', 'goog.string', 'goog.style', 'goog.testing.MockClock', 'goog.testing.jsunit', 'goog.ui.ModalPopup', 'goog.ui.PopupBase']); goog.addDependency("ui/nativebuttonrenderer.js", ['goog.ui.NativeButtonRenderer'], ['goog.asserts', 'goog.dom.InputType', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events.EventType', 'goog.ui.ButtonRenderer', 'goog.ui.Component']); goog.addDependency("ui/nativebuttonrenderer_test.js", ['goog.ui.NativeButtonRendererTest'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.events', 'goog.testing.ExpectedFailures', 'goog.testing.events', 'goog.testing.jsunit', 'goog.testing.ui.rendererasserts', 'goog.ui.Button', 'goog.ui.Component', 'goog.ui.NativeButtonRenderer', 'goog.userAgent']); @@ -1316,7 +1318,7 @@ goog.addDependency("ui/paletterenderer.js", ['goog.ui.PaletteRenderer'], ['goog. goog.addDependency("ui/paletterenderer_test.js", ['goog.ui.PaletteRendererTest'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.a11y.aria.State', 'goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.testing.jsunit', 'goog.ui.Palette', 'goog.ui.PaletteRenderer']); goog.addDependency("ui/plaintextspellchecker.js", ['goog.ui.PlainTextSpellChecker'], ['goog.Timer', 'goog.a11y.aria', 'goog.asserts', 'goog.dom', 'goog.dom.TagName', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.events.KeyHandler', 'goog.spell.SpellCheck', 'goog.style', 'goog.ui.AbstractSpellChecker', 'goog.ui.Component', 'goog.userAgent']); goog.addDependency("ui/plaintextspellchecker_test.js", ['goog.ui.PlainTextSpellCheckerTest'], ['goog.Timer', 'goog.dom', 'goog.events.KeyCodes', 'goog.spell.SpellCheck', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.PlainTextSpellChecker']); -goog.addDependency("ui/popup.js", ['goog.ui.Popup'], ['goog.math.Box', 'goog.positioning.AbstractPosition', 'goog.positioning.ClientPosition', 'goog.positioning.Corner', 'goog.style', 'goog.ui.PopupBase']); +goog.addDependency("ui/popup.js", ['goog.ui.Popup'], ['goog.math.Box', 'goog.positioning.Corner', 'goog.style', 'goog.ui.PopupBase']); goog.addDependency("ui/popup_test.js", ['goog.ui.PopupTest'], ['goog.positioning.AnchoredPosition', 'goog.positioning.Corner', 'goog.style', 'goog.testing.jsunit', 'goog.ui.Popup', 'goog.userAgent']); goog.addDependency("ui/popupbase.js", ['goog.ui.PopupBase', 'goog.ui.PopupBase.EventType', 'goog.ui.PopupBase.Type'], ['goog.Timer', 'goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.fx.Transition', 'goog.style', 'goog.userAgent']); goog.addDependency("ui/popupbase_test.js", ['goog.ui.PopupBaseTest'], ['goog.dom', 'goog.dom.TagName', 'goog.events', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.fx.Transition', 'goog.fx.css3', 'goog.testing.MockClock', 'goog.testing.events', 'goog.testing.events.Event', 'goog.testing.jsunit', 'goog.ui.PopupBase']); @@ -1391,8 +1393,8 @@ goog.addDependency("ui/toolbarseparator.js", ['goog.ui.ToolbarSeparator'], ['goo goog.addDependency("ui/toolbarseparatorrenderer.js", ['goog.ui.ToolbarSeparatorRenderer'], ['goog.asserts', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.ui.INLINE_BLOCK_CLASSNAME', 'goog.ui.MenuSeparatorRenderer']); goog.addDependency("ui/toolbarseparatorrenderer_test.js", ['goog.ui.ToolbarSeparatorRendererTest'], ['goog.dom', 'goog.dom.TagName', 'goog.dom.classlist', 'goog.testing.jsunit', 'goog.ui.Component', 'goog.ui.INLINE_BLOCK_CLASSNAME', 'goog.ui.ToolbarSeparator', 'goog.ui.ToolbarSeparatorRenderer']); goog.addDependency("ui/toolbartogglebutton.js", ['goog.ui.ToolbarToggleButton'], ['goog.ui.ToggleButton', 'goog.ui.ToolbarButtonRenderer', 'goog.ui.registry']); -goog.addDependency("ui/tooltip.js", ['goog.ui.Tooltip', 'goog.ui.Tooltip.CursorTooltipPosition', 'goog.ui.Tooltip.ElementTooltipPosition', 'goog.ui.Tooltip.State'], ['goog.Timer', 'goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.dom.safe', 'goog.events', 'goog.events.EventType', 'goog.html.legacyconversions', 'goog.math.Box', 'goog.math.Coordinate', 'goog.positioning', 'goog.positioning.AnchoredPosition', 'goog.positioning.Corner', 'goog.positioning.Overflow', 'goog.positioning.OverflowStatus', 'goog.positioning.ViewportPosition', 'goog.structs.Set', 'goog.style', 'goog.ui.Popup', 'goog.ui.PopupBase']); -goog.addDependency("ui/tooltip_test.js", ['goog.ui.TooltipTest'], ['goog.dom', 'goog.dom.TagName', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.html.testing', 'goog.math.Coordinate', 'goog.positioning.AbsolutePosition', 'goog.style', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.TestQueue', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.PopupBase', 'goog.ui.Tooltip', 'goog.userAgent']); +goog.addDependency("ui/tooltip.js", ['goog.ui.Tooltip', 'goog.ui.Tooltip.CursorTooltipPosition', 'goog.ui.Tooltip.ElementTooltipPosition', 'goog.ui.Tooltip.State'], ['goog.Timer', 'goog.array', 'goog.dom', 'goog.dom.TagName', 'goog.dom.safe', 'goog.events', 'goog.events.EventType', 'goog.events.FocusHandler', 'goog.html.legacyconversions', 'goog.math.Box', 'goog.math.Coordinate', 'goog.positioning', 'goog.positioning.AnchoredPosition', 'goog.positioning.Corner', 'goog.positioning.Overflow', 'goog.positioning.OverflowStatus', 'goog.positioning.ViewportPosition', 'goog.structs.Set', 'goog.style', 'goog.ui.Popup', 'goog.ui.PopupBase']); +goog.addDependency("ui/tooltip_test.js", ['goog.ui.TooltipTest'], ['goog.dom', 'goog.dom.TagName', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventType', 'goog.events.FocusHandler', 'goog.html.testing', 'goog.math.Coordinate', 'goog.positioning.AbsolutePosition', 'goog.style', 'goog.testing.MockClock', 'goog.testing.PropertyReplacer', 'goog.testing.TestQueue', 'goog.testing.events', 'goog.testing.jsunit', 'goog.ui.PopupBase', 'goog.ui.Tooltip', 'goog.userAgent']); goog.addDependency("ui/tristatemenuitem.js", ['goog.ui.TriStateMenuItem', 'goog.ui.TriStateMenuItem.State'], ['goog.dom.classlist', 'goog.ui.Component', 'goog.ui.MenuItem', 'goog.ui.TriStateMenuItemRenderer', 'goog.ui.registry']); goog.addDependency("ui/tristatemenuitemrenderer.js", ['goog.ui.TriStateMenuItemRenderer'], ['goog.asserts', 'goog.dom.classlist', 'goog.ui.MenuItemRenderer']); goog.addDependency("ui/twothumbslider.js", ['goog.ui.TwoThumbSlider'], ['goog.a11y.aria', 'goog.a11y.aria.Role', 'goog.dom', 'goog.dom.TagName', 'goog.ui.SliderBase']); diff --git a/core/bubble.js b/core/bubble.js index 740b1e7a0..d80c8b274 100644 --- a/core/bubble.js +++ b/core/bubble.js @@ -29,6 +29,7 @@ goog.provide('Blockly.Bubble'); goog.require('Blockly.Workspace'); goog.require('goog.dom'); goog.require('goog.math'); +goog.require('goog.userAgent'); /** @@ -209,8 +210,16 @@ Blockly.Bubble.prototype.createDom_ = function(content, hasResize) { */ this.bubbleGroup_ = Blockly.createSvgElement('g', {}, null); + var filter = {'filter': 'url(#blocklyEmboss)'}; + if (goog.userAgent.getUserAgentString().indexOf('JavaFX') != -1) { + // Multiple reports that JavaFX can't handle filters. UserAgent: + // Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.44 + // (KHTML, like Gecko) JavaFX/8.0 Safari/537.44 + // https://github.com/google/blockly/issues/99 + filter = {}; + } var bubbleEmboss = Blockly.createSvgElement('g', - {'filter': 'url(#blocklyEmboss)'}, this.bubbleGroup_); + filter, this.bubbleGroup_); this.bubbleArrow_ = Blockly.createSvgElement('path', {}, bubbleEmboss); this.bubbleBack_ = Blockly.createSvgElement('rect', {'class': 'blocklyDraggable', 'x': 0, 'y': 0,