diff --git a/src/addons/addons-l10n-settings/de.json b/src/addons/addons-l10n-settings/de.json index e1c86db68..7e916df66 100644 --- a/src/addons/addons-l10n-settings/de.json +++ b/src/addons/addons-l10n-settings/de.json @@ -298,6 +298,9 @@ "editor-comment-previews/@settings-select-delay-short": "Kurz", "columns/@description": "Trennt das Blockkategorienmenü in zwei Spalten und verschiebt es über die Blockpalette, wie in Scratch 2.0.", "columns/@name": "Zweispaltiges Kategorienmenü", + "number-pad/@description": "Zeigt Scratchs Zahleneingabepad, das bei der Eingabe in Zahlenfeldern auf Touchscreen-Geräten geöffnet wird, auf allen Geräten an.", + "number-pad/@info-explanation": "Die Zifferntastatur wird beim Bearbeiten von Zahlenfeldern auf bestimmten Blöcken wie \"setze x auf\" angezeigt.", + "number-pad/@name": "Zifferntastatur immer anzeigen", "script-snap/@description": "Richtet Skripte nach dem Ziehen automatisch an den Punkten des Codebereichs aus.", "script-snap/@name": "Skripte am Raster ausrichten", "script-snap/@preset-name-default": "Standard", diff --git a/src/addons/addons-l10n-settings/nl.json b/src/addons/addons-l10n-settings/nl.json index 073f229d0..25d4cfa87 100644 --- a/src/addons/addons-l10n-settings/nl.json +++ b/src/addons/addons-l10n-settings/nl.json @@ -296,6 +296,9 @@ "editor-comment-previews/@settings-select-delay-short": "Kort", "columns/@description": "Verdeelt het blokcategoriemenu in 2 kolommen en zet het boven het blokpalet, net zoals in Scratch 2.0.", "columns/@name": "Categorie-menu met 2 kolommen", + "number-pad/@description": "Geef het getallenpaneel op alle apparaten weer tijdens het bewerken van een getalinvoer, in plaats van alleen op touchscreenapparaten.", + "number-pad/@info-explanation": "Een getallenpaneel komt tevoorschijn bij het bewerken van getalinvoeren van bepaalde blokken, zoals \"verander x met\".", + "number-pad/@name": "Getallenpaneel altijd weergeven", "script-snap/@description": "Sleep een script om zijn positie automatisch uit te lijnen op de codegebied-stippen.", "script-snap/@name": "Scripts uitlijnen op raster", "script-snap/@preset-name-default": "Standaard", diff --git a/src/addons/addons.js b/src/addons/addons.js index e4667bd91..5ebf160c6 100644 --- a/src/addons/addons.js +++ b/src/addons/addons.js @@ -60,6 +60,7 @@ const addons = [ 'swap-local-global', 'editor-comment-previews', 'columns', + 'number-pad', 'script-snap', 'fullscreen', 'hide-stage', diff --git a/src/addons/addons/number-pad/_manifest_entry.js b/src/addons/addons/number-pad/_manifest_entry.js new file mode 100644 index 000000000..64160a16c --- /dev/null +++ b/src/addons/addons/number-pad/_manifest_entry.js @@ -0,0 +1,26 @@ +/* generated by pull.js */ +const manifest = { + "editorOnly": true, + "noTranslations": true, + "name": "Always show number pad", + "description": "Show Scratch's number pad input when editing number fields on all devices, instead of only touchscreen devices.", + "credits": [ + { + "name": "GarboMuffin" + } + ], + "info": [ + { + "text": "A number pad will show when editing number inputs from certain blocks, such as \"set x to\".", + "id": "explanation" + } + ], + "tags": [], + "userscripts": [ + { + "url": "userscript.js" + } + ], + "dynamicDisable": true +}; +export default manifest; diff --git a/src/addons/addons/number-pad/_runtime_entry.js b/src/addons/addons/number-pad/_runtime_entry.js new file mode 100644 index 000000000..bc6713195 --- /dev/null +++ b/src/addons/addons/number-pad/_runtime_entry.js @@ -0,0 +1,5 @@ +/* generated by pull.js */ +import _js from "./userscript.js"; +export const resources = { + "userscript.js": _js, +}; diff --git a/src/addons/addons/number-pad/userscript.js b/src/addons/addons/number-pad/userscript.js new file mode 100644 index 000000000..f2c8d8261 --- /dev/null +++ b/src/addons/addons/number-pad/userscript.js @@ -0,0 +1,12 @@ +export default async function ({ addon, msg, console }) { + const ScratchBlocks = await addon.tab.traps.getBlockly(); + + // https://github.com/LLK/scratch-blocks/blob/develop/core/field_number.js#L165 + const originalMouseDown = ScratchBlocks.FieldNumber.prototype.showEditor_; + ScratchBlocks.FieldNumber.prototype.showEditor_ = function (...args) { + if (!addon.self.disabled) { + this.useTouchInteraction_ = true; + } + return originalMouseDown.apply(this, args); + }; +} diff --git a/src/addons/generated/addon-entries.js b/src/addons/generated/addon-entries.js index 91a1920ed..4608274e9 100644 --- a/src/addons/generated/addon-entries.js +++ b/src/addons/generated/addon-entries.js @@ -59,6 +59,7 @@ export default { "swap-local-global": () => import(/* webpackChunkName: "addon-entry-swap-local-global" */ "../addons/swap-local-global/_runtime_entry.js"), "editor-comment-previews": () => import(/* webpackChunkName: "addon-default-entry" */ "../addons/editor-comment-previews/_runtime_entry.js"), "columns": () => import(/* webpackChunkName: "addon-entry-columns" */ "../addons/columns/_runtime_entry.js"), + "number-pad": () => import(/* webpackChunkName: "addon-entry-number-pad" */ "../addons/number-pad/_runtime_entry.js"), "script-snap": () => import(/* webpackChunkName: "addon-entry-script-snap" */ "../addons/script-snap/_runtime_entry.js"), "fullscreen": () => import(/* webpackChunkName: "addon-entry-fullscreen" */ "../addons/fullscreen/_runtime_entry.js"), "hide-stage": () => import(/* webpackChunkName: "addon-entry-hide-stage" */ "../addons/hide-stage/_runtime_entry.js"), diff --git a/src/addons/generated/addon-manifests.js b/src/addons/generated/addon-manifests.js index da9038d3d..7bbe68792 100644 --- a/src/addons/generated/addon-manifests.js +++ b/src/addons/generated/addon-manifests.js @@ -58,6 +58,7 @@ import _rename_broadcasts from "../addons/rename-broadcasts/_manifest_entry.js"; import _swap_local_global from "../addons/swap-local-global/_manifest_entry.js"; import _editor_comment_previews from "../addons/editor-comment-previews/_manifest_entry.js"; import _columns from "../addons/columns/_manifest_entry.js"; +import _number_pad from "../addons/number-pad/_manifest_entry.js"; import _script_snap from "../addons/script-snap/_manifest_entry.js"; import _fullscreen from "../addons/fullscreen/_manifest_entry.js"; import _hide_stage from "../addons/hide-stage/_manifest_entry.js"; @@ -126,6 +127,7 @@ export default { "swap-local-global": _swap_local_global, "editor-comment-previews": _editor_comment_previews, "columns": _columns, + "number-pad": _number_pad, "script-snap": _script_snap, "fullscreen": _fullscreen, "hide-stage": _hide_stage,