Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions browser/ui/views/bookmarks/brave_bookmark_bar_view.cc
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,13 @@

#include "brave/browser/ui/bookmark/brave_bookmark_prefs.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/bookmarks/bookmark_utils.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/color/chrome_color_id.h"
#include "components/bookmarks/browser/bookmark_model.h"
#include "components/bookmarks/browser/bookmark_node.h"
#include "ui/base/metadata/metadata_impl_macros.h"
#include "ui/views/controls/button/label_button.h"

BraveBookmarkBarView::BraveBookmarkBarView(Browser* browser,
BrowserView* browser_view)
Expand All @@ -26,6 +30,48 @@ BraveBookmarkBarView::BraveBookmarkBarView(Browser* browser,

BraveBookmarkBarView::~BraveBookmarkBarView() = default;

void BraveBookmarkBarView::ConfigureButton(
const bookmarks::BookmarkNode* node,
views::LabelButton* button) {
BookmarkBarView::ConfigureButton(node, button);
if (node->is_folder()) {
button->SetImageModel(
views::Button::STATE_NORMAL,
chrome::GetBookmarkFolderIcon(chrome::BookmarkFolderIconType::kNormal,
kColorToolbarButtonIcon));
button->SetImageModel(
views::Button::STATE_DISABLED,
chrome::GetBookmarkFolderIcon(chrome::BookmarkFolderIconType::kNormal,
kColorToolbarButtonIconInactive));
}
}

void BraveBookmarkBarView::UpdateAppearanceForTheme() {
BookmarkBarView::UpdateAppearanceForTheme();

if (all_bookmarks_button_) {
all_bookmarks_button_->SetImageModel(
views::Button::STATE_NORMAL,
chrome::GetBookmarkFolderIcon(chrome::BookmarkFolderIconType::kNormal,
kColorToolbarButtonIcon));
all_bookmarks_button_->SetImageModel(
views::Button::STATE_DISABLED,
chrome::GetBookmarkFolderIcon(chrome::BookmarkFolderIconType::kNormal,
kColorToolbarButtonIconInactive));
}

if (managed_bookmarks_button_) {
managed_bookmarks_button_->SetImageModel(
views::Button::STATE_NORMAL,
chrome::GetBookmarkFolderIcon(chrome::BookmarkFolderIconType::kManaged,
kColorToolbarButtonIcon));
managed_bookmarks_button_->SetImageModel(
views::Button::STATE_DISABLED,
chrome::GetBookmarkFolderIcon(chrome::BookmarkFolderIconType::kManaged,
kColorToolbarButtonIconInactive));
}
}

void BraveBookmarkBarView::MaybeUpdateOtherAndManagedButtonsVisibility() {
if (bookmark_service_ && bookmark_service_->bookmark_model() &&
bookmark_service_->bookmark_model()->loaded()) {
Expand Down
4 changes: 3 additions & 1 deletion browser/ui/views/bookmarks/brave_bookmark_bar_view.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

/* Copyright (c) 2024 The Brave Authors. All rights reserved.
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
Expand All @@ -20,6 +19,9 @@ class BraveBookmarkBarView : public BookmarkBarView {

// BookmarkBarView:
bool UpdateOtherAndManagedButtonsVisibility() override;
void ConfigureButton(const bookmarks::BookmarkNode* node,
views::LabelButton* button) override;
void UpdateAppearanceForTheme() override;

private:
// Note that so-called "Others button" is renamed to "All bookmarks button"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ class VerticalTabStripWidget : public ThemeCopyingWidget {
return new VerticalTabStripRootView(browser_view_, this);
}

// views::Widget:
bool ShouldViewsStyleFollowWidgetActivation() const override { return true; }

private:
raw_ptr<BrowserView> browser_view_;
};
Expand Down
43 changes: 43 additions & 0 deletions browser/ui/views/sidebar/sidebar_button_view.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

#include "brave/browser/ui/views/sidebar/sidebar_button_view.h"

#include "base/functional/bind.h"
#include "brave/browser/ui/color/brave_color_id.h"
#include "chrome/browser/ui/color/chrome_color_provider_utils.h"
#include "chrome/browser/ui/views/chrome_layout_provider.h"
Expand All @@ -13,7 +14,9 @@
#include "ui/gfx/color_palette.h"
#include "ui/views/animation/ink_drop.h"
#include "ui/views/controls/highlight_path_generator.h"
#include "ui/views/style/platform_style.h"
#include "ui/views/view_class_properties.h"
#include "ui/views/widget/widget.h"

SidebarButtonView::SidebarButtonView(const std::u16string& accessible_name) {
// Locate image at center of the button.
Expand All @@ -36,6 +39,17 @@ SidebarButtonView::SidebarButtonView(const std::u16string& accessible_name) {

SidebarButtonView::~SidebarButtonView() = default;

gfx::ImageSkia SidebarButtonView::GetImage(ButtonState state) const {
if constexpr (views::PlatformStyle::kInactiveWidgetControlsAppearDisabled) {
const auto* widget = GetWidget();
if (widget && widget->ShouldViewsStyleFollowWidgetActivation() &&
!widget->ShouldPaintAsActive()) {
return ImageButton::GetImage(STATE_DISABLED);
}
}
return ImageButton::GetImage(state);
}

void SidebarButtonView::OnThemeChanged() {
ImageButton::OnThemeChanged();

Expand All @@ -53,5 +67,34 @@ gfx::Size SidebarButtonView::CalculatePreferredSize(
return {kSidebarButtonSize + kMargin * 2, kSidebarButtonSize};
}

gfx::ImageSkia SidebarButtonView::GetImageToPaint() {
if constexpr (views::PlatformStyle::kInactiveWidgetControlsAppearDisabled) {
const auto* widget = GetWidget();
if (widget && widget->ShouldViewsStyleFollowWidgetActivation() &&
!widget->ShouldPaintAsActive()) {
auto img = images_[STATE_DISABLED].Rasterize(GetColorProvider());
if (!img.isNull()) {
return img;
}
}
}
return ImageButton::GetImageToPaint();
}

void SidebarButtonView::AddedToWidget() {
ImageButton::AddedToWidget();
if constexpr (views::PlatformStyle::kInactiveWidgetControlsAppearDisabled) {
paint_as_active_subscription_ =
GetWidget()->RegisterPaintAsActiveChangedCallback(
base::BindRepeating(&SidebarButtonView::SchedulePaint,
base::Unretained(this)));
}
}

void SidebarButtonView::RemovedFromWidget() {
paint_as_active_subscription_ = {};
ImageButton::RemovedFromWidget();
}

BEGIN_METADATA(SidebarButtonView)
END_METADATA
11 changes: 11 additions & 0 deletions browser/ui/views/sidebar/sidebar_button_view.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

#include <string>

#include "base/callback_list.h"
#include "ui/views/controls/button/image_button.h"

class SidebarButtonView : public views::ImageButton {
Expand All @@ -29,9 +30,19 @@ class SidebarButtonView : public views::ImageButton {
SidebarButtonView operator=(const SidebarButtonView&) = delete;

// views::ImageButton overrides:
gfx::ImageSkia GetImage(ButtonState state) const override;
void OnThemeChanged() override;
gfx::Size CalculatePreferredSize(
const views::SizeBounds& available_size) const override;
void AddedToWidget() override;
void RemovedFromWidget() override;

protected:
// views::ImageButton:
gfx::ImageSkia GetImageToPaint() override;

private:
base::CallbackListSubscription paint_as_active_subscription_;
};

#endif // BRAVE_BROWSER_UI_VIEWS_SIDEBAR_SIDEBAR_BUTTON_VIEW_H_
3 changes: 2 additions & 1 deletion browser/ui/views/sidebar/sidebar_control_view.cc
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ void SidebarControlView::OnThemeChanged() {

UpdateBackgroundAndBorder();
UpdateItemAddButtonState();
UpdateSettingsButtonState();
}

void SidebarControlView::UpdateBackgroundAndBorder() {
Expand Down Expand Up @@ -241,7 +242,7 @@ void SidebarControlView::UpdateSettingsButtonState() {
sidebar_settings_view_->SetImageModel(
views::Button::STATE_DISABLED,
ui::ImageModel::FromVectorIcon(kLeoSettingsIcon,
kColorSidebarAddButtonDisabled,
kColorToolbarButtonIconInactive,
SidebarButtonView::kDefaultIconSize));
}

Expand Down
15 changes: 8 additions & 7 deletions browser/ui/views/sidebar/sidebar_item_add_button.cc
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include "brave/browser/ui/views/sidebar/sidebar_add_item_bubble_delegate_view.h"
#include "brave/components/vector_icons/vector_icons.h"
#include "brave/grit/brave_theme_resources.h"
#include "chrome/browser/ui/color/chrome_color_id.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/metadata/metadata_impl_macros.h"
#include "ui/base/resource/resource_bundle.h"
Expand Down Expand Up @@ -65,16 +66,16 @@ bool SidebarItemAddButton::IsBubbleVisible() const {
}

void SidebarItemAddButton::UpdateButtonImages() {
SetImageModel(STATE_NORMAL, ui::ImageModel::FromVectorIcon(
kLeoPlusAddIcon, kColorSidebarButtonBase,
kDefaultIconSize));
SetImageModel(STATE_NORMAL,
ui::ImageModel::FromVectorIcon(
kLeoPlusAddIcon, kColorSidebarButtonBase, kDefaultIconSize));
SetImageModel(STATE_PRESSED, ui::ImageModel::FromVectorIcon(
kLeoPlusAddIcon, kColorSidebarButtonPressed,
kDefaultIconSize));
SetImageModel(
STATE_DISABLED,
ui::ImageModel::FromVectorIcon(
kLeoPlusAddIcon, kColorSidebarAddButtonDisabled, kDefaultIconSize));
SetImageModel(STATE_DISABLED,
ui::ImageModel::FromVectorIcon(
kLeoPlusAddIcon, kColorToolbarButtonIconInactive,
kDefaultIconSize));
}

BEGIN_METADATA(SidebarItemAddButton)
Expand Down
1 change: 1 addition & 0 deletions browser/ui/views/sidebar/sidebar_item_add_button.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

#include <string>

#include "base/callback_list.h"
#include "base/memory/raw_ptr.h"
#include "base/scoped_observation.h"
#include "brave/browser/ui/views/sidebar/sidebar_button_view.h"
Expand Down
28 changes: 18 additions & 10 deletions browser/ui/views/sidebar/sidebar_items_contents_view.cc
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#include "brave/browser/profiles/profile_util.h"
#include "brave/browser/ui/brave_browser.h"
#include "brave/browser/ui/color/brave_color_id.h"
#include "brave/browser/ui/color/color_palette.h"
#include "brave/browser/ui/sidebar/sidebar_controller.h"
#include "brave/browser/ui/sidebar/sidebar_model.h"
#include "brave/browser/ui/sidebar/sidebar_service_factory.h"
Expand All @@ -39,6 +40,7 @@
#include "brave/grit/brave_generated_resources.h"
#include "chrome/app/vector_icons/vector_icons.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/color/chrome_color_id.h"
#include "chrome/browser/ui/browser_window/public/browser_window_features.h"
#include "chrome/browser/ui/browser_window/public/browser_window_interface_iterator.h"
#include "chrome/browser/ui/views/event_utils.h"
Expand Down Expand Up @@ -403,11 +405,15 @@ void SidebarItemsContentsView::SetImageForItem(const sidebar::SidebarItem& item,
CHECK_LT(*index, children().size());

SidebarItemView* item_view = GetItemViewAt(*index);
const auto resized = gfx::ImageSkiaOperations::CreateResizedImage(
image, skia::ImageOperations::RESIZE_BEST, kIconSize);
item_view->SetImageModel(views::Button::STATE_NORMAL,
ui::ImageModel::FromImageSkia(resized));
item_view->SetImageModel(
views::Button::STATE_NORMAL,
views::Button::STATE_DISABLED,
ui::ImageModel::FromImageSkia(
gfx::ImageSkiaOperations::CreateResizedImage(
image, skia::ImageOperations::RESIZE_BEST, kIconSize)));
gfx::ImageSkiaOperations::CreateTransparentImage(
resized, kBraveDisabledControlAlpha / 255.0)));
}

void SidebarItemsContentsView::ClearDragIndicator() {
Expand Down Expand Up @@ -566,14 +572,16 @@ ui::ImageModel SidebarItemsContentsView::GetImageForBuiltInItems(
views::Button::ButtonState state) const {
const auto get_image_model = [](const gfx::VectorIcon& icon,
views::Button::ButtonState state) {
ui::ColorId color_id;
if (state == views::Button::STATE_DISABLED) {
color_id = kColorToolbarButtonIconInactive;
} else if (state == views::Button::STATE_PRESSED) {
color_id = kColorSidebarButtonPressed;
} else {
color_id = kColorSidebarButtonBase;
}
return ui::ImageModel::FromVectorIcon(
icon,
state == views::Button::STATE_DISABLED
? kColorSidebarArrowDisabled
: (state == views::Button::STATE_PRESSED
? kColorSidebarButtonPressed
: kColorSidebarButtonBase),
SidebarButtonView::kDefaultIconSize);
icon, color_id, SidebarButtonView::kDefaultIconSize);
};

switch (type) {
Expand Down
10 changes: 6 additions & 4 deletions browser/ui/views/toolbar/bookmark_button.cc
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,15 @@ void BraveBookmarkButton::SetToggled(bool on) {
}

void BraveBookmarkButton::UpdateImageAndText() {
const ui::ColorProvider* color_provider = GetColorProvider();
SkColor icon_color = color_provider->GetColor(kColorToolbarButtonIcon);
const gfx::VectorIcon& icon = active_ ? omnibox::kStarActiveChromeRefreshIcon
: omnibox::kStarChromeRefreshIcon;
SetImageModel(views::Button::STATE_NORMAL,
ui::ImageModel::FromVectorIcon(icon, kColorToolbarButtonIcon,
GetIconSize()));
SetImageModel(
views::Button::STATE_NORMAL,
ui::ImageModel::FromVectorIcon(icon, icon_color, GetIconSize()));
views::Button::STATE_DISABLED,
ui::ImageModel::FromVectorIcon(icon, kColorToolbarButtonIconInactive,
GetIconSize()));

int tooltip_id = active_ ? IDS_TOOLTIP_STARRED : IDS_TOOLTIP_STAR;
SetTooltipText(l10n_util::GetStringUTF16(tooltip_id));
Expand Down
11 changes: 9 additions & 2 deletions browser/ui/views/toolbar/brave_vpn_button.cc
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#include "brave/browser/brave_vpn/brave_vpn_service_factory.h"
#include "brave/browser/ui/brave_icon_with_badge_image_source.h"
#include "brave/browser/ui/color/brave_color_id.h"
#include "brave/browser/ui/color/color_palette.h"
#include "brave/components/brave_vpn/browser/brave_vpn_service.h"
#include "brave/components/vector_icons/vector_icons.h"
#include "brave/grit/brave_generated_resources.h"
Expand All @@ -32,6 +33,7 @@
#include "ui/gfx/color_utils.h"
#include "ui/gfx/geometry/rect_f.h"
#include "ui/gfx/geometry/rrect_f.h"
#include "ui/gfx/image/image_skia_operations.h"
#include "ui/gfx/paint_vector_icon.h"
#include "ui/gfx/skia_util.h"
#include "ui/menus/simple_menu_model.h"
Expand Down Expand Up @@ -267,9 +269,14 @@ void BraveVPNButton::UpdateColorsAndInsets() {
}
image_source->SetIcon(gfx::Image(gfx::CreateVectorIcon(
kLeoProductVpnIcon, GetIconSize(), GetIconColor())));
gfx::ImageSkia vpn_image(std::move(image_source), kImageSizeWithBadge);

SetImageModel(views::Button::STATE_NORMAL,
ui::ImageModel::FromImageSkia(gfx::ImageSkia(
std::move(image_source), kImageSizeWithBadge)));
ui::ImageModel::FromImageSkia(vpn_image));
SetImageModel(views::Button::STATE_DISABLED,
ui::ImageModel::FromImageSkia(
gfx::ImageSkiaOperations::CreateTransparentImage(
vpn_image, kBraveDisabledControlAlpha / 255.0)));
}

SkColor BraveVPNButton::GetIconColor() {
Expand Down
Loading
Loading