バグ:スキン編集画面でフォントを変更するとエラーログ
等幅ゴシック体などの設定を変更するとログが残るようです。バリアントからスキンを作ったばかりで、もしかするとスキンに問題があるのかもしれないのですが…
#!
Traceback (most recent call last):
File "cw\frame.pyo", line 1331, in FilterEvent
File "wx\_core.pyo", line 4996, in GetEventObject
wx._core.PyAssertionError: C++ assertion "GetEventHandler() == this" failed at ..\..\src\common\wincmn.cpp(478) in wxWindowBase::~wxWindowBase(): any pushed event handlers must have been removed
Comments (5)
-
repo owner -
12日版でも変わらず出るようです。(D&Dの方だけではなく、設定ダイアログの>編集>スキンの編集ダイアログでフォント名をクリックしてフォントの選択エディタを表示させた後ダイアログを閉じると確定でエラーログ出力)
Traceback (most recent call last): File "cw\frame.pyo", line 1357, in FilterEvent File "wx\_core.pyo", line 4996, in GetEventObject wx._core.PyAssertionError: C++ assertion "GetEventHandler() == this" failed at ..\..\src\common\wincmn.cpp(478) in wxWindowBase::~wxWindowBase(): any pushed event handlers must have been removed
このエラーの発生源はsettings側のOnfilterevent内のグリッドセルの参照・変更で適用ボタンを有効にするかの判定、
wx.grid.EVT_GRID_CELL_CHANGE.typeId,wx.grid.EVT_GRID_EDITOR_SHOWN.typeId
とif wx.grid.EVT_GRID_EDITOR_SHOWN.typeId and isinstance(obj, wx.grid.Grid):
であるように思います。この前チェックボックスを1クリックで有効化できるようにした時に、適用ボタンの有効化をチェックボックスをクリックした時点で直接行うようにしたのですが、それで副次的に発生しなくなりました。スキン編集ダイアログには適用ボタンがないのでこの判定は必要ないっぽいですし、グリッドを使っているのも現状フォントとサウンドフォントの二つだけなので、設定ダイアログの方で似たような感じで個別にバインドすればいいのではないでしょうか?
-
repo owner ありがとうございます。時間がない時に安易に対応するものではないですね。
週末にでもちゃんと調べて修正します。
-
repo owner pull request #2105
どうも
wx.Grid
の内部でイベントハンドラの差し替えか何かをやっていて、それがアサーションエラーを招いているようです。他の所でも起きそうですし、単に処理を中止すればよさそうなので、わざとエラーを起こしてキャッチする事にします。
たぶんPhoenixでは直っているんじゃないでそふか。
-
repo owner - changed status to resolved
対応済みなのでクローズします。
- Log in to comment
pull request #2104
ご報告ありがとうございます。
一応問題回避のために手を入れてみましたが、これはCWPyが使っているGUIフレームワークのwxPythonのバグ(
wx._core.PyAssertionError
が発生しているものは全てwxPythonのバグ)なので、完全には直りません。目下wxPythonのバージョンアップを待っているところです。