Giraffe+ 0.5.6.189
前リリースからの変化
- 旧DLLのダイアログがモーダルになってなかったのをなるようにした
- パーサを少し最適化した
- Giraffe.exeが大きくなりすぎ開発効率が悪くなってきたので、Windowsの部分とMFCの部分をgs_Windows.dllとgs_MFC.dllに分けた
- ShowMenuとString.shell_menuでメニューを表示するときに、フォーカスがすでにそのスレッドにある場合はフォーカスを奪わないようにした
- エディットボックスの自動横スクロールを実装した
- Map.to_Array(true)でkeyとvalueが交互になるArrayを返すようにした
- google-modeのキー設定を出来るようにした
- OnSetCurSelTimeOutによってSettingsのsetupのDontChangeInputTextWhenACが稀に無効になってたのを修正
- Object.call_without_evalがすでにObject.getと同じなっていたので削除
- ContextをcloneせずにメソッドコールするObject.call_without_clone_contextを新たに定義
- Method.&で作られるメソッドの保持する2つ目のメソッドを、コンテキストオブジェクトを新たに作成して実行するようにした
GUIの細かい修正と追加が主です。
以下、内部的なややこしい話です。
Method.&の2つ目のメソッドが実行される際の、ローカルオブジェクトの再定義の問題の対処は今までもいろいろ変遷してきましたが、1つ目のメソッドとは違うコンテキストを使うのが一番安全と判断しました(今までは1つ目のメソッド実行後に同じコンテキストをスロットをクリアして使いまわしてた)。2つ目のメソッドでparent.return等をしても問題ないよう、親を同じにしてあります。
これにより、call_without_clone_contextでMethod.&によって作られたメソッドを呼び出す場合の問題は改善はされましたが解決はしていません。例えば、グローバルコンテキストでcall_without_clone_contextを使ってMethod.&で作られたメソッドを呼び出した場合、2つ目のメソッドからグローバルオブジェクトにアクセスすることができません。
今までの実装では、そのコンテキストがグローバルでなくても、それをクリアしてしまうための問題というのが発生してました。問題が発生する条件に、「コンテキストがグローバルであること」が追加され、さらに、問題も「コンテキストがクリアされてしまう」から「想定されたコンテキストにアクセスできない」に変化しました。問題は発生しにくくなり、問題自体も検出しやすいものに変化した、というのが今回の改善です。