Skip to content

Commit 59916f7

Browse files
author
Reinhard Hafenscher
authored
Merge pull request #347 from PSPDFKit/reinhard/duplicated-back-button
Fix two navigation buttons being shown while the search is open
2 parents 6841c48 + d22784d commit 59916f7

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

android/src/main/java/com/pspdfkit/views/PdfView.java

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.pspdfkit.forms.ComboBoxFormElement;
2828
import com.pspdfkit.forms.EditableButtonFormElement;
2929
import com.pspdfkit.forms.TextFormElement;
30+
import com.pspdfkit.listeners.OnVisibilityChangedListener;
3031
import com.pspdfkit.listeners.SimpleDocumentListener;
3132
import com.pspdfkit.react.events.PdfViewAnnotationChangedEvent;
3233
import com.pspdfkit.react.events.PdfViewAnnotationTappedEvent;
@@ -41,6 +42,8 @@
4142
import com.pspdfkit.ui.PdfFragment;
4243
import com.pspdfkit.ui.PdfUiFragment;
4344
import com.pspdfkit.ui.PdfUiFragmentBuilder;
45+
import com.pspdfkit.ui.search.PdfSearchView;
46+
import com.pspdfkit.ui.search.PdfSearchViewInline;
4447
import com.pspdfkit.ui.toolbar.grouping.MenuItemGroupingRule;
4548

4649
import org.json.JSONArray;
@@ -106,6 +109,11 @@ public class PdfView extends FrameLayout {
106109
/** An internal id we generate so we can track if fragments found belong to this specific PdfView instance. */
107110
private int internalId;
108111

112+
/** We keep track if the navigation button should be shown so we can show it when the inline search view is closed. */
113+
private boolean isNavigationButtonShown = false;
114+
/** We keep track if the inline search view is shown since we don't want to add a second navigation button while it is shown. */
115+
private boolean isSearchViewShown = false;
116+
109117
public PdfView(@NonNull Context context) {
110118
super(context);
111119
init();
@@ -224,10 +232,13 @@ public void setMenuItemGroupingRule(@NonNull MenuItemGroupingRule groupingRule)
224232
}
225233

226234
public void setShowNavigationButtonInToolbar(final boolean showNavigationButtonInToolbar) {
235+
isNavigationButtonShown = showNavigationButtonInToolbar;
227236
pendingFragmentActions.add(getCurrentPdfUiFragment()
228237
.observeOn(Schedulers.io())
229238
.subscribe(pdfUiFragment -> {
230-
((ReactPdfUiFragment) pdfUiFragment).setShowNavigationButtonInToolbar(showNavigationButtonInToolbar);
239+
if (!isSearchViewShown) {
240+
((ReactPdfUiFragment) pdfUiFragment).setShowNavigationButtonInToolbar(showNavigationButtonInToolbar);
241+
}
231242
}));
232243
}
233244

@@ -304,6 +315,22 @@ public void onNavigationButtonClicked(@NonNull PdfUiFragment pdfUiFragment) {
304315
}
305316
});
306317

318+
PdfSearchView searchView = pdfUiFragment.getPSPDFKitViews().getSearchView();
319+
if (searchView instanceof PdfSearchViewInline) {
320+
// The inline search view provides its own back button hide ours if it becomes visible.
321+
searchView.addOnVisibilityChangedListener(new OnVisibilityChangedListener() {
322+
@Override
323+
public void onShow(@NonNull View view) {
324+
((ReactPdfUiFragment) pdfUiFragment).setShowNavigationButtonInToolbar(false);
325+
}
326+
327+
@Override
328+
public void onHide(@NonNull View view) {
329+
((ReactPdfUiFragment) pdfUiFragment).setShowNavigationButtonInToolbar(isNavigationButtonShown);
330+
}
331+
});
332+
}
333+
307334
// After attaching the PdfUiFragment we can access the PdfFragment.
308335
preparePdfFragment(pdfUiFragment.getPdfFragment());
309336
}

0 commit comments

Comments
 (0)