Commit 6ea8ec30 authored by varkha's avatar varkha Committed by Commit bot

[md] Fixes tooltips regression on Linux that should not have changed

I have tried making rounded corners work on Linux but so far haven't
succeeded. I can make the non-opaque background work using
Widget::SetOpacity and ui::Layer::SetFillsBoundsOpaquely but the native
widget on Linux still paints around the rounded corners.
Widget::SetShape doesn't use antialiasing so using that to achieve
rounded corners appears crude.
There is some work to make transparency work better on Linux
https://codereview.chromium.org/2124633002 so I haven't pursued this
further.

BUG=630556

Review-Url: https://codereview.chromium.org/2174033002
Cr-Commit-Position: refs/heads/master@{#407350}
parent e2d465d8
...@@ -29,13 +29,19 @@ namespace { ...@@ -29,13 +29,19 @@ namespace {
// be wrapped. // be wrapped.
const int kTooltipMaxWidthPixels = 400; const int kTooltipMaxWidthPixels = 400;
// Corner radius of tooltip background used with Material Design.
const float kTooltipCornerRadius = 2.f;
// FIXME: get cursor offset from actual cursor size. // FIXME: get cursor offset from actual cursor size.
const int kCursorOffsetX = 10; const int kCursorOffsetX = 10;
const int kCursorOffsetY = 15; const int kCursorOffsetY = 15;
// TODO(varkha): Update if native widget can be transparent on Linux.
bool CanUseTranslucentTooltipWidget() {
#if defined(OS_LINUX) && !defined(OS_CHROMEOS)
return false;
#else
return ui::MaterialDesignController::IsModeMaterial();
#endif
}
// Creates a widget of type TYPE_TOOLTIP // Creates a widget of type TYPE_TOOLTIP
views::Widget* CreateTooltipWidget(aura::Window* tooltip_window) { views::Widget* CreateTooltipWidget(aura::Window* tooltip_window) {
views::Widget* widget = new views::Widget; views::Widget* widget = new views::Widget;
...@@ -47,10 +53,10 @@ views::Widget* CreateTooltipWidget(aura::Window* tooltip_window) { ...@@ -47,10 +53,10 @@ views::Widget* CreateTooltipWidget(aura::Window* tooltip_window) {
DCHECK(params.context); DCHECK(params.context);
params.keep_on_top = true; params.keep_on_top = true;
params.accept_events = false; params.accept_events = false;
if (ui::MaterialDesignController::IsModeMaterial()) { if (CanUseTranslucentTooltipWidget())
params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW; params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW;
if (ui::MaterialDesignController::IsModeMaterial())
params.shadow_type = views::Widget::InitParams::SHADOW_TYPE_NONE; params.shadow_type = views::Widget::InitParams::SHADOW_TYPE_NONE;
}
widget->Init(params); widget->Init(params);
return widget; return widget;
} }
...@@ -119,8 +125,10 @@ class TooltipAura::TooltipView : public views::View { ...@@ -119,8 +125,10 @@ class TooltipAura::TooltipView : public views::View {
} }
void SetBackgroundColor(SkColor background_color) { void SetBackgroundColor(SkColor background_color) {
// Corner radius of tooltip background used with Material Design.
const float kTooltipCornerRadius = 2.f;
views::Background* background = views::Background* background =
ui::MaterialDesignController::IsModeMaterial() CanUseTranslucentTooltipWidget()
? views::Background::CreateBackgroundPainter( ? views::Background::CreateBackgroundPainter(
true, views::Painter::CreateSolidRoundRectPainter( true, views::Painter::CreateSolidRoundRectPainter(
background_color, kTooltipCornerRadius)) background_color, kTooltipCornerRadius))
......
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