1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/views/tabs/tab_search_button.h"
#include "chrome/app/vector_icons/vector_icons.h"
#include "chrome/browser/ui/browser_element_identifiers.h"
#include "chrome/browser/ui/ui_features.h"
#include "chrome/browser/ui/views/tabs/new_tab_button.h"
#include "chrome/browser/ui/views/tabs/tab_search_button.h"
#include "chrome/browser/ui/views/tabs/tab_strip_control_button.h"
#include "chrome/browser/ui/views/tabs/tab_strip_controller.h"
#include "chrome/common/chrome_features.h"
#include "chrome/grit/generated_resources.h"
#include "components/vector_icons/vector_icons.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/metadata/metadata_impl_macros.h"
#include "ui/base/ui_base_features.h"
#include "ui/gfx/paint_vector_icon.h"
#include "ui/views/background.h"
#include "ui/views/controls/button/menu_button_controller.h"
#include "ui/views/view_class_properties.h"
namespace {
constexpr int kCRTabSearchCornerRadius = 10;
constexpr int kCRTabSearchFlatCornerRadius = 4;
constexpr int kComboButtonFlatCornerRadius = 0;
} // namespace
TabSearchButton::TabSearchButton(
TabStripController* tab_strip_controller,
BrowserWindowInterface* browser_window_interface,
Edge fixed_flat_edge,
Edge animated_flat_edge,
TabStrip* tab_strip)
: TabStripControlButton(tab_strip_controller,
PressedCallback(),
vector_icons::kExpandMoreIcon,
fixed_flat_edge,
animated_flat_edge) {
SetProperty(views::kElementIdentifierKey, kTabSearchButtonElementId);
SetTooltipText(l10n_util::GetStringUTF16(IDS_TOOLTIP_TAB_SEARCH));
GetViewAccessibility().SetName(
l10n_util::GetStringUTF16(IDS_ACCNAME_TAB_SEARCH));
if (!features::IsTabSearchMoving() ||
features::HasTabstripComboButtonWithBackground()) {
SetForegroundFrameActiveColorId(kColorNewTabButtonForegroundFrameActive);
SetForegroundFrameInactiveColorId(
kColorNewTabButtonForegroundFrameInactive);
SetBackgroundFrameActiveColorId(kColorNewTabButtonCRBackgroundFrameActive);
SetBackgroundFrameInactiveColorId(
kColorNewTabButtonCRBackgroundFrameInactive);
UpdateColors();
}
}
TabSearchButton::~TabSearchButton() = default;
void TabSearchButton::NotifyClick(const ui::Event& event) {
TabStripControlButton::NotifyClick(event);
// Run pressed callback via MenuButtonController, instead of directly. This is
// safe as the TabSearchBubbleHost will always configure the TabSearchButton
// with a MenuButtonController.
static_cast<views::MenuButtonController*>(button_controller())
->Activate(&event);
}
int TabSearchButton::GetCornerRadius() const {
return kCRTabSearchCornerRadius;
}
int TabSearchButton::GetFlatCornerRadius() const {
return features::IsTabSearchMoving() ? kComboButtonFlatCornerRadius
: kCRTabSearchFlatCornerRadius;
}
BEGIN_METADATA(TabSearchButton)
END_METADATA
|