diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/VcsLogGraphTable.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/VcsLogGraphTable.java index d996469a8557..9a3bad3bc68a 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/VcsLogGraphTable.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/VcsLogGraphTable.java @@ -93,6 +93,7 @@ public class VcsLogGraphTable extends JBTable implements DataProvider, CopyProvi @NotNull private final TableCellRenderer myDummyRenderer = new DefaultTableCellRenderer(); @NotNull private final GraphCommitCellRender myGraphCommitCellRenderer; private boolean myColumnsSizeInitialized = false; + @Nullable private Selection mySelection = null; @NotNull private final Collection myHighlighters = ContainerUtil.newArrayList(); @@ -121,6 +122,8 @@ public class VcsLogGraphTable extends JBTable implements DataProvider, CopyProvi addMouseMotionListener(mouseAdapter); addMouseListener(mouseAdapter); + getSelectionModel().addListSelectionListener(new MyListSelectionListener()); + PopupHandler.installPopupHandler(this, VcsLogActionPlaces.POPUP_ACTION_GROUP, VcsLogActionPlaces.VCS_LOG_TABLE_PLACE); ScrollingUtil.installActions(this, false); @@ -463,7 +466,8 @@ public class VcsLogGraphTable extends JBTable implements DataProvider, CopyProvi @NotNull public Selection getSelection() { - return new Selection(this); + if (mySelection == null) mySelection = new Selection(this); + return mySelection; } private static class Selection { @@ -917,4 +921,11 @@ public class VcsLogGraphTable extends JBTable implements DataProvider, CopyProvi mouseInputListener.mouseMoved(convertMouseEvent(e)); } } + + private class MyListSelectionListener implements ListSelectionListener { + @Override + public void valueChanged(ListSelectionEvent e) { + mySelection = null; + } + } } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/UnnecessaryBoxingInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/UnnecessaryBoxingInspection.java index 3cb0ce00b70a..71c1e37408f5 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/UnnecessaryBoxingInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/UnnecessaryBoxingInspection.java @@ -99,6 +99,17 @@ public class UnnecessaryBoxingInspection extends BaseInspection { return; } final PsiExpression unboxedExpression = arguments[0]; + final Object value = ExpressionUtils.computeConstantExpression(unboxedExpression); + if (value != null) { + if (value == Boolean.TRUE) { + PsiReplacementUtil.replaceExpression(expression, "java.lang.Boolean.TRUE"); + return; + } + else if (value == Boolean.FALSE) { + PsiReplacementUtil.replaceExpression(expression, "java.lang.Boolean.FALSE"); + return; + } + } final String replacementText = getUnboxedExpressionText(unboxedExpression, boxedType); if (replacementText == null) { return; diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/migration/UnnecessaryBoxingFixTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/migration/UnnecessaryBoxingFixTest.java index 3bd9150c0cdb..ba793c847cec 100644 --- a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/migration/UnnecessaryBoxingFixTest.java +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/migration/UnnecessaryBoxingFixTest.java @@ -56,6 +56,12 @@ public class UnnecessaryBoxingFixTest extends IGQuickFixesTestCase { "Double l = 1d;"); } + public void testBooleanLiteral() { + doMemberTest(InspectionGadgetsBundle.message("unnecessary.boxing.remove.quickfix"), + "final Boolean aBoolean = Boolean.valueOf(/**/true);", + "final Boolean aBoolean = Boolean.TRUE;"); + } + public void testCast() { doFixTest(); }