First hide keyboard on back

This commit is contained in:
M66B 2022-06-12 13:19:38 +02:00
parent 84e703bacf
commit 617824ff3e
10 changed files with 54 additions and 7 deletions

View File

@ -318,7 +318,10 @@ public class ActivitySetup extends ActivityBase implements FragmentManager.OnBac
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
onExit();
if (Helper.isKeyboardVisible(view))
Helper.hideKeyboard(view);
else
onExit();
}
});

View File

@ -160,6 +160,11 @@ public class ActivitySignature extends ActivityBase {
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
if (Helper.isKeyboardVisible(view)) {
Helper.hideKeyboard(view);
return;
}
String prev = getIntent().getStringExtra("html");
String current = getHtml();
boolean dirty = !Objects.equals(prev, current) &&

View File

@ -699,7 +699,10 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
onExit();
if (Helper.isKeyboardVisible(view))
Helper.hideKeyboard(view);
else
onExit();
}
});

View File

@ -493,7 +493,10 @@ public class FragmentAccount extends FragmentBase {
getActivity().getOnBackPressedDispatcher().addCallback(getViewLifecycleOwner(), new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
onSave(true);
if (Helper.isKeyboardVisible(view))
Helper.hideKeyboard(view);
else
onSave(true);
}
});

View File

@ -7210,7 +7210,10 @@ public class FragmentCompose extends FragmentBase {
private OnBackPressedCallback backPressedCallback = new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
onExit();
if (Helper.isKeyboardVisible(view))
Helper.hideKeyboard(view);
else
onExit();
}
};

View File

@ -241,7 +241,10 @@ public class FragmentFolder extends FragmentBase {
getActivity().getOnBackPressedDispatcher().addCallback(getViewLifecycleOwner(), new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
onSave(true);
if (Helper.isKeyboardVisible(view))
Helper.hideKeyboard(view);
else
onSave(true);
}
});

View File

@ -494,7 +494,10 @@ public class FragmentIdentity extends FragmentBase {
getActivity().getOnBackPressedDispatcher().addCallback(getViewLifecycleOwner(), new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
onSave(true);
if (Helper.isKeyboardVisible(view))
Helper.hideKeyboard(view);
else
onSave(true);
}
});

View File

@ -7342,6 +7342,11 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
private OnBackPressedCallback backPressedCallback = new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
if (Helper.isKeyboardVisible(view)) {
Helper.hideKeyboard(view);
return;
}
if (isSearching()) {
endSearch();
return;

View File

@ -278,7 +278,10 @@ public class FragmentPop extends FragmentBase {
getActivity().getOnBackPressedDispatcher().addCallback(getViewLifecycleOwner(), new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
onSave(true);
if (Helper.isKeyboardVisible(view))
Helper.hideKeyboard(view);
else
onSave(true);
}
});

View File

@ -103,6 +103,8 @@ import androidx.browser.customtabs.CustomTabsIntent;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.content.ContextCompat;
import androidx.core.content.FileProvider;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.lifecycle.Lifecycle;
@ -1524,6 +1526,20 @@ public class Helper {
}
}
static boolean isKeyboardVisible(final View view) {
if (view == null)
return false;
View root = view.getRootView();
if (root == null)
return false;
WindowInsetsCompat insets = ViewCompat.getRootWindowInsets(root);
if (insets == null)
return false;
boolean visible = insets.isVisible(WindowInsetsCompat.Type.ime());
Log.i("isKeyboardVisible=" + visible);
return visible;
}
static String getViewName(View view) {
StringBuilder sb = new StringBuilder(_getViewName(view));
ViewParent parent = view.getParent();