バグ: 画面拡大が有効な時、Alt+F4で終了させようとすると終了確認ダイアログが乱れる・フリーズする

Issue #313 resolved
Liar_cw NA created an issue

CardWirthPy 0.12.4 Alpha 3 Build: 2015-12-27 23:29:44

F4キーによる「画面拡大」が有効かつ「未保存時の終了確認ダイアログ(保存せずに終了しようとしたら警告する)」を表示するようにしている環境下で、 Alt+F4を押してCWPyを終了させようとした時、確認ダイアログの表示が乱れてしまうことがありました。描画倍率が2倍の場合はエラーを吐きました。1倍では吐きませんでした。

  • 「何も表示されない」、「警告文が異常に大きくダイアログに収まりきらない」、「ボタン内の はい・いいえ のサイズが異なる」、「ダイアログが正常に描画しきれていない。壁紙すらない。(メモ帳など別のウィンドウで拭ってやると表示される)」など。

また、さらにフルスクリーンの場合は確認ダイアログにフォーカスが移らず、そのままF4で拡大状態の切替が可能など、 確認ダイアログを出したままキーボードによる操作を受け付けていました。

  • CWPyを起動してすぐにAlt+F4で終了させようとしてフリーズ。操作をまったく受け付けなくなり、プロセスを直接終了させました。(フルスクリーンにチェックを入れている場合に発生)
  • 補足として、フルスクリーンにチェックを入れていない場合は特に問題なく終了するものの、終了直前にF4を押して拡大状態を切り替えたとみなされ、次回起動時に画面の拡大状態が変更された状態になる。
Traceback (most recent call last):
  File "cw\frame.pyo", line 439, in OnCloseFromFrame
  File "cw\frame.pyo", line 457, in OnCLOSE
  File "cw\dialog\message.pyo", line 85, in __init__
  File "cw\dialog\message.pyo", line 37, in __init__
AttributeError: 'NoneType' object has no attribute 'create_wxbutton'
Traceback (most recent call last):
  File "cw\frame.pyo", line 439, in OnCloseFromFrame
  File "cw\frame.pyo", line 457, in OnCLOSE
  File "cw\dialog\message.pyo", line 85, in __init__
  File "cw\dialog\message.pyo", line 37, in __init__
AttributeError: 'NoneType' object has no attribute 'create_wxbutton'
Traceback (most recent call last):
  File "cw\dialog\message.pyo", line 57, in OnPaint
AttributeError: 'NoneType' object has no attribute 'dialogs'
Traceback (most recent call last):
  File "cw\dialog\message.pyo", line 62, in OnPaint
AttributeError: 'NoneType' object has no attribute 'get_wxfont'
Traceback (most recent call last):
  File "cw\dialog\message.pyo", line 62, in OnPaint
AttributeError: 'NoneType' object has no attribute 'get_wxfont'
Traceback (most recent call last):
  File "cw\dialog\message.pyo", line 62, in OnPaint
AttributeError: 'NoneType' object has no attribute 'get_wxfont'
Traceback (most recent call last):
  File "cw\dialog\message.pyo", line 62, in OnPaint
AttributeError: 'NoneType' object has no attribute 'get_wxfont'
Traceback (most recent call last):
  File "cw\dialog\message.pyo", line 62, in OnPaint
AttributeError: 'NoneType' object has no attribute 'get_wxfont'
Traceback (most recent call last):
  File "cw\dialog\message.pyo", line 62, in OnPaint
AttributeError: 'NoneType' object has no attribute 'get_wxfont'

Comments (5)

  1. k4nagatsuki repo owner

    ご報告ありがとうございます。これはいけない。Windows環境でのAlt+F4はCWPyでは処理しない事にしないといけませんね(そもそもそのキー操作ってアプリケーション側でフックできちゃうのか)。

    今から修正します。

  2. Liar_cw NA reporter

    CardWirthPy 0.12.4 Alpha 3 Build: 2015-12-28 22:42:39

    pull request #1247の修正を確認しました。

    正常に作動、異常無くAlt+F4が優先されることを確認しました。

  3. Log in to comment