Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0ae2ec88 authored by Mattias Falk's avatar Mattias Falk Committed by Johan Redestig
Browse files

Dismissing AlertDialog before destroying WebView.

Added dismiss method for the Alertdialog in destroy to avoid
a leaked window.

Change-Id: Ia6a6e733b8bdd583dae15b854e4d69ef4f5cbff1
parent 7d9c73fb
Loading
Loading
Loading
Loading
+14 −4
Original line number Original line Diff line number Diff line
@@ -308,6 +308,10 @@ public class WebView extends AbsoluteLayout
    // true means redraw the screen all-the-time. Only with AUTO_REDRAW_HACK
    // true means redraw the screen all-the-time. Only with AUTO_REDRAW_HACK
    private boolean mAutoRedraw;
    private boolean mAutoRedraw;


    // Reference to the AlertDialog displayed by InvokeListBox.
    // It's used to dismiss the dialog in destroy if not done before.
    private AlertDialog mListBoxDialog = null;

    static final String LOGTAG = "webview";
    static final String LOGTAG = "webview";


    private static class ExtendedZoomControls extends FrameLayout {
    private static class ExtendedZoomControls extends FrameLayout {
@@ -1232,6 +1236,10 @@ public class WebView extends AbsoluteLayout
     */
     */
    public void destroy() {
    public void destroy() {
        clearTextEntry(false);
        clearTextEntry(false);
        if (mListBoxDialog != null) {
            mListBoxDialog.dismiss();
            mListBoxDialog = null;
        }
        if (mWebViewCore != null) {
        if (mWebViewCore != null) {
            // Set the handlers to null before destroying WebViewCore so no
            // Set the handlers to null before destroying WebViewCore so no
            // more messages will be posted.
            // more messages will be posted.
@@ -7072,7 +7080,7 @@ public class WebView extends AbsoluteLayout
                                EventHub.SINGLE_LISTBOX_CHOICE, -2, 0);
                                EventHub.SINGLE_LISTBOX_CHOICE, -2, 0);
                }});
                }});
            }
            }
            final AlertDialog dialog = b.create();
            mListBoxDialog = b.create();
            listView.setAdapter(adapter);
            listView.setAdapter(adapter);
            listView.setFocusableInTouchMode(true);
            listView.setFocusableInTouchMode(true);
            // There is a bug (1250103) where the checks in a ListView with
            // There is a bug (1250103) where the checks in a ListView with
@@ -7094,7 +7102,8 @@ public class WebView extends AbsoluteLayout
                            int position, long id) {
                            int position, long id) {
                        mWebViewCore.sendMessage(
                        mWebViewCore.sendMessage(
                                EventHub.SINGLE_LISTBOX_CHOICE, (int)id, 0);
                                EventHub.SINGLE_LISTBOX_CHOICE, (int)id, 0);
                        dialog.dismiss();
                        mListBoxDialog.dismiss();
                        mListBoxDialog = null;
                    }
                    }
                });
                });
                if (mSelection != -1) {
                if (mSelection != -1) {
@@ -7106,13 +7115,14 @@ public class WebView extends AbsoluteLayout
                    adapter.registerDataSetObserver(observer);
                    adapter.registerDataSetObserver(observer);
                }
                }
            }
            }
            dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
            mListBoxDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
                public void onCancel(DialogInterface dialog) {
                public void onCancel(DialogInterface dialog) {
                    mWebViewCore.sendMessage(
                    mWebViewCore.sendMessage(
                                EventHub.SINGLE_LISTBOX_CHOICE, -2, 0);
                                EventHub.SINGLE_LISTBOX_CHOICE, -2, 0);
                    mListBoxDialog = null;
                }
                }
            });
            });
            dialog.show();
            mListBoxDialog.show();
        }
        }
    }
    }