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

Commit 1c4ad119 authored by Christine Franks's avatar Christine Franks Committed by Android (Google) Code Review
Browse files

Merge changes from topic 'cab_history' into ub-calculator-euler

* changes:
  Dismiss CAB when tap elsewhere
  Close CAB when scrolled or back pressed
parents fe7a4103 1473ddd7
Loading
Loading
Loading
Loading
+19 −9
Original line number Diff line number Diff line
@@ -553,13 +553,8 @@ public class Calculator extends Activity
     * Return true if there was one.
     */
    private boolean stopActionModeOrContextMenu() {
        if (mResultText.stopActionModeOrContextMenu()) {
            return true;
        }
        if (mFormulaText.stopActionModeOrContextMenu()) {
            return true;
        }
        return false;
        return mResultText.stopActionModeOrContextMenu()
                || mFormulaText.stopActionModeOrContextMenu();
    }

    @Override
@@ -573,12 +568,25 @@ public class Calculator extends Activity
        }
    }

    @Override
    public boolean dispatchTouchEvent(MotionEvent e) {
        if (e.getActionMasked() == MotionEvent.ACTION_DOWN) {
            stopActionModeOrContextMenu();
            if (mDragLayout.isOpen()) {
                mHistoryFragment.stopActionModeOrContextMenu();
            }
        }
        return super.dispatchTouchEvent(e);
    }

    @Override
    public void onBackPressed() {
        if (!stopActionModeOrContextMenu()) {
            if (mDragLayout.isOpen()) {
                if (!mHistoryFragment.stopActionModeOrContextMenu()) {
                    mDragLayout.setClosed();
                    popFragmentBackstack();
                }
                return;
            }
            if (mPadViewPager != null && mPadViewPager.getCurrentItem() != 0) {
@@ -1271,6 +1279,8 @@ public class Calculator extends Activity
            return;
        }
        if (!mDragLayout.isOpen()) {
            stopActionModeOrContextMenu();

            manager.beginTransaction()
                    .replace(R.id.history_frame, mHistoryFragment, HistoryFragment.TAG)
                    .setTransition(transit)
+9 −3
Original line number Diff line number Diff line
@@ -964,7 +964,7 @@ public class CalculatorResult extends AlignedTextView implements MenuItem.OnMenu
            @Override
            public boolean onCreateActionMode(ActionMode mode, Menu menu) {
                final MenuInflater inflater = mode.getMenuInflater();
                return createCopyMenu(inflater, menu);
                return createContextMenu(inflater, menu);
            }

            @Override
@@ -1038,7 +1038,7 @@ public class CalculatorResult extends AlignedTextView implements MenuItem.OnMenu
            public void onCreateContextMenu(ContextMenu contextMenu, View view,
                    ContextMenu.ContextMenuInfo contextMenuInfo) {
                final MenuInflater inflater = new MenuInflater(getContext());
                createCopyMenu(inflater, contextMenu);
                createContextMenu(inflater, contextMenu);
                mContextMenu = contextMenu;
                for (int i = 0; i < contextMenu.size(); i ++) {
                    contextMenu.getItem(i).setOnMenuItemClickListener(CalculatorResult.this);
@@ -1056,7 +1056,7 @@ public class CalculatorResult extends AlignedTextView implements MenuItem.OnMenu
        });
    }

    private boolean createCopyMenu(MenuInflater inflater, Menu menu) {
    private boolean createContextMenu(MenuInflater inflater, Menu menu) {
        inflater.inflate(R.menu.menu_result, menu);
        final boolean displayMemory = mEvaluator.getMemoryIndex() != 0;
        final MenuItem memoryAddItem = menu.findItem(R.id.memory_add);
@@ -1134,4 +1134,10 @@ public class CalculatorResult extends AlignedTextView implements MenuItem.OnMenu
                return false;
        }
    }

    @Override
    protected void onDetachedFromWindow() {
        stopActionModeOrContextMenu();
        super.onDetachedFromWindow();
    }
}
+23 −0
Original line number Diff line number Diff line
@@ -33,6 +33,8 @@ import android.widget.Toolbar;

import java.util.ArrayList;

import static android.support.v7.widget.RecyclerView.SCROLL_STATE_DRAGGING;

public class HistoryFragment extends Fragment {

    public static final String TAG = "HistoryFragment";
@@ -96,6 +98,15 @@ public class HistoryFragment extends Fragment {
                R.layout.fragment_history, container, false /* attachToRoot */);

        mRecyclerView = (RecyclerView) view.findViewById(R.id.history_recycler_view);
        mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                if (newState == SCROLL_STATE_DRAGGING) {
                    stopActionModeOrContextMenu();
                }
                super.onScrollStateChanged(recyclerView, newState);
            }
        });

        // The size of the RecyclerView is not affected by the adapter's contents.
        mRecyclerView.setHasFixedSize(true);
@@ -234,4 +245,16 @@ public class HistoryFragment extends Fragment {
        calculator.onClearAnimationEnd();
        calculator.onBackPressed();
    }

    public boolean stopActionModeOrContextMenu() {
        for (int i = 0; i < mRecyclerView.getChildCount(); i++) {
            final View view = mRecyclerView.getChildAt(i);
            final HistoryAdapter.ViewHolder viewHolder =
                    (HistoryAdapter.ViewHolder) mRecyclerView.getChildViewHolder(view);
            if (viewHolder != null && viewHolder.getResult().stopActionModeOrContextMenu()) {
                return true;
            }
        }
        return false;
    }
}