Ticket #29438

接続設定ダイアログのESCキーが利かない

Open Date: 2012-09-03 20:50 Last Update: 2013-05-02 21:15

Reporter:
Owner:
Type:
Status:
Closed
Component:
(None)
MileStone:
(None)
Priority:
5 - Medium
Severity:
3
Resolution:
Fixed
File:
None

Details

接続設定一覧ダイアログと接続設定編集ダイアログにおいて、ボタンやテキストボックスがフォーカス状態の場合はESCキーが利かなくなる。

3.2までは利いていた。

Ticket History (3/4 Histories)

2012-09-03 20:50 Updated by: argius
  • New Ticket "接続設定ダイアログのESCキーが利かない" created
2012-09-03 21:00 Updated by: argius
  • Owner Update from (None) to argius
Comment

3.3で各コンポーネントのイベントクラスの整理を行った際、getInputMapの処理が2種類あったのをまとめてしまった。

子コンポーネントがフォーカスされた場合も対象にするには、"WHEN_ANCESTOR_OF_FOCUSED_COMPONENT"を指定する(デフォルトはWHEN_FOCUSED)。本件の2つのダイアログは、これを指定する必要があった。

JComponent c = ...;
c.getInputMap(WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(keyStroke, actionMapKey);

3.3で追加したメソッドを使う場合に、オプション指定できるようにすれば良いが、APIの修正は見送りとする。

2012-09-06 23:32 Updated by: argius
  • Resolution Update from None to Later
Comment

パッチ

Index: src/net/argius/stew/ui/window/ConnectorMapEditDialog.java
===================================================================
--- src/net/argius/stew/ui/window/ConnectorMapEditDialog.java	(revision 283)
+++ src/net/argius/stew/ui/window/ConnectorMapEditDialog.java	(working copy)
@@ -110,7 +110,9 @@
         p.c.fill = GridBagConstraints.NONE;
         p.addComponent(p2, false);
         // [イベントの設定]
-        ActionUtility.bindAction(rootPane, this, cmdCancel, getKeyStroke(VK_ESCAPE, 0));
+        final KeyStroke ksESC = getKeyStroke(VK_ESCAPE, 0);
+        ActionUtility.bindAction(rootPane, this, cmdCancel, ksESC);
+        rootPane.getInputMap(WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(ksESC, cmdCancel);
         addWindowListener(new WindowAdapter() {
             @Override
             public void windowClosing(WindowEvent e) {
Index: src/net/argius/stew/ui/window/ConnectorEditDialog.java
===================================================================
--- src/net/argius/stew/ui/window/ConnectorEditDialog.java	(revision 269)
+++ src/net/argius/stew/ui/window/ConnectorEditDialog.java	(working copy)
@@ -149,7 +149,9 @@
         p.c.anchor = GridBagConstraints.CENTER;
         p.addComponent(p2, false);
         pack();
-        ActionUtility.bindAction(rootPane, this, cmdCancel, KeyStroke.getKeyStroke(VK_ESCAPE, 0));
+        final KeyStroke ksESC = KeyStroke.getKeyStroke(VK_ESCAPE, 0);
+        ActionUtility.bindAction(rootPane, this, cmdCancel, ksESC);
+        rootPane.getInputMap(WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(ksESC, cmdCancel);
         addWindowListener(new WindowAdapter() {
             @Override
             public void windowClosing(WindowEvent e) {

2013-05-02 21:15 Updated by: argius
  • Ticket Close date is changed to 2013-05-02 21:15
  • Status Update from Open to Closed
  • Resolution Update from Later to Fixed
Comment

バージョン4では修正されているので、クローズとする。

どうしてもバージョン3.3.0を使いたい場合は、パッチを充てて使ってください。ごめんなさい。

Attachment File List

No attachments

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login