Skip to content

Commit

Permalink
improve history scroll restoration for HeadlineDialog
Browse files Browse the repository at this point in the history
  • Loading branch information
guanglinn committed Aug 4, 2024
1 parent 5ffcfa2 commit 384c593
Show file tree
Hide file tree
Showing 4 changed files with 9 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import net.gsantner.markor.frontend.textview.AutoTextFormatter;
import net.gsantner.markor.frontend.textview.TextViewUtils;
import net.gsantner.markor.model.Document;
import net.gsantner.opoc.frontend.GsSearchOrCustomTextDialog;
import net.gsantner.opoc.util.GsContextUtils;
import net.gsantner.opoc.util.GsFileUtils;

Expand All @@ -35,7 +36,7 @@ public class MarkdownActionButtons extends ActionButtonBase {

private static final Pattern WEB_URL = Pattern.compile("https?://[^\\s/$.?#].[^\\s]*");

private final MarkorDialogFactory.HeadlineDialogState _headlineDialogState = new MarkorDialogFactory.HeadlineDialogState();
private final GsSearchOrCustomTextDialog.DialogState _headlineDialogState = new GsSearchOrCustomTextDialog.DialogState();

public static final String LINE_PREFIX = "^(>\\s|#{1,6}\\s|\\s*[-*+](?:\\s\\[[ xX]\\])?\\s|\\s*\\d+[.)]\\s)?";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import net.gsantner.markor.frontend.textview.AutoTextFormatter;
import net.gsantner.markor.frontend.textview.TextViewUtils;
import net.gsantner.markor.model.Document;
import net.gsantner.opoc.frontend.GsSearchOrCustomTextDialog;

import java.io.File;
import java.text.SimpleDateFormat;
Expand All @@ -31,7 +32,7 @@

public class WikitextActionButtons extends ActionButtonBase {

private MarkorDialogFactory.HeadlineDialogState _headlineDialogState = new MarkorDialogFactory.HeadlineDialogState();
private GsSearchOrCustomTextDialog.DialogState _headlineDialogState = new GsSearchOrCustomTextDialog.DialogState();

public WikitextActionButtons(@NonNull Context context, Document document) {
super(context, document);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@

import net.gsantner.markor.ApplicationObject;
import net.gsantner.markor.R;
import net.gsantner.markor.format.markdown.MarkdownTextConverter;
import net.gsantner.markor.format.todotxt.TodoTxtBasicSyntaxHighlighter;
import net.gsantner.markor.format.todotxt.TodoTxtFilter;
import net.gsantner.markor.format.todotxt.TodoTxtTask;
Expand Down Expand Up @@ -789,12 +788,6 @@ private static class Heading {
}
}

public static class HeadlineDialogState {
public Set<Integer> disabledLevels = new HashSet<>();
public String searchQuery = "";
public int listPosition = -1;
}

/**
* Show a dialog to select a heading
*
Expand All @@ -808,7 +801,7 @@ public static void showHeadlineDialog(
final Activity activity,
final EditText edit,
final WebView webView,
final HeadlineDialogState state,
final GsSearchOrCustomTextDialog.DialogState state,
final GsCallback.r3<Integer, CharSequence, Integer, Integer> levelCallback
) {
// Get all headings and their levels
Expand Down Expand Up @@ -836,7 +829,6 @@ public static void showHeadlineDialog(
dopt.searchHintText = R.string.search;
dopt.isSearchEnabled = true;
dopt.isSoftInputVisible = false;
dopt.listPosition = state.listPosition;
dopt.defaultText = state.searchQuery;

dopt.positionCallback = result -> {
Expand All @@ -845,11 +837,7 @@ public static void showHeadlineDialog(

TextViewUtils.selectLines(edit, line);
final String jumpJs = "document.querySelector('[line=\"" + line + "\"]').scrollIntoView();";
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
webView.evaluateJavascript(jumpJs, null);
} else {
webView.loadUrl("javascript:" + jumpJs);
}
webView.evaluateJavascript(jumpJs, null);
};

dopt.neutralButtonText = R.string.filter;
Expand Down Expand Up @@ -879,11 +867,10 @@ public static void showHeadlineDialog(
};

dopt.dismissCallback = (d) -> {
state.listPosition = dopt.listPosition;
state.searchQuery = dopt.defaultText;
};

GsSearchOrCustomTextDialog.showMultiChoiceDialogWithSearchFilterUI(activity, dopt);
GsSearchOrCustomTextDialog.showMultiChoiceDialogWithSearchFilterUI(activity, dopt, state);
}

public static void showIndentSizeDialog(final Activity activity, final int indent, final GsCallback.a1<String> callback) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,9 @@ public static class DialogOptions {
public static class DialogState {
public int listPosition = -1;
public String defaultText = "";
public String searchQuery = "";
public Parcelable instanceState;
public Set<Integer> disabledLevels = new HashSet<>(); // For HeadlineDialog
}

public static class Adapter extends BaseAdapter {
Expand Down

0 comments on commit 384c593

Please sign in to comment.