From 3366b4b9a5059fd462378255532af2aed852cf3a Mon Sep 17 00:00:00 2001 From: MohitMaliFtechiz Date: Mon, 11 Mar 2024 17:32:41 +0530 Subject: [PATCH] Fixed: After restoring the tab it hides a few area of the article from the top. * It was showing with the top margin we have set in `TabsAdapter` for not showing the top margin in tabs, and `tempWebViewForUndo` saved with that margin, so when we are showing this in our reader, it was showing with that margin. So to fix this we are removing this margin from the `tempWebViewForUndo` if `tabSwitcher` is not showing, for properly showing the webView content. If the tab switcher is showing it will work as before. * Used the `safelyAddWebView` method when we were selecting the tab as this method is doing the same that we are doing in `selectTab` method so to reduce duplicate code we used this method. --- .../core/main/CoreReaderFragment.kt | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.kt index 3d48bc96e7..1c136c9f10 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/main/CoreReaderFragment.kt @@ -40,7 +40,6 @@ import android.os.IBinder import android.os.Looper import android.provider.Settings import android.util.AttributeSet -import org.kiwix.kiwixmobile.core.utils.files.Log import android.view.ActionMode import android.view.LayoutInflater import android.view.Menu @@ -57,6 +56,7 @@ import android.widget.Button import android.widget.FrameLayout import android.widget.ImageButton import android.widget.ImageView +import android.widget.LinearLayout import android.widget.TextView import android.widget.Toast import androidx.activity.result.ActivityResultLauncher @@ -159,6 +159,7 @@ import org.kiwix.kiwixmobile.core.utils.dialog.DialogShower import org.kiwix.kiwixmobile.core.utils.dialog.KiwixDialog import org.kiwix.kiwixmobile.core.utils.files.FileUtils.deleteCachedFiles import org.kiwix.kiwixmobile.core.utils.files.FileUtils.readFile +import org.kiwix.kiwixmobile.core.utils.files.Log import org.kiwix.kiwixmobile.core.utils.titleToUrl import org.kiwix.kiwixmobile.core.utils.urlSuffixToParsableUrl import org.kiwix.libkiwix.Book @@ -1221,6 +1222,16 @@ abstract class CoreReaderFragment : reopenBook() } tempWebViewForUndo?.let { + if (tabSwitcherRoot?.visibility == View.GONE) { + // Remove the top margin from the webView when the tabSwitcher is not visible. + // We have added this margin in `TabsAdapter` to not show the top margin in tabs. + // `tempWebViewForUndo` saved with that margin so before showing it to the `contentFrame` + // We need to set full width and height for properly showing the content of webView. + it.layoutParams = LinearLayout.LayoutParams( + LinearLayout.LayoutParams.MATCH_PARENT, + LinearLayout.LayoutParams.MATCH_PARENT + ) + } zimReaderContainer?.setZimFile(tempZimFileForUndo) webViewList.add(index, it) tabsAdapter?.notifyDataSetChanged() @@ -1243,10 +1254,7 @@ abstract class CoreReaderFragment : contentFrame?.let { it.removeAllViews() val webView = safelyGetWebView(position) ?: return@selectTab - webView.parent?.let { - (webView.parent as ViewGroup).removeView(webView) - } - it.addView(webView) + safelyAddWebView(webView) tabsAdapter?.selected = currentWebViewIndex updateBottomToolbarVisibility() loadPrefs()