blob: 9ce572f4339538dbe7d0f01abfd11ff0e0042b70 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// 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/frame/desktop_linux_browser_frame_view_layout.h"
#include "chrome/browser/ui/views/nav_button_provider.h"
DesktopLinuxBrowserFrameViewLayout::DesktopLinuxBrowserFrameViewLayout(
views::NavButtonProvider* nav_button_provider)
: nav_button_provider_(nav_button_provider) {}
int DesktopLinuxBrowserFrameViewLayout::CaptionButtonY(
chrome::FrameButtonDisplayType button_id,
bool restored) const {
gfx::Insets insets = nav_button_provider_->GetNavButtonMargin(button_id);
return insets.top() + TitlebarTopThickness();
}
int DesktopLinuxBrowserFrameViewLayout::TopAreaPadding() const {
return nav_button_provider_->GetTopAreaSpacing().left() +
TitlebarTopThickness();
}
int DesktopLinuxBrowserFrameViewLayout::GetWindowCaptionSpacing(
views::FrameButton button_id,
bool leading_spacing,
bool is_leading_button) const {
gfx::Insets insets =
nav_button_provider_->GetNavButtonMargin(GetButtonDisplayType(button_id));
if (!leading_spacing)
return insets.right();
int spacing = insets.left();
if (!is_leading_button)
spacing += nav_button_provider_->GetInterNavButtonSpacing();
return spacing;
}
void DesktopLinuxBrowserFrameViewLayout::LayoutNewStyleAvatar(
views::View* host) {
if (!new_avatar_button_)
return;
gfx::Size button_size;
gfx::Insets button_spacing;
nav_button_provider_->CalculateCaptionButtonLayout(
new_avatar_button_->GetPreferredSize(),
delegate_->GetTopAreaHeight() - TitlebarTopThickness(), &button_size,
&button_spacing);
int extra_offset = has_trailing_buttons()
? nav_button_provider_->GetInterNavButtonSpacing()
: 0;
int total_width = button_size.width() + button_spacing.right() + extra_offset;
int button_x = host->width() - trailing_button_start_ - total_width;
int button_y = button_spacing.top() + TitlebarTopThickness();
minimum_size_for_buttons_ += total_width;
trailing_button_start_ += total_width;
new_avatar_button_->SetBounds(button_x, button_y, button_size.width(),
button_size.height());
}
bool DesktopLinuxBrowserFrameViewLayout::ShouldDrawImageMirrored(
views::ImageButton* button,
ButtonAlignment alignment) const {
return false;
}
int DesktopLinuxBrowserFrameViewLayout::TitlebarTopThickness() const {
return OpaqueBrowserFrameViewLayout::TitlebarTopThickness(
!delegate_->IsMaximized());
}