08-27-2014, 10:37 AM,
|
|||||
|
|||||
グリッドでもESCキーのイベントを透過させたい
表示されているViewに対して、ESCキーを押されたら閉じる、という処理を考えています。
ただ、RecordGrid のセルにフォーカスが入っている場合、 ESCキーを押しても、Viewが閉じません。 TextField などの場合は問題なく閉じるので、 グリッドにESCのキープレスイベントが握りつぶされているのではないかと思うのですが、 これを回避するにはどうすればよいでしょうか。 Code: {def grid = |
|||||
08-27-2014, 12:44 PM,
|
|||||
|
|||||
RE: グリッドでもESCキーのイベントを透過させたい
オープンコントロールのRecordGridのコードをみると、
セルにフォーカスが入っている(編集中)状態でのESCキー 押下は入力中の文字の取消として使われているようです。 SkinnedSRGTextFieldFeelクラスのon-key-pressメソッド内に 該当する処理があり、ご推察の通りここでESCキーイベントを consumeしているようです。 (controls/feels/record-grid-feels.scurl 163行目付近) 既に機能に割り当てられているキーはショートカットキー として使用しない方がよいと思いますので、別のキーで Viewを閉じるのはいかがでしょうか? ("Ctrl+Q" など) |
|||||
08-27-2014, 04:19 PM,
|
|||||
|
|||||
RE: グリッドでもESCキーのイベントを透過させたい
dyoshidaさん、ありがとうございます。
ただ、SkinnedSRGTextFieldFeel の中でコンシュームするのをやめても、 View にまではESCのキーイベントは透過されないようです。 こうなると、RecordGrid が怪しくなってくるわけですが・・・。 Code: {define-class public open CustomSkinnedSRGTextFieldFeel |
|||||
08-27-2014, 04:40 PM,
(This post was last modified: 08-27-2014, 04:41 PM by umemura.)
|
|||||
|
|||||
RE: グリッドでもESCキーのイベントを透過させたい
やっぱり、consume されないようにすれば、View を閉じれました。
イベントの中を正しく追えていなかった(super.on-key-press を見落としていた)です。失礼。 こんなことをしていいのかどうか、という問題はありますが・・・。 Code: {define-class public open CustomSkinnedSRGTextFieldFeel あと、セルの振る舞い(キープレス)を変えるのは、このControlFeel を使うのが正しいのでしょうかね? ルックアンドフィール(LookAndFeel)を取得して、レジストして・・・というのは、 アスペクト志向のようで、便利ではあるのですが、あとからコードを探しにくいという欠点もあるので、 クラスの継承のみで完結させたい気もあります。 このあたり詳しい人いたらコメント下さい。 |
|||||
« Next Oldest | Next Newest »
|
Users browsing this thread:
1 Guest(s)
1 Guest(s)