Commit bfb00644 authored by Katie D's avatar Katie D Committed by Commit Bot

UX tweaks to the autoclick menu bubble.

Fixes height and width of full bubble, and background
of position icon.

Bug: 976482
Change-Id: I80a21f9696226693cd2f0ca444ad595704154993
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1670267
Commit-Queue: Katie Dektar <katie@chromium.org>
Reviewed-by: default avatarTetsui Ohkubo <tetsui@chromium.org>
Cr-Commit-Position: refs/heads/master@{#671763}
parent 2c8a9d51
......@@ -28,8 +28,8 @@ namespace ash {
namespace {
// Autoclick menu constants.
const int kAutoclickMenuWidth = 321;
const int kAutoclickMenuWidthWithScroll = 371;
const int kAutoclickMenuWidth = 319;
const int kAutoclickMenuWidthWithScroll = 369;
const int kAutoclickMenuHeight = 64;
mojom::AutoclickMenuPosition DefaultSystemPosition() {
......@@ -177,7 +177,8 @@ void AutoclickMenuBubbleController::SetPosition(
// Un-inset the bounds to get the widget's bounds, which includes the drop
// shadow.
resting_bounds.Inset(-kCollisionWindowWorkAreaInsetsDp,
resting_bounds.Inset(-kCollisionWindowWorkAreaInsetsDp, 0,
-kCollisionWindowWorkAreaInsetsDp,
-kCollisionWindowWorkAreaInsetsDp);
if (bubble_widget_->GetWindowBoundsInScreen() == resting_bounds)
return;
......
......@@ -46,10 +46,12 @@ class AutoclickMenuButton : public TopShortcutButton {
AutoclickMenuButton(views::ButtonListener* listener,
const gfx::VectorIcon& icon,
int accessible_name_id,
int size = kTrayItemSize)
int size = kTrayItemSize,
bool draw_highlight = true)
: TopShortcutButton(listener, accessible_name_id),
icon_(&icon),
size_(size) {
size_(size),
draw_highlight_(draw_highlight) {
EnableCanvasFlippingForRTLUI(false);
SetPreferredSize(gfx::Size(size_, size_));
UpdateImage();
......@@ -84,13 +86,15 @@ class AutoclickMenuButton : public TopShortcutButton {
// TopShortcutButton:
void PaintButtonContents(gfx::Canvas* canvas) override {
gfx::Rect rect(GetContentsBounds());
cc::PaintFlags flags;
flags.setAntiAlias(true);
flags.setColor(toggled_ ? kAutoclickMenuButtonColorActive
: kUnifiedMenuButtonColor);
flags.setStyle(cc::PaintFlags::kFill_Style);
canvas->DrawCircle(gfx::PointF(rect.CenterPoint()), size_ / 2, flags);
if (draw_highlight_) {
gfx::Rect rect(GetContentsBounds());
cc::PaintFlags flags;
flags.setAntiAlias(true);
flags.setColor(toggled_ ? kAutoclickMenuButtonColorActive
: kUnifiedMenuButtonColor);
flags.setStyle(cc::PaintFlags::kFill_Style);
canvas->DrawCircle(gfx::PointF(rect.CenterPoint()), size_ / 2, flags);
}
views::ImageButton::PaintButtonContents(canvas);
}
......@@ -128,6 +132,7 @@ class AutoclickMenuButton : public TopShortcutButton {
// True if the button is currently toggled.
bool toggled_ = false;
int size_;
const bool draw_highlight_;
DISALLOW_COPY_AND_ASSIGN(AutoclickMenuButton);
};
......@@ -176,7 +181,8 @@ AutoclickMenuView::AutoclickMenuView(mojom::AutoclickEventType type,
new AutoclickMenuButton(this,
kAutoclickPositionBottomLeftIcon,
IDS_ASH_AUTOCLICK_OPTION_CHANGE_POSITION,
kPanelPositionButtonSize)) {
kPanelPositionButtonSize,
false /* no highlight */)) {
// TODO(katie): Initialize scroll above once it launches, target in M77.
if (base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableExperimentalAccessibilityAutoclick)) {
......
......@@ -48,11 +48,14 @@ bool ShouldIgnoreWindowForCollision(
}
gfx::Rect ComputeCollisionRectFromBounds(const gfx::Rect& bounds,
const aura::Window* parent) {
const aura::Window* parent,
bool inset = true) {
gfx::Rect collision_rect = bounds;
::wm::ConvertRectToScreen(parent, &collision_rect);
collision_rect.Inset(-kCollisionWindowWorkAreaInsetsDp,
-kCollisionWindowWorkAreaInsetsDp);
if (inset) {
collision_rect.Inset(-kCollisionWindowWorkAreaInsetsDp,
-kCollisionWindowWorkAreaInsetsDp);
}
return collision_rect;
}
......@@ -97,8 +100,22 @@ std::vector<gfx::Rect> CollectCollisionRects(
if (ShouldIgnoreWindowForCollision(window, priority))
continue;
// Use the target bounds in case an animation is in progress.
rects.push_back(ComputeCollisionRectFromBounds(window->GetTargetBounds(),
window->parent()));
if (priority ==
CollisionDetectionUtils::RelativePriority::kAutomaticClicksMenu &&
window->GetProperty(kCollisionDetectionRelativePriority) ==
CollisionDetectionUtils::RelativePriority::
kAutomaticClicksScrollMenu) {
// The autoclick menu widget and autoclick scroll menu widget are 0dip
// apart because they must be drawn at 8dips apart including drop
// shadow. This special case means we should not add an inset if we
// are calculating collision rects for the autoclick menu.
rects.push_back(ComputeCollisionRectFromBounds(
window->GetTargetBounds(), window->parent(),
false /* do not inset */));
} else {
rects.push_back(ComputeCollisionRectFromBounds(
window->GetTargetBounds(), window->parent()));
}
}
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment