Help us understand the problem. What is going on with this article?

[Blockly Hacks]ToolboxのFlyoutをブロックをドラッグした後も開きっぱなしにしたい

More than 3 years have passed since last update.

Blocklyを使っていて「ツールボックスからブロックをドラッグした後もフライアウトを表示させたままにしたい!」と思った場合は以下のようにすると開きっぱなしにできます。基本的には個人的な備忘録なのでお試しは自己責任でお願いします。

前提条件

今から説明する方法はBlocklyがビルドできる状態である必要があります。ビルド環境はBlockly公式ドキュメントか以前の投稿にて確認してください。

目標

標準ではToolboxからブロックをドラッグするとフライアウトが閉じます。これを自動で閉じないようにしたいと思います。つまり、以下のような表示を維持する事が目標です。
フライアウト展開中

Let's hack

目的のソースコードは"/blockly/core/flyout.js"です。このファイルの100行目あたりに臭うコードがあります。

flyout.js
/**
 * Does the flyout automatically close when a block is created?
 * @type {boolean}
 */
Blockly.Flyout.prototype.autoClose = true;

コメントには「ブロックが作られた時にフライアウトを自動的に閉じるかい?」って書かれています。こいつをfalseにしてやりましょう。

ビルドして動作確認すると、ブロックをドラッグしてもフライアウトが閉じなくなりました。
でも…閉じない…閉じたいんですけど!ってときはツールボックスの選択中のカテゴリをクリックすると閉じます。上図の場合であれば"Logic"をクリックすると閉じます。

まとめ

本来であればユーザーが自由に設定を切り替えられるのが理想でしょう。フラグをon/offできるViewを作ればビルドせずとも動的に切り替えられる…かもしれません。すみません、試してません…。

heyhachi
都内で働く人。 業種的には組み込み系寄りだが、ハードを叩くコードを書いたりすることはそんなにない。 基本的に業務はC言語で行うが、広く浅く色々とちょっかいを出す浮気症。 酒と写真が好き。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした