Fixed hopefully every bug concerning "enter to send" ability #36
@ -542,16 +542,20 @@ public final class ChatScene implements EventListener, Restorable {
|
|||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
private void checkKeyCombination(KeyEvent e) {
|
private void checkKeyCombination(KeyEvent e) {
|
||||||
|
|
||||||
// Checks whether the text is too long
|
// Checks whether the text is too long
|
||||||
messageTextUpdated();
|
messageTextUpdated();
|
||||||
|
|
||||||
// Sending an IsTyping event if none has been sent for
|
// Sending an IsTyping event if none has been sent for
|
||||||
// IsTyping#millisecondsActive
|
// IsTyping#millisecondsActive
|
||||||
if (currentChat.getLastWritingEvent() + IsTyping.millisecondsActive <= System.currentTimeMillis()) {
|
if (currentChat.getLastWritingEvent() + IsTyping.millisecondsActive <= System.currentTimeMillis()) {
|
||||||
eventBus.dispatch(new SendEvent(new IsTyping(getChatID(), currentChat.getRecipient().getID())));
|
eventBus.dispatch(new SendEvent(new IsTyping(getChatID(), currentChat.getRecipient().getID())));
|
||||||
currentChat.lastWritingEventWasNow();
|
currentChat.lastWritingEventWasNow();
|
||||||
}
|
}
|
||||||
// Automatic sending of messages via (ctrl +) enter
|
|
||||||
checkPostConditions(e);
|
// KeyPressed will be called before the char has been added to the text, hence
|
||||||
|
// this is needed for the first char
|
||||||
|
if (messageTextArea.getText().length() == 1) checkPostConditions(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -572,8 +576,16 @@ public final class ChatScene implements EventListener, Restorable {
|
|||||||
*/
|
*/
|
||||||
@FXML
|
@FXML
|
||||||
private void checkPostConditions(KeyEvent e) {
|
private void checkPostConditions(KeyEvent e) {
|
||||||
checkPostConditions(settings.isEnterToSend() && e.getCode() == KeyCode.ENTER
|
final var messagePosted = settings.isEnterToSend() && e.getCode() == KeyCode.ENTER
|
||||||
|| !settings.isEnterToSend() && e.getCode() == KeyCode.ENTER && e.isControlDown());
|
|| !settings.isEnterToSend() && e.getCode() == KeyCode.ENTER && e.isControlDown();
|
||||||
|
if (messagePosted) {
|
||||||
|
|
||||||
|
// Removing an inserted line break if added by pressing enter
|
||||||
|
final var text = messageTextArea.getText();
|
||||||
|
final var caretPosition = messageTextArea.getCaretPosition();
|
||||||
|
if (text.charAt(caretPosition - 1) == '\n') messageTextArea.setText(new StringBuilder(text).deleteCharAt(caretPosition - 1).toString());
|
||||||
|
}
|
||||||
|
checkPostConditions(messagePosted);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkPostConditions(boolean postMessage) {
|
private void checkPostConditions(boolean postMessage) {
|
||||||
|
Reference in New Issue
Block a user