From 99e72e6eff91c6297c7428a464230c87458d6a2f Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Fri, 11 Apr 2014 20:25:52 +0400 Subject: [PATCH] IDEA-97465 Can't edit variable values in debugger with double click (F2 is required) - get back double click on empty space --- .../debugger/ui/impl/MainWatchPanel.java | 31 ++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/impl/MainWatchPanel.java b/java/debugger/impl/src/com/intellij/debugger/ui/impl/MainWatchPanel.java index 0ee8bdcc6570..a1443a923b6b 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/impl/MainWatchPanel.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/impl/MainWatchPanel.java @@ -80,14 +80,7 @@ public class MainWatchPanel extends WatchPanel implements DataProvider { ((event.getModifiers() & (InputEvent.SHIFT_MASK | InputEvent.ALT_MASK | InputEvent.CTRL_MASK | InputEvent.META_MASK)) !=0) ) { return false; } - boolean sameRow = false; - Rectangle bounds = watchTree.getRowBounds(watchTree.getLeadSelectionRow()); - if (bounds != null) { - bounds.width = watchTree.getWidth(); - if (bounds.contains(event.getPoint())) { - sameRow = true; - } - } + boolean sameRow = isAboveSelectedItem(event, watchTree); final AnAction editWatchAction = ActionManager.getInstance().getAction(DebuggerActions.EDIT_WATCH); Presentation presentation = editWatchAction.getTemplatePresentation().clone(); DataContext context = DataManager.getInstance().getDataContext(watchTree); @@ -105,7 +98,18 @@ public class MainWatchPanel extends WatchPanel implements DataProvider { return false; } }; + final ClickListener mouseEmptySpaceListener = new DoubleClickListener() { + @Override + protected boolean onDoubleClick(MouseEvent event) { + if (!isAboveSelectedItem(event, watchTree)) { + newWatch(); + return true; + } + return false; + } + }; ListenerUtil.addClickListener(watchTree, mouseListener); + ListenerUtil.addClickListener(watchTree, mouseEmptySpaceListener); final FocusListener focusListener = new FocusListener() { @Override @@ -185,6 +189,17 @@ public class MainWatchPanel extends WatchPanel implements DataProvider { }, myTree); } + private static boolean isAboveSelectedItem(MouseEvent event, WatchDebuggerTree watchTree) { + Rectangle bounds = watchTree.getRowBounds(watchTree.getLeadSelectionRow()); + if (bounds != null) { + bounds.width = watchTree.getWidth(); + if (bounds.contains(event.getPoint())) { + return true; + } + } + return false; + } + private void addWatchesFrom(final DebuggerTreeNodeImpl[] nodes) { AddToWatchActionHandler.addFromNodes(getContext(), this, nodes); }