mirror of
https://github.com/arduino/Arduino.git
synced 2025-02-20 14:54:31 +01:00
Fix issue #3502: behavior of Cmd+[ and Cmd+] on Mac OS X.
This commit is contained in:
parent
fa4876b7b1
commit
05be1480d4
@ -45,8 +45,8 @@ public class SketchTextAreaDefaultInputMap extends RSyntaxTextAreaDefaultInputMa
|
||||
|
||||
remove(KeyStroke.getKeyStroke(KeyEvent.VK_J, defaultModifier));
|
||||
|
||||
put(KeyStroke.getKeyStroke(KeyEvent.VK_OPEN_BRACKET, defaultModifier), DefaultEditorKit.insertTabAction);
|
||||
put(KeyStroke.getKeyStroke(KeyEvent.VK_CLOSE_BRACKET, defaultModifier), RSyntaxTextAreaEditorKit.rstaDecreaseIndentAction);
|
||||
put(KeyStroke.getKeyStroke(KeyEvent.VK_OPEN_BRACKET, defaultModifier), RSyntaxTextAreaEditorKit.rstaDecreaseIndentAction);
|
||||
put(KeyStroke.getKeyStroke(KeyEvent.VK_CLOSE_BRACKET, defaultModifier), SketchTextAreaEditorKit.rtaIncreaseIndentAction);
|
||||
|
||||
put(KeyStroke.getKeyStroke(KeyEvent.VK_UP, defaultModifier | shift), DefaultEditorKit.selectionBeginAction);
|
||||
put(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, defaultModifier | shift), DefaultEditorKit.selectionEndAction);
|
||||
|
@ -13,10 +13,12 @@ public class SketchTextAreaEditorKit extends RSyntaxTextAreaEditorKit {
|
||||
|
||||
public static final String rtaDeleteNextWordAction = "RTA.DeleteNextWordAction";
|
||||
public static final String rtaDeleteLineToCursorAction = "RTA.DeleteLineToCursorAction";
|
||||
public static final String rtaIncreaseIndentAction = "RTA.IncreaseIndentAction";
|
||||
|
||||
private static final Action[] defaultActions = {
|
||||
new DeleteNextWordAction(),
|
||||
new DeleteLineToCursorAction(),
|
||||
new IncreaseIndentAction(),
|
||||
new SelectWholeLineAction(),
|
||||
new ToggleCommentAction()
|
||||
};
|
||||
@ -103,6 +105,39 @@ public class SketchTextAreaEditorKit extends RSyntaxTextAreaEditorKit {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Increases the indent of the selected or current line(s).
|
||||
*/
|
||||
public static class IncreaseIndentAction extends RSyntaxTextAreaEditorKit.InsertTabAction {
|
||||
|
||||
public IncreaseIndentAction() {
|
||||
super(rtaIncreaseIndentAction);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformedImpl(ActionEvent e, RTextArea textArea) {
|
||||
int caretPosition = textArea.getCaretPosition();
|
||||
boolean noSelec = textArea.getSelectedText() == null;
|
||||
|
||||
// if no selection, focus on first char.
|
||||
if (noSelec) {
|
||||
try {
|
||||
int line = textArea.getCaretLineNumber();
|
||||
int startOffset = textArea.getLineStartOffset(line);
|
||||
textArea.setCaretPosition(startOffset);
|
||||
} catch (BadLocationException ex) {
|
||||
}
|
||||
}
|
||||
|
||||
// Insert Tab or Spaces..
|
||||
super.actionPerformedImpl(e, textArea);
|
||||
|
||||
if (noSelec) {
|
||||
textArea.setCaretPosition(caretPosition + (textArea.getTabsEmulated() ? textArea.getTabSize() : 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Selects the line around the caret.
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user