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

Commit 32c8d58c authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka Committed by Android (Google) Code Review
Browse files

Merge "Fix showing all suggestions when the top suggestion is long"

parents d23cef69 4f8a8f12
Loading
Loading
Loading
Loading
+46 −34
Original line number Diff line number Diff line
@@ -65,7 +65,7 @@ final class SuggestionStripLayoutHelper {
    public final int mPadding;
    public final int mDividerWidth;
    public final int mSuggestionsStripHeight;
    public final int mSuggestionsCountInStrip;
    private final int mSuggestionsCountInStrip;
    public final int mMoreSuggestionsRowHeight;
    private int mMaxMoreSuggestionsRow;
    public final float mMinMoreSuggestionsWidth;
@@ -288,33 +288,42 @@ final class SuggestionStripLayoutHelper {
        params.gravity = Gravity.CENTER;
    }

    public void layout(final SuggestedWords suggestedWords, final ViewGroup stripView,
            final ViewGroup placerView) {
    /**
     * Layout suggestions to the suggestions strip. And returns the number of suggestions displayed
     * in the suggestions strip.
     *
     * @param suggestedWords suggestions to be shown in the suggestions strip.
     * @param stripView the suggestions strip view.
     * @param placerView the view where the debug info will be placed.
     * @return the number of suggestions displayed in the suggestions strip
     */
    public int layoutAndReturnSuggestionCountInStrip(final SuggestedWords suggestedWords,
            final ViewGroup stripView, final ViewGroup placerView) {
        if (suggestedWords.mIsPunctuationSuggestions) {
            layoutPunctuationSuggestions(suggestedWords, stripView);
            return;
            return layoutPunctuationSuggestionsAndReturnSuggestionCountInStrip(
                    suggestedWords, stripView);
        }

        final int countInStrip = mSuggestionsCountInStrip;
        setupWordViewsTextAndColor(suggestedWords, countInStrip);
        setupWordViewsTextAndColor(suggestedWords, mSuggestionsCountInStrip);
        final TextView centerWordView = mWordViews.get(mCenterPositionInStrip);
        final int availableStripWidth = placerView.getWidth()
                - placerView.getPaddingRight() - placerView.getPaddingLeft();
        final int centerWidth = getSuggestionWidth(mCenterPositionInStrip, availableStripWidth);
        if (getTextScaleX(centerWordView.getText(), centerWidth, centerWordView.getPaint())
                < MIN_TEXT_XSCALE) {
        final int countInStrip;
        if (suggestedWords.size() == 1 || getTextScaleX(centerWordView.getText(), centerWidth,
                centerWordView.getPaint()) < MIN_TEXT_XSCALE) {
            // Layout only the most relevant suggested word at the center of the suggestion strip
            // by consolidating all slots in the strip.
            mMoreSuggestionsAvailable = (suggestedWords.size() > 1);
            countInStrip = 1;
            mMoreSuggestionsAvailable = (suggestedWords.size() > countInStrip);
            layoutWord(mCenterPositionInStrip, availableStripWidth - mPadding);
            stripView.addView(centerWordView);
            setLayoutWeight(centerWordView, 1.0f, ViewGroup.LayoutParams.MATCH_PARENT);
            if (SuggestionStripView.DBG) {
                layoutDebugInfo(mCenterPositionInStrip, placerView, availableStripWidth);
            }
            return;
        }

        } else {
            countInStrip = mSuggestionsCountInStrip;
            mMoreSuggestionsAvailable = (suggestedWords.size() > countInStrip);
            int x = 0;
            for (int positionInStrip = 0; positionInStrip < countInStrip; positionInStrip++) {
@@ -337,6 +346,8 @@ final class SuggestionStripLayoutHelper {
                }
            }
        }
        return countInStrip;
    }

    /**
     * Format appropriately the suggested word in {@link #mWordViews} specified by
@@ -435,8 +446,8 @@ final class SuggestionStripLayoutHelper {
        }
    }

    private void layoutPunctuationSuggestions(final SuggestedWords suggestedWords,
            final ViewGroup stripView) {
    private int layoutPunctuationSuggestionsAndReturnSuggestionCountInStrip(
            final SuggestedWords suggestedWords, final ViewGroup stripView) {
        final int countInStrip = Math.min(suggestedWords.size(), PUNCTUATIONS_IN_STRIP);
        for (int positionInStrip = 0; positionInStrip < countInStrip; positionInStrip++) {
            if (positionInStrip != 0) {
@@ -457,6 +468,7 @@ final class SuggestionStripLayoutHelper {
            setLayoutWeight(wordView, 1.0f, mSuggestionsStripHeight);
        }
        mMoreSuggestionsAvailable = (suggestedWords.size() > countInStrip);
        return countInStrip;
    }

    public void layoutAddToDictionaryHint(final String word, final ViewGroup addToDictionaryStrip,
+5 −3
Original line number Diff line number Diff line
@@ -77,6 +77,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick

    Listener mListener;
    private SuggestedWords mSuggestedWords = SuggestedWords.EMPTY;
    private int mSuggestionsCountInStrip;

    private final SuggestionStripLayoutHelper mLayoutHelper;
    private final StripVisibilityGroup mStripVisibilityGroup;
@@ -189,7 +190,8 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
        clear();
        mStripVisibilityGroup.setLayoutDirection(isRtlLanguage);
        mSuggestedWords = suggestedWords;
        mLayoutHelper.layout(mSuggestedWords, mSuggestionsStrip, this);
        mSuggestionsCountInStrip = mLayoutHelper.layoutAndReturnSuggestionCountInStrip(
                mSuggestedWords, mSuggestionsStrip, this);
        if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
            ResearchLogger.suggestionStripView_setSuggestions(mSuggestedWords);
        }
@@ -313,7 +315,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
        final View container = mMoreSuggestionsContainer;
        final int maxWidth = stripWidth - container.getPaddingLeft() - container.getPaddingRight();
        final MoreSuggestions.Builder builder = mMoreSuggestionsBuilder;
        builder.layout(mSuggestedWords, layoutHelper.mSuggestionsCountInStrip, maxWidth,
        builder.layout(mSuggestedWords, mSuggestionsCountInStrip, maxWidth,
                (int)(maxWidth * layoutHelper.mMinMoreSuggestionsWidth),
                layoutHelper.getMaxMoreSuggestionsRow(), parentKeyboard);
        mMoreSuggestionsView.setKeyboard(builder.build());
@@ -327,7 +329,7 @@ public final class SuggestionStripView extends RelativeLayout implements OnClick
        mMoreSuggestionsMode = MORE_SUGGESTIONS_CHECKING_MODAL_OR_SLIDING;
        mOriginX = mLastX;
        mOriginY = mLastY;
        for (int i = 0; i < layoutHelper.mSuggestionsCountInStrip; i++) {
        for (int i = 0; i < mSuggestionsCountInStrip; i++) {
            mWordViews.get(i).setPressed(false);
        }
        return true;