diff --git a/app/src/main/java/net/gsantner/markor/activity/DocumentEditAndViewFragment.java b/app/src/main/java/net/gsantner/markor/activity/DocumentEditAndViewFragment.java
index 9493fc35b5..a95bfc61ea 100644
--- a/app/src/main/java/net/gsantner/markor/activity/DocumentEditAndViewFragment.java
+++ b/app/src/main/java/net/gsantner/markor/activity/DocumentEditAndViewFragment.java
@@ -718,6 +718,15 @@ public void onFsViewerConfig(GsFileBrowserOptions.Options dopt) {
updateMenuToggleStates(0);
return true;
}
+ case R.id.action_enable_rtl: {
+ final boolean newState = !_appSettings.getDocumentRtlEnabled(_document.path);
+ _appSettings.setDocumentRtlEnabled(_document.path, newState);
+ if (_isPreviewVisible) {
+ updateViewModeText();
+ }
+ updateMenuToggleStates(0);
+ return true;
+ }
case R.id.action_info: {
if (saveDocument(false)) { // In order to have the correct info displayed
FileInfoDialog.show(_document.file, getParentFragmentManager());
@@ -1010,6 +1019,9 @@ private void updateMenuToggleStates(final int selectedFormatActionId) {
if ((mi = _fragmentMenu.findItem(R.id.action_enable_auto_format)) != null) {
mi.setChecked(_hlEditor.getAutoFormatEnabled());
}
+ if ((mi = _fragmentMenu.findItem(R.id.action_enable_rtl)) != null) {
+ mi.setChecked(_appSettings.getDocumentRtlEnabled(_document.path));
+ }
final SubMenu su;
if (selectedFormatActionId != 0 && (mi = _fragmentMenu.findItem(R.id.submenu_format_selection)) != null && (su = mi.getSubMenu()) != null) {
diff --git a/app/src/main/java/net/gsantner/markor/format/TextConverterBase.java b/app/src/main/java/net/gsantner/markor/format/TextConverterBase.java
index 50cac26d6a..c5648e5885 100644
--- a/app/src/main/java/net/gsantner/markor/format/TextConverterBase.java
+++ b/app/src/main/java/net/gsantner/markor/format/TextConverterBase.java
@@ -147,7 +147,8 @@ protected String putContentIntoTemplate(Context context, String content, boolean
html = html.replace("html,body{color:#303030;}", "html,body{color: black !important; background-color: white !important;}");
}
html += HTML004_HEAD_META_VIEWPORT_MOBILE + CSS_TABLE_STYLE + CSS_CLASS_FLOAT + CSS_BUTTON_STYLE_MATERIAL + CSS_BUTTON_STYLE_EMOJIBTN + CSS_CLASS_STICKY;
- if (as.isRenderRtl()) {
+ final boolean isRtl = as.getDocumentRtlEnabled(file != null ? GsFileUtils.getPath(file) : null);
+ if (isRtl) {
html += HTML003_RIGHT_TO_LEFT;
}
@@ -185,7 +186,7 @@ protected String putContentIntoTemplate(Context context, String content, boolean
.replace(TOKEN_COLOR_GREY_OF_THEME, darkTheme ? "#393939" : GsTextUtils.colorToHexString(ContextCompat.getColor(context, R.color.lighter_grey)))
.replace(TOKEN_LINK_COLOR, as.getViewModeLinkColor())
.replace(TOKEN_ACCENT_COLOR, GsTextUtils.colorToHexString(ContextCompat.getColor(context, R.color.accent)))
- .replace(TOKEN_TEXT_DIRECTION, as.isRenderRtl() ? "right" : "left")
+ .replace(TOKEN_TEXT_DIRECTION, isRtl ? "right" : "left")
.replace(TOKEN_FONT, font)
.replace(TOKEN_TEXT_CONVERTER_CSS_CLASS, "format-" + getClass().getSimpleName().toLowerCase().replace("textconverter", "").replace("converter", "") + (file == null ? "" : " fileext-" + GsFileUtils.getFilenameExtension(file).replace(".", "")))
.replace(TOKEN_POST_TODAY_DATE, DateFormat.getDateFormat(context).format(new Date()))
diff --git a/app/src/main/java/net/gsantner/markor/model/AppSettings.java b/app/src/main/java/net/gsantner/markor/model/AppSettings.java
index 80aed82124..819766fa2c 100644
--- a/app/src/main/java/net/gsantner/markor/model/AppSettings.java
+++ b/app/src/main/java/net/gsantner/markor/model/AppSettings.java
@@ -438,6 +438,7 @@ public void toggleFavouriteFile(final File file) {
private static final String PREF_PREFIX_TODO_DONE_NAME = "PREF_PREFIX_TODO_DONE_NAME";
private static final String PREF_PREFIX_LINE_NUM_STATE = "PREF_PREFIX_LINE_NUM_STATE";
private static final String PREF_PREFIX_VIEW_FONT_SIZE = "PREF_PREFIX_VIEW_FONT_SIZE";
+ private static final String PREF_PREFIX_RTL_STATE = "PREF_PREFIX_RTL_STATE";
public void setLastTodoDoneName(final String path, final String name) {
if (fexists(path)) {
@@ -589,6 +590,21 @@ public boolean getDocumentAutoFormatEnabled(final String path) {
}
}
+ public void setDocumentRtlEnabled(final String path, final boolean enabled) {
+ if (fexists(path)) {
+ setBool(PREF_PREFIX_RTL_STATE + path, enabled);
+ }
+ }
+
+ public boolean getDocumentRtlEnabled(final String path) {
+ final boolean _default = isRenderRtl();
+ if (!fexists(path)) {
+ return _default;
+ } else {
+ return getBool(PREF_PREFIX_RTL_STATE + path, _default);
+ }
+ }
+
public void setDocumentFontSize(final String path, final int size) {
if (fexists(path)) {
setInt(PREF_PREFIX_FONT_SIZE + path, size);
diff --git a/app/src/main/res/menu/document__edit__menu.xml b/app/src/main/res/menu/document__edit__menu.xml
index 8a44925ebb..9c41af9bed 100644
--- a/app/src/main/res/menu/document__edit__menu.xml
+++ b/app/src/main/res/menu/document__edit__menu.xml
@@ -96,6 +96,13 @@
android:title="@string/auto_format"
app:showAsAction="never" />
+
+