Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/master' into select_lines
Browse files Browse the repository at this point in the history
  • Loading branch information
harshad1 committed Nov 30, 2024
2 parents 41f59fc + 14d0620 commit 0d93827
Show file tree
Hide file tree
Showing 14 changed files with 83 additions and 47 deletions.
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ android {
defaultConfig {
resValue "string", "manifest_package_id", "net.gsantner.markor"
applicationId "net.gsantner.markor"
versionName "2.13.0"
versionCode 155
versionName "2.13.1"
versionCode 156

multiDexEnabled true
minSdkVersion rootProject.ext.version_minSdk
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import android.os.Build;
import android.os.Bundle;
import android.text.Html;
import android.util.Log;
import android.view.KeyEvent;
import android.view.MotionEvent;

Expand Down Expand Up @@ -95,8 +96,8 @@ private static void launch(
intent = new Intent(activity, DocumentActivity.class);

if (!(activity instanceof DocumentActivity) &&
Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP &&
as.isMultiWindowEnabled()
Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP &&
as.isMultiWindowEnabled()
) {
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
}
Expand Down Expand Up @@ -254,7 +255,8 @@ public boolean dispatchTouchEvent(MotionEvent event) {
}
try {
return super.dispatchTouchEvent(event);
} catch (IndexOutOfBoundsException ignored) {
} catch (Exception e) {
Log.e(getClass().getName(), "Error in super.dispatchTouchEvent: " + e);
return false;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ public void onPause() {
_appSettings.setDocumentPreviewState(_document.path, _isPreviewVisible);
_appSettings.setLastEditPosition(_document.path, TextViewUtils.getSelection(_hlEditor)[0]);

if(_document.path.equals(_appSettings.getTodoFile().getAbsolutePath())){
if (_document.path.equals(_appSettings.getTodoFile().getAbsolutePath())) {
TodoWidgetProvider.updateTodoWidgets();
}
super.onPause();
Expand Down Expand Up @@ -862,7 +862,12 @@ private boolean isDisplayedAtMainActivity() {
}

public void updateViewModeText() {
_format.getConverter().convertMarkupShowInWebView(_document, getTextString(), getActivity(), _webView, _nextConvertToPrintMode, _hlEditor.isLineNumbersEnabled());
// Don't let text to view mode crash app
try {
_format.getConverter().convertMarkupShowInWebView(_document, getTextString(), getActivity(), _webView, _nextConvertToPrintMode, _hlEditor.isLineNumbersEnabled());
} catch (OutOfMemoryError e) {
_format.getConverter().convertMarkupShowInWebView(_document, "updateViewModeText getTextString(): OutOfMemory " + e, getActivity(), _webView, _nextConvertToPrintMode, _hlEditor.isLineNumbersEnabled());
}
}

public void setViewModeVisibility(final boolean show) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.util.Pair;
import android.util.Patterns;
import android.util.TypedValue;
Expand Down Expand Up @@ -375,7 +376,7 @@ private String formatShare(final String shared) {
}

// Put the shared text in the right place
parts.add(1, shared);
parts.add(parts.isEmpty() ? 0 : 1, shared);

return TextUtils.join("", parts);
}
Expand Down Expand Up @@ -433,7 +434,9 @@ public void onFsViewerConfig(GsFileBrowserOptions.Options dopt) {

@Override
public void onFsViewerSelected(final String request, final File sel, final Integer lineNumber) {
if (sel.isDirectory()) {
if (sel == null) {
Log.e(getClass().getName(), "onFsViewerSelected: selected file is null");
} else if (sel.isDirectory()) {
NewFileDialog.newInstance(sel, false, f -> {
if (f.isFile()) {
appendToExistingDocumentAndClose(f, true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,7 @@ public void recreateActionButtons(final ViewGroup barLayout, final ActionItem.Di
@SuppressLint("ClickableViewAccessibility")
private void setupRepeat(final View btn) {
// Velocity and acceleration parameters
final int INITIAL_DELAY = 400, DELTA_DELAY = 50, MIN_DELAY = 100;
final int INITIAL_DELAY = 300, DELTA_DELAY = 100, MIN_DELAY = 100;
final Handler handler = new Handler();

final Runnable repeater = new Runnable() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,14 @@
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.view.ActionMode;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewTreeObserver;
import android.view.accessibility.AccessibilityEvent;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
Expand All @@ -41,6 +43,7 @@

import java.util.Objects;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.RejectedExecutionException;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
Expand Down Expand Up @@ -123,12 +126,22 @@ public void afterTextChanged(final Editable s) {
@Override
public boolean onPreDraw() {
_lineNumbersDrawer.setTextSize(getTextSize());
return super.onPreDraw();
try {
return super.onPreDraw();
} catch (OutOfMemoryError ignored) {
return false; // return false to cancel current drawing pass/round
}
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
try {
super.onDraw(canvas);
} catch (Exception e) {
// Hinder drawing from crashing the app
Log.e(getClass().getName(), "HighlightingEdtior onDraw->super.onDraw crash" + e);
Toast.makeText(getContext(), e.toString(), Toast.LENGTH_SHORT).show();
}

if (_numEnabled) {
_lineNumbersDrawer.draw(canvas);
Expand Down Expand Up @@ -188,7 +201,10 @@ public void recomputeHighlighting() {
*/
private void recomputeHighlightingAsync() {
if (runHighlight(true)) {
executor.execute(this::_recomputeHighlightingWorker);
try {
executor.execute(this::_recomputeHighlightingWorker);
} catch (RejectedExecutionException ignored) {
}
}
}

Expand Down Expand Up @@ -296,14 +312,12 @@ public boolean bringPointIntoView(int i) {

private int rowStart(final int y) {
final Layout layout = getLayout();
final int line = layout.getLineForVertical(y);
return layout.getLineStart(line);
return layout == null ? 0 : layout.getLineStart(layout.getLineForVertical(y));
}

private int rowEnd(final int y) {
final Layout layout = getLayout();
final int line = layout.getLineForVertical(y);
return layout.getLineEnd(line);
return layout == null ? 0 : layout.getLineEnd(layout.getLineForVertical(y));
}

// Text-Casing
Expand Down Expand Up @@ -405,7 +419,12 @@ public boolean onTextContextMenuItem(int id) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && id == android.R.id.paste) {
id = android.R.id.pasteAsPlainText;
}
return super.onTextContextMenuItem(id);
try {
// i.e. DeadSystemRuntimeException can happen here
return super.onTextContextMenuItem(id);
} catch (Exception ignored) {
return true;
}
}

// Accessibility code is blocked during rapid update events
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,9 @@
* Spans are further divided into two categories: dynamic and static.
* - Dynamic spans are updated as one scrolls, as described above
* - Static spans are applied once and never updated. These are typically used for
* spans which affect the text layout.
* - For example, a span which makes text bigger.
* - Updating these dynamically would make the text jump around as one scrolls
* spans which affect the text layout.
* - For example, a span which makes text bigger.
* - Updating these dynamically would make the text jump around as one scrolls
* <p>
* Fixup:
* - As the user types we shift all spans to accomodate the changed text.
Expand All @@ -75,19 +75,19 @@
* - Derived classes should override generateSpans() to generate all spans
* - New spans are added by calling addSpanGroup()
* - The HighlightingEditor will trigger the generation of spans when the text changes.
* - This is debounced so that changes are batched
* - Span generation is done on a background thread
* - This is debounced so that changes are batched
* - Span generation is done on a background thread
* <p>
* Other performance tips:
* - Performance is heavily dependent on the number of spans applied to the text.
* - Combine related spans into a single span if possible
* - HighlightSpan is a helper class which can be used to create a span with multiple attributes
* - For example, a span which makes text bold and italic
* - HighlightSpan is a helper class which can be used to create a span with multiple attributes
* - For example, a span which makes text bold and italic
* - Absolutely minimize the number of spans implementing `UpdateLayout`
* - These spans trigger a text layout update when changed in any way
* - Instead consider using a span implementing `StaticSpan`
* - If StaticSpans are present, the text is reflowed after applying them
* - This happens once, and not for each span, which is much more efficient
* - These spans trigger a text layout update when changed in any way
* - Instead consider using a span implementing `StaticSpan`
* - If StaticSpans are present, the text is reflowed after applying them
* - This happens once, and not for each span, which is much more efficient
*/
public abstract class SyntaxHighlighterBase {

Expand Down Expand Up @@ -230,7 +230,7 @@ public SyntaxHighlighterBase clearStatic() {
boolean hasStatic = false;
for (int i = _groups.size() - 1; i >= 0; i--) {
final SpanGroup group = _groups.get(i);
if (group.isStatic) {
if (group != null && group.isStatic) {
hasStatic = true;
_spannable.removeSpan(group.span);
}
Expand Down Expand Up @@ -348,7 +348,7 @@ public SyntaxHighlighterBase applyDynamic(final int[] range) {
for (int i = 0; i < _groups.size(); i++) {
final SpanGroup group = _groups.get(i);

if (group.isStatic) {
if (group == null || group.isStatic) {
continue;
}

Expand All @@ -368,7 +368,6 @@ public SyntaxHighlighterBase applyDynamic(final int[] range) {
}



public SyntaxHighlighterBase applyStatic() {
if (_spannable != null && !_staticApplied) {
applyFixup();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -855,7 +855,7 @@ public boolean isExperimentalFeaturesEnabled() {
}

public boolean isHighlightBiggerHeadings() {
return getBool(R.string.pref_key__editor_markdown_bigger_headings_2, false);
return getBool(R.string.pref_key__editor_markdown_bigger_headings_3, false);
}

public String getViewModeLinkColor() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
import java.util.Set;
import java.util.Stack;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.RejectedExecutionException;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
Expand Down Expand Up @@ -152,7 +153,7 @@ public Map<File, File> getVirtualFolders() {
}

for (final File file : ContextCompat.getExternalFilesDirs(_context, null)) {
if (file == null || file.getParentFile() == null) {
if (file == null || (file != null && file.getParentFile() == null)) {
continue;
}
final File remap = new File(VIRTUAL_STORAGE_ROOT, "AppData (" + file.getParentFile().toString().replace("/", "-").substring(1) + ")");
Expand Down Expand Up @@ -678,7 +679,10 @@ private void loadFolder(final File folder, final File show) {
final File toShow = show == null ? _fileToShowAfterNextLoad : show;
_fileToShowAfterNextLoad = null;

executorService.execute(() -> _loadFolder(toLoad, toShow));
try {
executorService.execute(() -> _loadFolder(toLoad, toShow));
} catch (RejectedExecutionException ignored) { // during exit
}
}

// This function is not called on the main thread, so post to the UI thread
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,9 @@ public void onClick(View v) {
import android.text.Selection;
import android.text.TextWatcher;
import android.text.style.UnderlineSpan;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;

import net.gsantner.markor.frontend.textview.TextViewUtils;

Expand Down Expand Up @@ -150,8 +152,10 @@ public void undo() {
mIsUndoOrRedo = true;
try {
text.replace(start, end, edit.before);
} catch (Exception ex){
} catch (Exception ex) {
// In case a undo would crash the app, don't do it instead
Log.e(getClass().getName(), "undo() Error in text.replace" + ex);
Toast.makeText(mTextView.getContext(), "undo() Error in text.replace" + ex, Toast.LENGTH_LONG).show();
return;
}
mIsUndoOrRedo = false;
Expand Down
14 changes: 7 additions & 7 deletions app/src/main/java/net/gsantner/opoc/util/GsContextUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -1861,7 +1861,7 @@ public void extractResultFromActivityResult(final Activity context, final int re
if (resultCode == Activity.RESULT_OK && intent != null && intent.getData() != null) {
final Uri uri = intent.getData();
final String uriPath = uri.getPath();
final String ext = uriPath.substring(uriPath.lastIndexOf("."));
final String ext = uriPath == null || !uriPath.contains(".") ? "" : uriPath.substring(uriPath.lastIndexOf("."));
final String datestr = new SimpleDateFormat("yyyy-MM-dd'T'HH-mm-ss", Locale.ENGLISH).format(new Date());
final File temp = new File(context.getCacheDir(), datestr + ext);
GsFileUtils.copyUriToFile(context, uri, temp);
Expand Down Expand Up @@ -2743,12 +2743,12 @@ public void dialogFullWidth(AlertDialog dialog, boolean fullWidth, boolean showK
}

public static void windowAspectRatio(
final Window window,
final DisplayMetrics displayMetrics,
float portraitWidthRatio,
float portraitHeightRatio,
float landscapeWidthRatio,
float landscapeHeightRatio
final Window window,
final DisplayMetrics displayMetrics,
float portraitWidthRatio,
float portraitHeightRatio,
float landscapeWidthRatio,
float landscapeHeightRatio
) {
if (window == null) {
return;
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/values/string-not_translatable.xml
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ work. If not, see <https://creativecommons.org/publicdomain/zero/1.0/>.
<string name="pref_key__editor_disable_spelling_red_underline" translatable="false">pref_key__editor_disable_spelling_red_underline</string>
<string name="pref_key__highlight_code_monospace_font" translatable="false">pref_key__highlight_code_monospace_font</string>
<string name="pref_key__highlight_code_block_disabled" translatable="false">pref_key__highlight_code_block_disabled</string>
<string name="pref_key__editor_markdown_bigger_headings_2" translatable="false">pref_key__editor_markdown_bigger_headings_2</string>
<string name="pref_key__editor_markdown_bigger_headings_3" translatable="false">pref_key__editor_markdown_bigger_headings_3</string>
<string name="pref_key__editor_unordered_list_character" translatable="false">pref_key__editor_unordered_list_character</string>
<string name="pref_key__recent_documents" translatable="false">pref_key__recent_documents</string>
<string name="pref_key__popular_documents" translatable="false">pref_key__popular_documents</string>
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/xml/preferences_master.xml
Original file line number Diff line number Diff line change
Expand Up @@ -340,7 +340,7 @@
<CheckBoxPreference
android:defaultValue="false"
android:icon="@drawable/ic_format_size_black_24dp"
android:key="@string/pref_key__editor_markdown_bigger_headings_2"
android:key="@string/pref_key__editor_markdown_bigger_headings_3"
android:summary="@string/increase_text_size_of_headings_according_to_level"
android:title="@string/bigger_headings" />
</PreferenceCategory>
Expand Down
4 changes: 2 additions & 2 deletions metadata/en-US/full_description.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@
👌 No ads or unnecessary permissions
🌎 Language selection -- use other language than on the system

💡 Unlike other office suites (like <a href="fdroid.app:org.documentfoundation.libreoffice">LibreOffice</a>) or to-do apps (like Wunderlist), Markor has one streamlined text editor with no other editing UI. Markor shows how powerful and expressive simple text can be. View, edit, manipulate and convert plaintext!
💡 Unlike other office suites (like <a href="https://f-droid.org/packages/org.documentfoundation.libreoffice/">LibreOffice</a>) or to-do apps (like Wunderlist), Markor has one streamlined text editor with no other editing UI. Markor shows how powerful and expressive simple text can be. View, edit, manipulate and convert plaintext!

🔃 Markor works with sync apps, but they have to do syncing respectively. Sync clients known to work in combination include BitTorrent Sync, Dropbox, FolderSync, <a href="fdroid.app:com.owncloud.android">OwnCloud</a>, <a href="fdroid.app:com.nextcloud.client">NextCloud</a>, <a href="fdroid.app:com.seafile.seadroid2">Seafile</a>, <a href="fdroid.app:com.nutomic.syncthingandroid">Syncthing</a>, <a href="fdroid.app:org.amoradi.syncopoli">Syncopoli</a>
🔃 Markor works with sync apps, but they have to do syncing respectively. Sync clients known to work in combination include BitTorrent Sync, Dropbox, FolderSync, <a href="https://f-droid.org/packages/com.owncloud.android/">OwnCloud</a>, <a href="https://f-droid.org/packages/com.nextcloud.client/">NextCloud</a>, <a href="https://f-droid.org/packages/com.seafile.seadroid2/">Seafile</a>, <a href="https://f-droid.org/packages/com.nutomic.syncthingandroid/">Syncthing</a>, <a href="https://f-droid.org/packages/org.amoradi.syncopoli/">Syncopoli</a>

👀 These apps may also be in your interest if you like Markor: OneNote, EverNote, Google Keep, Wunderlist, Read-It-Later, Pocket, Epsilon Notes, iA Writer, Todoist, Shaarli, Wallabag, Simple Notes, Simpletask, Share to clipboard, NextCloud Bookmarks, Easy Open Link

Expand Down

0 comments on commit 0d93827

Please sign in to comment.