Skip to content
Open
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
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ class NoteDirectEditFragment : BaseNoteFragment(), Branded {
plainEditingFab,
scrollStart,
scrollEnd,
false
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ public class NoteEditFragment extends SearchableBaseNoteFragment {
private Handler handler;
private boolean saveActive;
private boolean unsavedEdit;
private long lastTextChange = 0;

private final Runnable runAutoSave = new Runnable() {
@Override
public void run() {
Expand Down Expand Up @@ -124,6 +126,11 @@ protected ExtendedFloatingActionButton getNormalEditButton() {
return null;
}

@Override
protected boolean userIsChangingText() {
return System.currentTimeMillis() - lastTextChange < USER_CHANGING_TEXT_TIMEOUT;
}

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
Expand All @@ -148,6 +155,7 @@ public void onTextChanged(CharSequence s, int start, int before, int count) {

@Override
public void afterTextChanged(final Editable s) {
lastTextChange = System.currentTimeMillis();
unsavedEdit = true;
if (!saveActive) {
handler.removeCallbacks(runAutoSave);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ public class NotePreviewFragment extends SearchableBaseNoteFragment implements O
@Nullable
private Runnable setScrollY;

private long lastTextChange = 0;

@Override
public void onPrepareOptionsMenu(@NonNull Menu menu) {
super.onPrepareOptionsMenu(menu);
Expand Down Expand Up @@ -101,6 +103,11 @@ protected ExtendedFloatingActionButton getNormalEditButton() {
return binding.edit;
}

@Override
protected boolean userIsChangingText() {
return System.currentTimeMillis() - lastTextChange < USER_CHANGING_TEXT_TIMEOUT;
}

@Override
protected Layout getLayout() {
binding.singleNoteContent.onPreDraw();
Expand Down Expand Up @@ -140,6 +147,7 @@ protected void onNoteLoaded(Note note) {

noteLoaded = true;
registerInternalNoteLinkHandler();
registerInternalNoteTextChangedHandler();

lifecycleScopeIOJob(() -> {
final String content = note.getContent();
Expand Down Expand Up @@ -179,6 +187,10 @@ protected void registerInternalNoteLinkHandler() {
});
}

protected void registerInternalNoteTextChangedHandler() {
binding.singleNoteContent.setMarkdownStringChangedListener(charSequence -> lastTextChange = System.currentTimeMillis());
}

@Override
protected void colorWithText(@NonNull String newText, @Nullable Integer current, @ColorInt int color) {
if (binding != null && isAttachedToWindow(binding.singleNoteContent)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ public abstract class SearchableBaseNoteFragment extends BaseNoteFragment {
private static final String TAG = SearchableBaseNoteFragment.class.getSimpleName();
private static final String saved_instance_key_searchQuery = "searchQuery";
private static final String saved_instance_key_currentOccurrence = "currentOccurrence";
protected static final long USER_CHANGING_TEXT_TIMEOUT = 200;

private int currentOccurrence = 1;
private int occurrenceCount = 0;
Expand Down Expand Up @@ -80,9 +81,9 @@ protected void onScroll(int scrollY, int oldScrollY) {
final ExtendedFloatingActionButton directFab = getDirectEditingButton();
final ExtendedFloatingActionButton normalFab = getNormalEditButton();
if (directEditEnabled) {
ExtendedFabUtil.toggleVisibilityOnScroll(directFab, scrollY, oldScrollY);
ExtendedFabUtil.toggleVisibilityOnScroll(directFab, scrollY, oldScrollY, userIsChangingText());
} else if (normalFab != null) {
ExtendedFabUtil.toggleVisibilityOnScroll(normalFab, scrollY, oldScrollY);
ExtendedFabUtil.toggleVisibilityOnScroll(normalFab, scrollY, oldScrollY, userIsChangingText());
}
}
}
Expand Down Expand Up @@ -284,6 +285,8 @@ public void onSaveInstanceState(@NonNull Bundle outState) {

protected abstract ExtendedFloatingActionButton getNormalEditButton();

protected abstract boolean userIsChangingText();

private void showSearchFabs() {
ExtendedFabUtil.setExtendedFabVisibility(getDirectEditingButton(), false);
final ExtendedFloatingActionButton normalFab = getNormalEditButton();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ object ExtendedFabUtil {
if (extendedFab.isExtended) {
extendedFab.hide()
} else {
if (extendedFab.animation == null) {
if (extendedFab.animation == null && extendedFab.isShown) {
val animation =
AnimationUtils.loadAnimation(
extendedFab.context,
Expand Down Expand Up @@ -64,9 +64,11 @@ object ExtendedFabUtil {
extendedFab: ExtendedFloatingActionButton,
scrollY: Int,
oldScrollY: Int,
isTyping: Boolean
) {
@Suppress("ConvertTwoComparisonsToRangeCheck")
if (oldScrollY > 0 && scrollY > oldScrollY && extendedFab.isShown) {
val hasScrolledDown = oldScrollY > 0 && scrollY > oldScrollY && extendedFab.isShown
if (isTyping || hasScrolledDown) {
setExtendedFabVisibility(extendedFab, false)
} else if (scrollY < oldScrollY && !extendedFab.isShown) {
setExtendedFabVisibility(extendedFab, true)
Expand Down
Loading