Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 20 additions & 4 deletions Ports/Android/src/com/codename1/impl/android/InPlaceEditView.java
Original file line number Diff line number Diff line change
Expand Up @@ -651,6 +651,7 @@ static class TextAreaData {
final int scrollX;
final int scrollY;
final int verticalAlignment;
final int absoluteAlignment;
final int height;
final int width;
final int fontHeight;
Expand Down Expand Up @@ -694,6 +695,10 @@ int getVerticalAlignment() {
return verticalAlignment;
}

int getAbsoluteAlignment() {
return absoluteAlignment;
}

boolean isRTL() {
return isRTL;
}
Expand Down Expand Up @@ -733,6 +738,7 @@ String getHint() {
paddingBottom = s.getPaddingBottom();
isTextField = (ta instanceof TextField);
verticalAlignment = ta.getVerticalAlignment();
absoluteAlignment = ta.getAbsoluteAlignment();
height = ta.getHeight();
width = ta.getWidth();
fontHeight = s.getFont().getHeight();
Expand Down Expand Up @@ -874,10 +880,20 @@ public boolean onActionItemClicked(ActionMode mode,

mEditText.setLayoutParams(mEditLayoutParams);

if(textArea.isRTL()){
mEditText.setGravity(Gravity.RIGHT | Gravity.TOP);
}else{
mEditText.setGravity(Gravity.LEFT | Gravity.TOP);
// Honor the field's horizontal alignment (issue #5370) so a right- or
// center-aligned field doesn't jump to the left when the native editor
// takes over. getAbsoluteAlignment() already resolves LEFT/RIGHT for RTL,
// so it covers the previous RTL-only behavior too.
switch (textArea.getAbsoluteAlignment()) { // snapshot value, safe off the EDT
case Component.RIGHT:
mEditText.setGravity(Gravity.RIGHT | Gravity.TOP);
break;
case Component.CENTER:
mEditText.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.TOP);
break;
default:
mEditText.setGravity(Gravity.LEFT | Gravity.TOP);
break;
}

mEditText.setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom);
Expand Down
17 changes: 17 additions & 0 deletions Ports/JavaSE/src/com/codename1/impl/javase/JavaSEPort.java
Original file line number Diff line number Diff line change
Expand Up @@ -9368,6 +9368,23 @@ public void run() {
});
*/
}
// Honor the field's horizontal alignment (issue #5370) so a right- or
// center-aligned field doesn't jump to the left when the native editor
// takes over. getAbsoluteAlignment() already resolves LEFT/RIGHT for RTL.
// Both JTextField and JPasswordField (a JTextField subclass) support this.
if (t instanceof JTextField) {
switch (((com.codename1.ui.TextArea)cmp).getAbsoluteAlignment()) {
case com.codename1.ui.Component.RIGHT:
((JTextField)t).setHorizontalAlignment(JTextField.RIGHT);
break;
case com.codename1.ui.Component.CENTER:
((JTextField)t).setHorizontalAlignment(JTextField.CENTER);
break;
default:
((JTextField)t).setHorizontalAlignment(JTextField.LEADING);
break;
}
}
swingT = t;
textCmp = swingT;
} else {
Expand Down
Loading