finish list popups on mouse release. It's more natural, doesn't lead to stuck mouse cursor, and should fix IDEA-48927 (Mouse click in a pop up moves cursor and makes selection in underlying editor)

This commit is contained in:
peter
2012-02-23 13:41:02 +01:00
parent 8ff182bce0
commit 09a9f593fc
2 changed files with 4 additions and 4 deletions
@@ -203,8 +203,8 @@ public class PopupChooserBuilder {
(list != null ? list : myChooserComponent).addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
if (UIUtil.isActionClick(e) && !UIUtil.isSelectionButtonDown(e) && !e.isConsumed()) {
public void mouseReleased(MouseEvent e) {
if (UIUtil.isActionClick(e, MouseEvent.MOUSE_RELEASED) && !UIUtil.isSelectionButtonDown(e) && !e.isConsumed()) {
closePopup(true, e, true);
}
}
@@ -379,7 +379,7 @@ public class ListPopupImpl extends WizardPopup implements ListPopup {
}
protected boolean isActionClick(MouseEvent e) {
return UIUtil.isActionClick(e, MouseEvent.MOUSE_PRESSED, true);
return UIUtil.isActionClick(e, MouseEvent.MOUSE_RELEASED, true);
}
public Object getSelectedValue() {
@@ -389,7 +389,7 @@ public class ListPopupImpl extends WizardPopup implements ListPopup {
private class MyMouseListener extends MouseAdapter {
@Override
public void mousePressed(MouseEvent e) {
public void mouseReleased(MouseEvent e) {
if (!isActionClick(e)) return;
IdeEventQueue.getInstance().blockNextEvents(e); // sometimes, after popup close, MOUSE_RELEASE event delivers to other components
final Object selectedValue = myList.getSelectedValue();