Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2034)

Unified Diff: athena/wm/overview_toolbar.cc

Issue 537073002: athena: Improve the overview mode support for split-view mode. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: athena/wm/overview_toolbar.cc
diff --git a/athena/wm/overview_toolbar.cc b/athena/wm/overview_toolbar.cc
index 339d1dddbb15733d077d964c6ef8f35b2c34ff7b..d381b1c2d48dd357c464b6b061d85f0c055e65f9 100644
--- a/athena/wm/overview_toolbar.cc
+++ b/athena/wm/overview_toolbar.cc
@@ -98,6 +98,7 @@ class ActionButton : public ui::LayerDelegate {
OverviewToolbar::OverviewToolbar(aura::Window* container)
: shown_(false),
+ disabled_action_bitfields_(0),
close_(new ActionButton(IDR_ATHENA_OVERVIEW_TRASH, "Close")),
split_(new ActionButton(IDR_ATHENA_OVERVIEW_SPLIT, "Split")),
current_action_(ACTION_TYPE_NONE),
@@ -128,14 +129,17 @@ OverviewToolbar::~OverviewToolbar() {
OverviewToolbar::ActionType OverviewToolbar::GetHighlightAction(
const ui::GestureEvent& event) const {
- if (IsEventOverButton(split_.get(), event))
+ if (IsActionEnabled(ACTION_TYPE_SPLIT) &&
+ IsEventOverButton(split_.get(), event))
return ACTION_TYPE_SPLIT;
- if (IsEventOverButton(close_.get(), event))
+ if (IsActionEnabled(ACTION_TYPE_CLOSE) &&
+ IsEventOverButton(close_.get(), event))
return ACTION_TYPE_CLOSE;
return ACTION_TYPE_NONE;
}
void OverviewToolbar::SetHighlightAction(ActionType action) {
+ CHECK(IsActionEnabled(action));
if (current_action_ == action)
return;
current_action_ = action;
@@ -157,12 +161,21 @@ void OverviewToolbar::HideActionButtons() {
ToggleActionButtonsVisibility();
}
+void OverviewToolbar::DisableAction(ActionType action) {
+ CHECK_NE(current_action_, action);
+ disabled_action_bitfields_ |= (1u << action);
+}
+
void OverviewToolbar::ToggleActionButtonsVisibility() {
shown_ = !shown_;
TransformButton(close_.get());
TransformButton(split_.get());
}
+bool OverviewToolbar::IsActionEnabled(ActionType action) const {
+ return !(disabled_action_bitfields_ & (1u << action));
+}
+
bool OverviewToolbar::IsEventOverButton(ActionButton* button,
const ui::GestureEvent& event) const {
const int kBoundsInsetForTarget = 30;
@@ -193,7 +206,10 @@ void OverviewToolbar::TransformButton(ActionButton* button) {
button->layer()->GetAnimator());
split_settings.SetTweenType(gfx::Tween::SMOOTH_IN_OUT);
button->layer()->SetTransform(ComputeTransformFor(button));
- button->layer()->SetOpacity(shown_ ? 1 : 0);
+ bool button_is_enabled =
+ (button == close_.get() && IsActionEnabled(ACTION_TYPE_CLOSE)) ||
+ (button == split_.get() && IsActionEnabled(ACTION_TYPE_SPLIT));
+ button->layer()->SetOpacity((button_is_enabled && shown_) ? 1 : 0);
}
} // namespace athena

Powered by Google App Engine
This is Rietveld 408576698