バグ:スキン編集画面でフォントを変更するとエラーログ

Issue #621 resolved
Former user created an issue

等幅ゴシック体などの設定を変更するとログが残るようです。バリアントからスキンを作ったばかりで、もしかするとスキンに問題があるのかもしれないのですが…

#!

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)

  1. k4nagatsuki repo owner

    pull request #2104

    ご報告ありがとうございます。

    一応問題回避のために手を入れてみましたが、これはCWPyが使っているGUIフレームワークのwxPythonのバグ(wx._core.PyAssertionErrorが発生しているものは全てwxPythonのバグ)なので、完全には直りません。

    目下wxPythonのバージョンアップを待っているところです。

  2. 暗黒 騎士

    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.typeIdif wx.grid.EVT_GRID_EDITOR_SHOWN.typeId and isinstance(obj, wx.grid.Grid):であるように思います。

    この前チェックボックスを1クリックで有効化できるようにした時に、適用ボタンの有効化をチェックボックスをクリックした時点で直接行うようにしたのですが、それで副次的に発生しなくなりました。スキン編集ダイアログには適用ボタンがないのでこの判定は必要ないっぽいですし、グリッドを使っているのも現状フォントとサウンドフォントの二つだけなので、設定ダイアログの方で似たような感じで個別にバインドすればいいのではないでしょうか?

  3. k4nagatsuki repo owner

    ありがとうございます。時間がない時に安易に対応するものではないですね。

    週末にでもちゃんと調べて修正します。

  4. k4nagatsuki repo owner

    pull request #2105

    どうもwx.Gridの内部でイベントハンドラの差し替えか何かをやっていて、それがアサーションエラーを招いているようです。

    他の所でも起きそうですし、単に処理を中止すればよさそうなので、わざとエラーを起こしてキャッチする事にします。

    たぶんPhoenixでは直っているんじゃないでそふか。

  5. Log in to comment