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

Commit af2d8597 authored by Adam Powell's avatar Adam Powell
Browse files

Adjust toolbar/action bar title handling

Treat activity title changes as window title changes when propagating
to action bars. This gives it lower priority if a "hard" title has
been set. Fix some lifecycle handling around this that previously
resulted in multiple calls.

Automatically detect the starting display options for a
ToolbarWidgetWrapper if we're not grabbing them from styles. This
prevents setTitle and friends from going totally out to lunch if
constructed around a Toolbar with no starting title.

Bug 17138048

Change-Id: I9f58a3d222546745c8aa873e996b8f0d52a0ad21
parent 412e4e20
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1061,6 +1061,10 @@ public abstract class ActionBar {
        return false;
    }

    /** @hide */
    public void setWindowTitle(CharSequence title) {
    }

    /**
     * Listener interface for ActionBar navigation events.
     *
+3 −3
Original line number Diff line number Diff line
@@ -5019,9 +5019,9 @@ public class Activity extends ContextThemeWrapper
                    win.setTitleColor(color);
                }
            }
        }
            if (mActionBar != null) {
            mActionBar.setTitle(title);
                mActionBar.setWindowTitle(title);
            }
        }
    }

+5 −0
Original line number Diff line number Diff line
@@ -225,6 +225,11 @@ public class ToolbarActionBar extends ActionBar {
        mDecorToolbar.setTitle(resId != 0 ? mDecorToolbar.getContext().getText(resId) : null);
    }

    @Override
    public void setWindowTitle(CharSequence title) {
        mDecorToolbar.setWindowTitle(title);
    }

    @Override
    public void setSubtitle(CharSequence subtitle) {
        mDecorToolbar.setSubtitle(subtitle);
+5 −0
Original line number Diff line number Diff line
@@ -431,6 +431,11 @@ public class WindowDecorActionBar extends ActionBar implements
        mDecorToolbar.setTitle(title);
    }

    @Override
    public void setWindowTitle(CharSequence title) {
        mDecorToolbar.setWindowTitle(title);
    }

    public void setSubtitle(CharSequence subtitle) {
        mDecorToolbar.setSubtitle(subtitle);
    }
+11 −0
Original line number Diff line number Diff line
@@ -162,6 +162,8 @@ public class ToolbarWidgetWrapper implements DecorToolbar {
            }

            a.recycle();
        } else {
            mDisplayOpts = detectDisplayOptions();
        }

        if (TextUtils.isEmpty(mToolbar.getNavigationContentDescription())) {
@@ -181,6 +183,15 @@ public class ToolbarWidgetWrapper implements DecorToolbar {
        });
    }

    private int detectDisplayOptions() {
        int opts = ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_HOME |
                ActionBar.DISPLAY_USE_LOGO;
        if (mToolbar.getNavigationIcon() != null) {
            opts |= ActionBar.DISPLAY_HOME_AS_UP;
        }
        return opts;
    }

    @Override
    public ViewGroup getViewGroup() {
        return mToolbar;