Commit e7b0bdc3 authored by Dana Fried's avatar Dana Fried Committed by Commit Bot

Fix PWA zoom bubble anchoring on Linux

This is a small workaround. Root cause is crbug.com/1132767, which is
not as easily solved.

Bug: 1129763
Change-Id: Ifa7daa12a0d36c99b4eacdc35c9dd2bb70b4e1c5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2434891
Commit-Queue: Dana Fried <dfried@chromium.org>
Reviewed-by: default avatarCaroline Rising <corising@chromium.org>
Cr-Commit-Position: refs/heads/master@{#811339}
parent 3dd3d3f5
...@@ -52,6 +52,7 @@ class TestLayoutDelegate : public OpaqueBrowserFrameViewLayoutDelegate { ...@@ -52,6 +52,7 @@ class TestLayoutDelegate : public OpaqueBrowserFrameViewLayoutDelegate {
bool IsRegularOrGuestSession() const override { return true; } bool IsRegularOrGuestSession() const override { return true; }
bool IsMaximized() const override { return false; } bool IsMaximized() const override { return false; }
bool IsMinimized() const override { return false; } bool IsMinimized() const override { return false; }
bool IsFullscreen() const override { return false; }
bool IsTabStripVisible() const override { return true; } bool IsTabStripVisible() const override { return true; }
int GetTabStripHeight() const override { int GetTabStripHeight() const override {
return GetLayoutConstant(TAB_HEIGHT); return GetLayoutConstant(TAB_HEIGHT);
......
...@@ -433,6 +433,10 @@ bool OpaqueBrowserFrameView::IsMinimized() const { ...@@ -433,6 +433,10 @@ bool OpaqueBrowserFrameView::IsMinimized() const {
return frame()->IsMinimized(); return frame()->IsMinimized();
} }
bool OpaqueBrowserFrameView::IsFullscreen() const {
return frame()->IsFullscreen();
}
bool OpaqueBrowserFrameView::IsTabStripVisible() const { bool OpaqueBrowserFrameView::IsTabStripVisible() const {
return browser_view()->IsTabStripVisible(); return browser_view()->IsTabStripVisible();
} }
......
...@@ -95,6 +95,7 @@ class OpaqueBrowserFrameView : public BrowserNonClientFrameView, ...@@ -95,6 +95,7 @@ class OpaqueBrowserFrameView : public BrowserNonClientFrameView,
bool IsRegularOrGuestSession() const override; bool IsRegularOrGuestSession() const override;
bool IsMaximized() const override; bool IsMaximized() const override;
bool IsMinimized() const override; bool IsMinimized() const override;
bool IsFullscreen() const override;
bool IsTabStripVisible() const override; bool IsTabStripVisible() const override;
int GetTabStripHeight() const override; int GetTabStripHeight() const override;
bool IsToolbarVisible() const override; bool IsToolbarVisible() const override;
......
...@@ -278,9 +278,17 @@ void OpaqueBrowserFrameViewLayout::LayoutTitleBar() { ...@@ -278,9 +278,17 @@ void OpaqueBrowserFrameViewLayout::LayoutTitleBar() {
int size = delegate_->GetIconSize(); int size = delegate_->GetIconSize();
bool should_show_icon = delegate_->ShouldShowWindowIcon() && window_icon_; bool should_show_icon = delegate_->ShouldShowWindowIcon() && window_icon_;
bool should_show_title = delegate_->ShouldShowWindowTitle() && window_title_; bool should_show_title = delegate_->ShouldShowWindowTitle() && window_title_;
// TODO(crbug.com/1132767): fullscreen check is required only because we
// cannot allow toolbar to lay out in fullscreen mode without breaking some
// bubble anchoring because of how e.g. the zoom bubble anchors. If this
// issue is resolved, all of the references to |should_show_toolbar| can
// potentially be replaced with checks that |web_app_frame_toolbar_| is
// non-null.
bool should_show_toolbar =
!delegate_->IsFullscreen() && web_app_frame_toolbar_;
base::Optional<int> icon_spacing; base::Optional<int> icon_spacing;
if (should_show_icon || should_show_title || web_app_frame_toolbar_) { if (should_show_icon || should_show_title || should_show_toolbar) {
use_hidden_icon_location = false; use_hidden_icon_location = false;
// Our frame border has a different "3D look" than Windows'. Theirs has // Our frame border has a different "3D look" than Windows'. Theirs has
...@@ -305,7 +313,7 @@ void OpaqueBrowserFrameViewLayout::LayoutTitleBar() { ...@@ -305,7 +313,7 @@ void OpaqueBrowserFrameViewLayout::LayoutTitleBar() {
// first element in the frame. We'll use this spacing again to ensure // first element in the frame. We'll use this spacing again to ensure
// appropriate spacing between icon and title. // appropriate spacing between icon and title.
icon_spacing = y; icon_spacing = y;
if (web_app_frame_toolbar_ && leading_buttons_.empty()) if (should_show_toolbar && leading_buttons_.empty())
available_space_leading_x_ = FrameSideThickness(false) + *icon_spacing; available_space_leading_x_ = FrameSideThickness(false) + *icon_spacing;
else else
available_space_leading_x_ += kIconLeftSpacing; available_space_leading_x_ += kIconLeftSpacing;
...@@ -314,7 +322,7 @@ void OpaqueBrowserFrameViewLayout::LayoutTitleBar() { ...@@ -314,7 +322,7 @@ void OpaqueBrowserFrameViewLayout::LayoutTitleBar() {
available_space_leading_x_ += size; available_space_leading_x_ += size;
minimum_size_for_buttons_ += size; minimum_size_for_buttons_ += size;
if (web_app_frame_toolbar_) { if (should_show_toolbar) {
std::pair<int, int> remaining_bounds = std::pair<int, int> remaining_bounds =
web_app_frame_toolbar_->LayoutInContainer(available_space_leading_x_, web_app_frame_toolbar_->LayoutInContainer(available_space_leading_x_,
available_space_trailing_x_, available_space_trailing_x_,
......
...@@ -47,6 +47,7 @@ class OpaqueBrowserFrameViewLayoutDelegate { ...@@ -47,6 +47,7 @@ class OpaqueBrowserFrameViewLayoutDelegate {
// Controls window state. // Controls window state.
virtual bool IsMaximized() const = 0; virtual bool IsMaximized() const = 0;
virtual bool IsMinimized() const = 0; virtual bool IsMinimized() const = 0;
virtual bool IsFullscreen() const = 0;
virtual bool IsTabStripVisible() const = 0; virtual bool IsTabStripVisible() const = 0;
virtual int GetTabStripHeight() const = 0; virtual int GetTabStripHeight() const = 0;
......
...@@ -62,6 +62,7 @@ class TestLayoutDelegate : public OpaqueBrowserFrameViewLayoutDelegate { ...@@ -62,6 +62,7 @@ class TestLayoutDelegate : public OpaqueBrowserFrameViewLayoutDelegate {
bool IsRegularOrGuestSession() const override { return true; } bool IsRegularOrGuestSession() const override { return true; }
bool IsMaximized() const override { return maximized_; } bool IsMaximized() const override { return maximized_; }
bool IsMinimized() const override { return false; } bool IsMinimized() const override { return false; }
bool IsFullscreen() const override { return false; }
bool IsTabStripVisible() const override { return window_title_.empty(); } bool IsTabStripVisible() const override { return window_title_.empty(); }
int GetTabStripHeight() const override { int GetTabStripHeight() const override {
return IsTabStripVisible() ? GetLayoutConstant(TAB_HEIGHT) : 0; return IsTabStripVisible() ? GetLayoutConstant(TAB_HEIGHT) : 0;
......
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