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

Commit 2775fb64 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Dismiss Dialog in post instead of immediately"

parents 1c56e0cb c6442335
Loading
Loading
Loading
Loading
+78 −50
Original line number Diff line number Diff line
@@ -68,6 +68,14 @@ public abstract class DialogPreference extends Preference implements
    /** Which button was clicked. */
    private int mWhichButtonClicked;

    /** Dismiss the dialog on the UI thread, but not inline with handlers */
    private final Runnable mDismissRunnable = new Runnable() {
        @Override
        public void run() {
            mDialog.dismiss();
        }
    };

    public DialogPreference(
            Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
@@ -315,10 +323,29 @@ public abstract class DialogPreference extends Preference implements
        if (needInputMethod()) {
            requestInputMethod(dialog);
        }
        dialog.setOnShowListener(new DialogInterface.OnShowListener() {
            @Override
            public void onShow(DialogInterface dialog) {
                removeDismissCallbacks();
            }
        });
        dialog.setOnDismissListener(this);
        dialog.show();
    }

    void postDismiss() {
        removeDismissCallbacks();
        View decorView = mDialog.getWindow().getDecorView();
        decorView.post(mDismissRunnable);
    }

    private void removeDismissCallbacks() {
        if (mDialog != null && mDialog.getWindow() != null
                && mDialog.getWindow().getDecorView() != null) {
            mDialog.getWindow().getDecorView().removeCallbacks(mDismissRunnable);
        }
    }

    /**
     * Returns whether the preference needs to display a soft input method when the dialog
     * is displayed. Default is false. Subclasses should override this method if they need
@@ -387,8 +414,9 @@ public abstract class DialogPreference extends Preference implements
        mWhichButtonClicked = which;
    }

    @Override
    public void onDismiss(DialogInterface dialog) {
        
        removeDismissCallbacks();
        getPreferenceManager().unregisterOnActivityDestroyListener(this);

        mDialog = null;
+22 −22
Original line number Diff line number Diff line
@@ -261,7 +261,7 @@ public class ListPreference extends DialogPreference {
                         * click, and dismisses the dialog.
                         */
                        ListPreference.this.onClick(dialog, DialogInterface.BUTTON_POSITIVE);
                        dialog.dismiss();
                        postDismiss();
                    }
        });