diff --git a/python/ipnb/resources/META-INF/plugin.xml b/python/ipnb/resources/META-INF/plugin.xml
index ff23491042f9..180d2057386f 100644
--- a/python/ipnb/resources/META-INF/plugin.xml
+++ b/python/ipnb/resources/META-INF/plugin.xml
@@ -45,10 +45,10 @@
-
-
-
-
+
+
+
+
diff --git a/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/panels/IpnbFilePanel.java b/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/panels/IpnbFilePanel.java
index 4d55d679e15e..a21ab2b9aedb 100644
--- a/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/panels/IpnbFilePanel.java
+++ b/python/ipnb/src/org/jetbrains/plugins/ipnb/editor/panels/IpnbFilePanel.java
@@ -22,6 +22,7 @@ import org.jetbrains.plugins.ipnb.format.cells.output.IpnbOutputCell;
import javax.swing.*;
import java.awt.*;
+import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
@@ -285,6 +286,22 @@ public class IpnbFilePanel extends JPanel implements Scrollable, DataProvider {
}
}
}
+ else if (e.getKeyCode() == KeyEvent.VK_DELETE) {
+ if (!mySelectedCell.isEditing())
+ deleteCell(mySelectedCell);
+ }
+ else if (e.getKeyCode() == KeyEvent.VK_X && e.getModifiers() == InputEvent.CTRL_MASK) {
+ if (!mySelectedCell.isEditing())
+ cutCell();
+ }
+ else if (e.getKeyCode() == KeyEvent.VK_C && e.getModifiers() == InputEvent.CTRL_MASK) {
+ if (!mySelectedCell.isEditing())
+ copyCell();
+ }
+ else if (e.getKeyCode() == KeyEvent.VK_V && e.getModifiers() == InputEvent.CTRL_MASK) {
+ if (!mySelectedCell.isEditing())
+ pasteCell();
+ }
else {
getParent().dispatchEvent(e);
}