From 60374ae378f5957f4edfa4c6b8460e0c29810b1b Mon Sep 17 00:00:00 2001 From: Eiichi Yoshikawa Date: Sat, 30 May 2026 15:50:51 +0900 Subject: [PATCH] fix: issue #167 (fix position of snackbar) --- .../java/eu/opencloud/android/extensions/ActivityExt.kt | 4 +++- .../eu/opencloud/android/ui/activity/BaseActivity.java | 8 +------- .../eu/opencloud/android/ui/activity/FileActivity.java | 4 ++-- .../opencloud/android/ui/preview/PreviewVideoActivity.kt | 4 ++-- 4 files changed, 8 insertions(+), 12 deletions(-) diff --git a/opencloudApp/src/main/java/eu/opencloud/android/extensions/ActivityExt.kt b/opencloudApp/src/main/java/eu/opencloud/android/extensions/ActivityExt.kt index cb94fd7777..d050e91f75 100644 --- a/opencloudApp/src/main/java/eu/opencloud/android/extensions/ActivityExt.kt +++ b/opencloudApp/src/main/java/eu/opencloud/android/extensions/ActivityExt.kt @@ -87,7 +87,9 @@ fun Activity.showMessageInSnackbar( message: CharSequence, duration: Int = Snackbar.LENGTH_LONG ) { - Snackbar.make(findViewById(layoutId), message, duration).show() + // edge-to-edge + val view = if (layoutId == android.R.id.content) window.decorView else findViewById(layoutId) + Snackbar.make(view, message, duration).show() } fun Activity.showErrorInToast( diff --git a/opencloudApp/src/main/java/eu/opencloud/android/ui/activity/BaseActivity.java b/opencloudApp/src/main/java/eu/opencloud/android/ui/activity/BaseActivity.java index 07970970d9..8e8fa8f187 100644 --- a/opencloudApp/src/main/java/eu/opencloud/android/ui/activity/BaseActivity.java +++ b/opencloudApp/src/main/java/eu/opencloud/android/ui/activity/BaseActivity.java @@ -318,13 +318,7 @@ public void dismissLoadingDialog() { * @param message Message to show. */ public void showSnackMessage(String message) { - final View rootView = findViewById(android.R.id.content); - - if (rootView == null) { - // If root view is not available don't let the app brake. show the notification anyway. - Toast.makeText(this, message, Toast.LENGTH_LONG).show(); - return; - } + final View rootView = getWindow().getDecorView(); Snackbar.make(rootView, message, Snackbar.LENGTH_LONG).show(); } } diff --git a/opencloudApp/src/main/java/eu/opencloud/android/ui/activity/FileActivity.java b/opencloudApp/src/main/java/eu/opencloud/android/ui/activity/FileActivity.java index 988e243de8..baa398821f 100644 --- a/opencloudApp/src/main/java/eu/opencloud/android/ui/activity/FileActivity.java +++ b/opencloudApp/src/main/java/eu/opencloud/android/ui/activity/FileActivity.java @@ -277,7 +277,7 @@ protected void showRequestAccountChangeNotice(String errorMessage, boolean mustC .setCancelable(false) .show(); } else { - Snackbar.make(findViewById(android.R.id.content), errorMessage, Snackbar.LENGTH_INDEFINITE) + Snackbar.make(getWindow().getDecorView(), errorMessage, Snackbar.LENGTH_INDEFINITE) .setAction(R.string.auth_oauth_failure_snackbar_action, v -> requestCredentialsUpdate()) .show(); @@ -285,7 +285,7 @@ protected void showRequestAccountChangeNotice(String errorMessage, boolean mustC } protected void showRequestRegainAccess() { - Snackbar.make(findViewById(android.R.id.content), R.string.auth_oauth_failure, Snackbar.LENGTH_INDEFINITE) + Snackbar.make(getWindow().getDecorView(), R.string.auth_oauth_failure, Snackbar.LENGTH_INDEFINITE) .setAction(R.string.auth_oauth_failure_snackbar_action, v -> requestCredentialsUpdate()) .show(); diff --git a/opencloudApp/src/main/java/eu/opencloud/android/ui/preview/PreviewVideoActivity.kt b/opencloudApp/src/main/java/eu/opencloud/android/ui/preview/PreviewVideoActivity.kt index 5579c2dc19..8ae412e5fd 100644 --- a/opencloudApp/src/main/java/eu/opencloud/android/ui/preview/PreviewVideoActivity.kt +++ b/opencloudApp/src/main/java/eu/opencloud/android/ui/preview/PreviewVideoActivity.kt @@ -418,7 +418,7 @@ class PreviewVideoActivity : FileActivity(), Player.Listener, OnPrepareVideoPlay val fileToSetAsAvailableOffline = ArrayList() fileToSetAsAvailableOffline.add(file) fileOperationsViewModel.performOperation(SetFilesAsAvailableOffline(fileToSetAsAvailableOffline)) - Snackbar.make(binding.root, R.string.confirmation_set_available_offline, Snackbar.LENGTH_LONG).show() + Snackbar.make(window.decorView, R.string.confirmation_set_available_offline, Snackbar.LENGTH_LONG).show() true } @@ -426,7 +426,7 @@ class PreviewVideoActivity : FileActivity(), Player.Listener, OnPrepareVideoPlay val fileToUnsetAsAvailableOffline = ArrayList() fileToUnsetAsAvailableOffline.add(file) fileOperationsViewModel.performOperation(UnsetFilesAsAvailableOffline(fileToUnsetAsAvailableOffline)) - Snackbar.make(binding.root, R.string.confirmation_unset_available_offline, Snackbar.LENGTH_LONG).show() + Snackbar.make(window.decorView, R.string.confirmation_unset_available_offline, Snackbar.LENGTH_LONG).show() true }