New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 13 users

Issue metadata

Status: Fixed
Owner:
Closed: Nov 2017
Cc:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 3
Type: Feature

Blocked on:
issue 21438



Sign in to add a comment

Draw native GTK window navigation buttons on Linux

Project Member Reported by thomasanderson@chromium.org, Aug 7 2017

Issue description

Now that we've switched to the GTK3 theme, we can utilize foreign drawing to paint the minimize, maximize/restore, and close buttons.
 
Cc: brajkumar@chromium.org
 Issue 732050  has been merged into this issue.
Cc: -brajkumar@chromium.org
Status: Started (was: Assigned)
X-reffing video for CL:
https://chromium-review.googlesource.com/c/604288
native_nav_demo.mp4
1.8 MB View Download
Project Member

Comment 4 by bugdroid1@chromium.org, Aug 21 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5c3130adf12999016a56c4f1ee3973386b1f9ed3

commit 5c3130adf12999016a56c4f1ee3973386b1f9ed3
Author: Tom Anderson <thomasanderson@chromium.org>
Date: Mon Aug 21 19:49:17 2017

Draw native GTK window nativation buttons on Linux

This CL is the initial implementation of GTK-rendered close, minimize,
and maximize buttons.  A demo can be seen at [1].  The implementation
is not ready to be released yet (still need to handle different scale
factors and button drawing for "backdrop" windows), so the feature is
guarded by a flag for now.

[1] https://bugs.chromium.org/p/chromium/issues/detail?id=753067#c3

BUG= 753067 
R=sky@chromium.org,pkasting@chromium.org

Change-Id: Iadb5c96052f100097a10a5161aa3d9d44d89c901
Reviewed-on: https://chromium-review.googlesource.com/604288
Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Reviewed-by: Elliot Glaysher <erg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#496031}
[modify] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/chrome/browser/about_flags.cc
[modify] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/chrome/browser/flag_descriptions.cc
[modify] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/chrome/browser/flag_descriptions.h
[add] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/chrome/browser/ui/frame_button_display_types.h
[modify] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/chrome/browser/ui/libgtkui/BUILD.gn
[modify] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/chrome/browser/ui/libgtkui/gtk_ui.cc
[modify] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/chrome/browser/ui/libgtkui/gtk_ui.h
[add] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/chrome/browser/ui/libgtkui/nav_button_provider_gtk3.cc
[add] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/chrome/browser/ui/libgtkui/nav_button_provider_gtk3.h
[modify] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/chrome/browser/ui/views/frame/browser_desktop_window_tree_host_x11.cc
[modify] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/chrome/browser/ui/views/frame/browser_desktop_window_tree_host_x11.h
[modify] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/chrome/browser/ui/views/frame/browser_non_client_frame_view.cc
[modify] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/chrome/browser/ui/views/frame/browser_non_client_frame_view.h
[modify] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc
[modify] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/chrome/browser/ui/views/frame/opaque_browser_frame_view.h
[modify] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.cc
[modify] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.h
[modify] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout_delegate.h
[modify] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout_unittest.cc
[modify] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/chrome/common/BUILD.gn
[modify] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/chrome/common/chrome_features.cc
[modify] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/chrome/common/chrome_features.h
[modify] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/chrome/common/features.gni
[modify] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/tools/metrics/histograms/enums.xml
[modify] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/ui/views/BUILD.gn
[modify] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/ui/views/linux_ui/linux_ui.h
[modify] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc
[modify] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.h
[add] https://crrev.com/5c3130adf12999016a56c4f1ee3973386b1f9ed3/ui/views/window/nav_button_provider.h

Comment 5 by corss...@gmail.com, Aug 21 2017

You should respect the side of a window where buttons are displayed as
well.
Blockedon: 21438
Working on it in  bug 21438 .  We're not going to enable the feature from c#4 until that bug is fixed.
X-reffing video for CL https://chromium-review.googlesource.com/625240
native_nav_scale_factors.mp4
3.6 MB View Download
Project Member

Comment 8 by bugdroid1@chromium.org, Aug 22 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/19eeb40db05f8d69285a05482fea11e04ab3c190

commit 19eeb40db05f8d69285a05482fea11e04ab3c190
Author: Tom Anderson <thomasanderson@chromium.org>
Date: Tue Aug 22 17:33:38 2017

Support arbitrary scale factors on GTK-rendered frame buttons

Please see the demo:
https://bugs.chromium.org/p/chromium/issues/detail?id=753067#c7

Note that the Chrome scale behavior differs slightly from the GTK
behavior: GTK does not support fractional scale factors, but Chrome
does.  As such, GTK never renders a frame button with eg. 1.5x scale.
However, since all parts of the Chrome UI (including the tabstrip
background) scale this way, we render the frame buttons at 1.5x scale
anyway.

BUG= 753067 
R=erg@chromium.org

Change-Id: Ief59d3626878d7a7da6f01b7aac2ca8dac802ab2
Reviewed-on: https://chromium-review.googlesource.com/625240
Reviewed-by: Elliot Glaysher <erg@chromium.org>
Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
Cr-Commit-Position: refs/heads/master@{#496350}
[modify] https://crrev.com/19eeb40db05f8d69285a05482fea11e04ab3c190/chrome/browser/ui/libgtkui/nav_button_provider_gtk3.cc

X-reffing video for CL:
https://chromium-review.googlesource.com/c/chromium/src/+/626856
native_nav_activation.mp4
244 KB View Download

Comment 10 Deleted

Project Member

Comment 11 by bugdroid1@chromium.org, Aug 22 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/27713d2c21f3edf4a51c815735c1dd5f6f516a25

commit 27713d2c21f3edf4a51c815735c1dd5f6f516a25
Author: Tom Anderson <thomasanderson@chromium.org>
Date: Tue Aug 22 23:10:06 2017

Support inactive-styled GTK frame buttons

Please see the demo:
https://bugs.chromium.org/p/chromium/issues/detail?id=753067#c9

BUG= 753067 
R=erg@chromium.org,sky@chromium.org

Change-Id: Idfc5d9a37f73b22c35339140ad858f4615849556
Reviewed-on: https://chromium-review.googlesource.com/626856
Reviewed-by: Scott Violet <sky@chromium.org>
Reviewed-by: Elliot Glaysher <erg@chromium.org>
Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
Cr-Commit-Position: refs/heads/master@{#496492}
[modify] https://crrev.com/27713d2c21f3edf4a51c815735c1dd5f6f516a25/chrome/browser/ui/libgtkui/nav_button_provider_gtk3.cc
[modify] https://crrev.com/27713d2c21f3edf4a51c815735c1dd5f6f516a25/chrome/browser/ui/libgtkui/nav_button_provider_gtk3.h
[modify] https://crrev.com/27713d2c21f3edf4a51c815735c1dd5f6f516a25/chrome/browser/ui/views/frame/browser_non_client_frame_view.h
[modify] https://crrev.com/27713d2c21f3edf4a51c815735c1dd5f6f516a25/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc
[modify] https://crrev.com/27713d2c21f3edf4a51c815735c1dd5f6f516a25/chrome/browser/ui/views/frame/opaque_browser_frame_view.h
[modify] https://crrev.com/27713d2c21f3edf4a51c815735c1dd5f6f516a25/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout_unittest.cc
[modify] https://crrev.com/27713d2c21f3edf4a51c815735c1dd5f6f516a25/ui/views/window/nav_button_provider.h

Project Member

Comment 12 by bugdroid1@chromium.org, Aug 25 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/845a562adecfbcf06ee7ac2686ec84830815d377

commit 845a562adecfbcf06ee7ac2686ec84830815d377
Author: Tom Anderson <thomasanderson@chromium.org>
Date: Fri Aug 25 00:45:32 2017

Gtk: Consider image sizing in frame button size calculation

This CL completes a TODO in nav_button_provider_gtk3.cc and in the
process fixes button sizing on some themes.

BUG= 753067 
R=erg@chromium.org

Change-Id: I52c3b51e02dbdcdb11695d3d9c96c493f06fd8d1
Reviewed-on: https://chromium-review.googlesource.com/634191
Reviewed-by: Elliot Glaysher <erg@chromium.org>
Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
Cr-Commit-Position: refs/heads/master@{#497270}
[modify] https://crrev.com/845a562adecfbcf06ee7ac2686ec84830815d377/chrome/browser/ui/libgtkui/native_theme_gtk3.cc
[modify] https://crrev.com/845a562adecfbcf06ee7ac2686ec84830815d377/chrome/browser/ui/libgtkui/nav_button_provider_gtk3.cc

Project Member

Comment 13 by bugdroid1@chromium.org, Aug 29 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/9fff344076c8ae00884c22ac8e5093c47d3b9fba

commit 9fff344076c8ae00884c22ac8e5093c47d3b9fba
Author: Tom Anderson <thomasanderson@chromium.org>
Date: Tue Aug 29 01:48:47 2017

Enable GTK native nav button drawing and layout on GTK3.14+

BUG= 753067 , 21438 
R=erg@chromium.org

Change-Id: I383b1e623b067033a0376d86cd7a758aba23d25b
Reviewed-on: https://chromium-review.googlesource.com/636039
Reviewed-by: Elliot Glaysher <erg@chromium.org>
Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
Cr-Commit-Position: refs/heads/master@{#497981}
[modify] https://crrev.com/9fff344076c8ae00884c22ac8e5093c47d3b9fba/chrome/browser/ui/libgtkui/gtk_ui.cc
[modify] https://crrev.com/9fff344076c8ae00884c22ac8e5093c47d3b9fba/chrome/common/chrome_features.cc

Which version of Chromium will have this feature enabled by default? How can I enable this for now?
BTW consider add a margin-top/padding-top to the titlebar/tabs-bar(?) as you did it for macOS version.
c#14: Version 62 or later.  You can try it now with the google-chrome-unstable package
c#15: You mean change chrome in maximized mode to have spacing above the tabs?  That is unlikely to happen anytime soon
#C15 Ok, I understand. Thank you for response.
There is a bug in implementation. I have installed google-chrome-unstable and if window is maximized the buttons don't display. I have set the buttons on the left side of the window.




Screenshot from 2017-09-09 20-05-58.png
71.7 KB View Download
c#18 Does that happen in the stable channel as well?  If so, that's  bug 594490 
c#19 No. This is happen only in unstable channel.
Which theme and Gtk version are you using?
I am on Elementary OS Loki. Theme is Elementary I guess and gtk version is
3.18.9

Comment 23 Deleted

Does this issue only happen intermittently?  I was only able to get it to reproduce once, and I found that these steps consistently do it for me:
1. Have 2 monitors and 2 windows open, with a maximized chrome window on the left and an unmaximized one on the right
2. Fullscreen a video from the left window
3. Maximize the right window
4. Unfullscreen the video

Comment 25 by corss...@gmail.com, Sep 18 2017

Nope, it happens constantly to me. Every time I maximized the window
buttons are disappeared.

Comment 26 by corss...@gmail.com, Sep 18 2017

Did you try use other than ambiance gtk3 theme and then maximize the window?
c#26 I tested with Ambiance, Adwaita, and a handful of other themes.  I'm trying out Elementary OS now
Just tested and the issue is the same as  bug 594490 

Comment 29 by corss...@gmail.com, Sep 19 2017

But elementary doesn't use libunity.

Comment 30 by corss...@gmail.com, Sep 19 2017

Besides the issue occurs only in unstable channel of chrome. With stable
version 61 everything is ok.
c#29 Yes it does.  I tested manually removing libunity9 and it fixed the buttons in maximized mode.

Buttons in stable were fine, however.  Not sure why it became broken, but I tested disabling native title buttons and I still experienced the issue.  It's probably just a coincidence that it broke further at the same time as the switch to native title buttons.

Comment 32 Deleted

Comment 33 Deleted

It does work on Elementary, You need to enable "system-titlebar-and-borders".

Comment 36 Deleted

c#35
Take a look at the essence of this problem, please.


I have noticed one more issue. In maximized mode, Chromium does not care about buttons height and width that are defined by the gtk theme. Test please your solution with default GNOME gtk theme - Adwaita. Hover effect shows that buttons are much smaller than in other apps.
Do you mean like the video in c#3?  It scales down the buttons because there's not enough room for them to fit on the reduced tabstrip.

If you mean that the buttons should make the tabstrip larger, I don't think we'll do that.  I'd prefer to downsize the buttons than upsize the tabstrip.
It would be nice to have a little padding/margin before buttons.
Screenshot from 2017-10-09 21-11-22.png
8.1 KB View Download
c#39.  Not sure how I'd get that to work on all themes.  See the video in c#9.  All we're doing is matching the theme, so that's how it's supposed to look.  If you want to override it, you can add a user theme override like this:

headerbar.titlebar {
    padding-left: 10px;
    padding-right: 10px;
}
(I guess you meant ".header-bar.titlebar")
Yeah, it helped.. but.. What about nautilus/font viewer/and every other app that uses headerbar?

Is it the only way to make buttons equally spaced between window border and the first tab?

Yeah it's .header-bar on <Gtk3.20 and plain header-bar on >Gtk3.20.

You can choose Chrome specifically by adding the ".chromium" style class, so that it's ".header-bar.titlebar.chromium"
It appears the window controls don't scale correctly on Wayland (at 200% scaling, they're completely unusable)

Using Ubuntu 17.10 on a late 2015 macbook pro (Screen res is 2880x1800)

Attached a screenshot of chrome with default screen settings for my setup (Stock install)

Screenshot from 2017-10-11 07-14-05.png
133 KB View Download

Comment 44 by for...@gmail.com, Oct 12 2017

Please do NOT remove native feature as i native buttons are much better for certain people.
c#43: Thanks, able to repro.  Hopefully we'll have a fix soon
X-reffing video for CL https://chromium-review.googlesource.com/c/chromium/src/+/703482
native_profile_chooser_demo.mp4
1.1 MB View Download
Project Member

Comment 47 by bugdroid1@chromium.org, Oct 20 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d69c71cf006a5baffc13c2da27b6a8fdc506ed47

commit d69c71cf006a5baffc13c2da27b6a8fdc506ed47
Author: Tom Anderson <thomasanderson@chromium.org>
Date: Fri Oct 20 18:21:54 2017

Gtk3: Fix frame button scaling on HIDPI

This CL fixes frame buttons being too small when GDK_SCALE=2, as seen
in [1].

[1] https://bugs.chromium.org/p/chromium/issues/detail?id=753067#c43

BUG= 753067 
R=erg@chromium.org

Change-Id: I835668b779ab10ab3da971960794093f37813141
Reviewed-on: https://chromium-review.googlesource.com/729568
Reviewed-by: Elliot Glaysher <erg@chromium.org>
Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
Cr-Commit-Position: refs/heads/master@{#510498}
[modify] https://crrev.com/d69c71cf006a5baffc13c2da27b6a8fdc506ed47/chrome/browser/ui/libgtkui/nav_button_provider_gtk3.cc

Will it be possible to remove that "border" around the chromium window with CSD activated?


Bildschirmfoto von »2017-10-21 20-25-35«.png
1.2 MB View Download
c#48 Yes it's possible.  It might take us a while to get to it, though
Labels: Merge-Request-63 Merge-Request-62
Requesting merge to stable and beta for the cl from c#47.  This is to fix the bug from c#43.  The CL is small and should be relatively safe.
Project Member

Comment 51 by sheriffbot@chromium.org, Oct 23 2017

Labels: -Merge-Request-62 Merge-Review-62 Hotlist-Merge-Review
This bug requires manual review: Request affecting a post-stable build
Please contact the milestone owner if you have questions.
Owners: amineer@(Android), cmasso@(iOS), bhthompson@(ChromeOS), abdulsyed@(Desktop)

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Labels: -Merge-Review-62 Merge-Rejected-62
My recommendation is to wait until M63. This looks like a new feature that we should go through full Dev/Beta testing. Rejecting for M62 merge.
Project Member

Comment 53 by sheriffbot@chromium.org, Oct 24 2017

Labels: -Merge-Request-63 Hotlist-Merge-Approved Merge-Approved-63
Your change meets the bar and is auto-approved for M63. Please go ahead and merge the CL to branch 3239 manually. Please contact milestone owner if you have questions.
Owners: cmasso@(Android), cmasso@(iOS), gkihumba@(ChromeOS), govind@(Desktop)

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Please merge you change to M63 branch 3239 by 4:00 PM PT, tomorrow (Wednesday). Thank you.
Project Member

Comment 55 by bugdroid1@chromium.org, Oct 24 2017

Labels: -merge-approved-63 merge-merged-3239
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2f7b4698eb1b8e09365bae8e6bfc9ea039853e20

commit 2f7b4698eb1b8e09365bae8e6bfc9ea039853e20
Author: Tom Anderson <thomasanderson@chromium.org>
Date: Tue Oct 24 23:23:40 2017

[Merge to M63] Gtk3: Fix frame button scaling on HIDPI

> This CL fixes frame buttons being too small when GDK_SCALE=2, as seen
> in [1].
>
> [1] https://bugs.chromium.org/p/chromium/issues/detail?id=753067#c43
>
> BUG= 753067 
> R=erg@chromium.org
>
> Change-Id: I835668b779ab10ab3da971960794093f37813141
> Reviewed-on: https://chromium-review.googlesource.com/729568
> Reviewed-by: Elliot Glaysher <erg@chromium.org>
> Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#510498}

BUG= 753067 
TBR=erg@chromium.org
NOTRY=true
NOPRESUBMIT=true
NOTREECHECKS=true

Change-Id: Ia68e0ebbb9f4456852098a42f7fd007d6ac96296
Reviewed-on: https://chromium-review.googlesource.com/736810
Reviewed-by: Thomas Anderson <thomasanderson@chromium.org>
Cr-Commit-Position: refs/branch-heads/3239@{#199}
Cr-Branched-From: adb61db19020ed8ecee5e91b1a0ea4c924ae2988-refs/heads/master@{#508578}
[modify] https://crrev.com/2f7b4698eb1b8e09365bae8e6bfc9ea039853e20/chrome/browser/ui/libgtkui/nav_button_provider_gtk3.cc

I have this problem as well on ArchLinux, kernel version 4.13.8-1-ARCH, and Chromium 62.0.3202.62

Schermata del 2017-10-25 20-17-33.png
54.8 KB View Download
Schermata del 2017-10-25 20-17-38.png
49.3 KB View Download
c#56: Which gtk theme are you using?
The GTK theme I'm using is OSX-Arc-Shadow:
https://github.com/LinxGem33/OSX-Arc-Shadow
I have the same issue as c#56. When the window is maximized, 1 of the 3 buttons doesn't look the way it should. Not all GTK themes are affected (works well with Ambiance), but I can reproduce the issue with multiple themes that aren't (to my knowledge) forks of one another.
#c58 If it can be of any use, in c#56 the GUI you can see in the pictures it's Cinnamon.
Project Member

Comment 61 by bugdroid1@chromium.org, Nov 2 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5a331d04305b0f804b1f9b356d935a73c5e905aa

commit 5a331d04305b0f804b1f9b356d935a73c5e905aa
Author: Tom Anderson <thomasanderson@chromium.org>
Date: Thu Nov 02 00:28:54 2017

Draw profile chooser button with GTK when possible

This is the initial implementation of drawing a native GTK button as
the profile chooser button on Linux.  There are still some tasks left
(like fixing HIDPI rendering), so the feature is guarded behind an
--enable-native-avatar-button flag.

Demo:
https://bugs.chromium.org/p/chromium/issues/detail?id=753067#c46

BUG= 753067 

Change-Id: Iff57d293a04bf2259aa0bb77161b51fec6370289
Reviewed-on: https://chromium-review.googlesource.com/703482
Reviewed-by: Scott Violet <sky@chromium.org>
Reviewed-by: Elliot Glaysher <erg@chromium.org>
Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
Cr-Commit-Position: refs/heads/master@{#513338}
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/BUILD.gn
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/libgtkui/BUILD.gn
[add] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/libgtkui/DEPS
[add] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/libgtkui/gtk3_background_painter.cc
[add] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/libgtkui/gtk3_background_painter.h
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/libgtkui/gtk_ui.cc
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/libgtkui/gtk_ui.h
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/libgtkui/native_theme_gtk3.cc
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/libgtkui/nav_button_provider_gtk3.cc
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/libgtkui/nav_button_provider_gtk3.h
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/views/BUILD.gn
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/views/frame/avatar_button_manager.cc
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/views/frame/avatar_button_manager.h
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/views/frame/browser_non_client_frame_view_factory_views.cc
[add] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/views/frame/desktop_linux_browser_frame_view.cc
[add] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/views/frame/desktop_linux_browser_frame_view.h
[add] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/views/frame/desktop_linux_browser_frame_view_layout.cc
[add] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/views/frame/desktop_linux_browser_frame_view_layout.h
[add] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/views/frame/desktop_linux_browser_frame_view_layout_unittest.cc
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/views/frame/opaque_browser_frame_view.cc
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/views/frame/opaque_browser_frame_view.h
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.cc
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout.h
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout_delegate.h
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/views/frame/opaque_browser_frame_view_layout_unittest.cc
[rename] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/views/nav_button_provider.h
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/views/profiles/avatar_button.cc
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/browser/ui/views/profiles/avatar_button.h
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/common/BUILD.gn
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/common/chrome_switches.cc
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/common/chrome_switches.h
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/common/features.gni
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/chrome/test/BUILD.gn
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/ui/gfx/geometry/insets_f.h
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/ui/views/BUILD.gn
[add] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/ui/views/features.gni
[modify] https://crrev.com/5a331d04305b0f804b1f9b356d935a73c5e905aa/ui/views/linux_ui/linux_ui.h

re: c#48 and c#49... should the clunky 90's style window border be the subject of its own bug report in the hope it doesn't get forgotten and eventually gets gotten around to? :-)

I'm otherwise liking the GTK+ (non-system-titlebar) theme support and for me the only other issue is the fuzzy scaled-up icons in HiDPI modes, which is already being dealt with. But I for one find the chunky old-fashioned border, which has nothing to do with the GTK+ theme in force (no other windows have it) to be far more distracting. It's not there when the window is maximised. Can it just not be there when it isn't too? :-)
Project Member

Comment 63 by bugdroid1@chromium.org, Nov 2 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/269e6117fb60f90ea9292f9c5bacea5e775e7f5e

commit 269e6117fb60f90ea9292f9c5bacea5e775e7f5e
Author: Tom Anderson <thomasanderson@chromium.org>
Date: Thu Nov 02 19:29:07 2017

Draw avatar button correctly in HiDpi case

BUG= 753067 
R=erg@chromium.org

Change-Id: I2442df80c37cfd96ac60e4bf17731b6d3a5c5b9d
Reviewed-on: https://chromium-review.googlesource.com/751770
Reviewed-by: Elliot Glaysher <erg@chromium.org>
Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
Cr-Commit-Position: refs/heads/master@{#513581}
[modify] https://crrev.com/269e6117fb60f90ea9292f9c5bacea5e775e7f5e/chrome/browser/ui/libgtkui/gtk3_background_painter.cc

Project Member

Comment 64 by bugdroid1@chromium.org, Nov 3 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/237be1e74cd01009d94c6fc445e6aae6030269a6

commit 237be1e74cd01009d94c6fc445e6aae6030269a6
Author: Tom Anderson <thomasanderson@chromium.org>
Date: Fri Nov 03 03:11:21 2017

Gtk: Ensure AvatarButton has pressed state when menu is showing

When using the GTK theme with --enable-native-avatar-button, it's
required that the avatar button have the pressed state when the
profile chooser menu is showing so that it looks pressed.  Previously,
the pressed state was handled by manually setting the ink drop
animation state.  Now, AvatarButton is made a sublcass of MenuButton
and reuses code from there to handle ink drop animation, and ensuring
the state becomes pressed.

Also, this incidentally fixes a bug where the ink drop would get stuck
when right clicking on the avatar button.

BUG= 753067 
R=msw@chromium.org
CC=sky@chromium.org

Change-Id: I6aafb5499e230859ea1ebe1c5ca6e2375ea63994
Reviewed-on: https://chromium-review.googlesource.com/744967
Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
Reviewed-by: Michael Wasserman <msw@chromium.org>
Cr-Commit-Position: refs/heads/master@{#513662}
[modify] https://crrev.com/237be1e74cd01009d94c6fc445e6aae6030269a6/chrome/browser/ui/views/frame/avatar_button_manager.cc
[modify] https://crrev.com/237be1e74cd01009d94c6fc445e6aae6030269a6/chrome/browser/ui/views/frame/avatar_button_manager.h
[modify] https://crrev.com/237be1e74cd01009d94c6fc445e6aae6030269a6/chrome/browser/ui/views/profiles/avatar_button.cc
[modify] https://crrev.com/237be1e74cd01009d94c6fc445e6aae6030269a6/chrome/browser/ui/views/profiles/avatar_button.h

c#56 and c#59: The issue is now being tracked on  bug 779848 .

c#62: Yes, please file a bug and assign it to me.  (If don't have permissions to assign it, please post the bug # here and I'll take it)
Project Member

Comment 67 by bugdroid1@chromium.org, Nov 6 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d702c6218a77f480d78bb0fbab5ad9de25599686

commit d702c6218a77f480d78bb0fbab5ad9de25599686
Author: Tom Anderson <thomasanderson@chromium.org>
Date: Mon Nov 06 23:37:40 2017

Gtk3: Fix restore button rendering improperly on some themes

Restore buttons are styled with the ".maxmize" style class, not
".restore".

BUG= 753067 , 779848 
R=erg@chromium.org

Change-Id: Ifcd9f034bddf92285a34be9f1f3d5ea197ee4532
Reviewed-on: https://chromium-review.googlesource.com/755475
Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
Reviewed-by: Elliot Glaysher <erg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#514293}
[modify] https://crrev.com/d702c6218a77f480d78bb0fbab5ad9de25599686/chrome/browser/ui/libgtkui/nav_button_provider_gtk3.cc

Labels: Merge-Request-63
Requesting merge to M63 for the bugfix in c#67.  It's only a 3 line diff and should be very safe.
Project Member

Comment 69 by bugdroid1@chromium.org, Nov 7 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/59d7b6cdbb06f93d45d4db9e0ecc2fd8fcdf8ee1

commit 59d7b6cdbb06f93d45d4db9e0ecc2fd8fcdf8ee1
Author: Tom Anderson <thomasanderson@chromium.org>
Date: Tue Nov 07 01:21:15 2017

Gtk3: Fix rounding of negative values when laying out frame buttons

GTK themes use negative values to do more special layout of frame
buttons.  Rounding was broken in this case because all values were
assumed to be positive, and rounding was done like (int)(x + 0.5f).
This CL changes these to std::round(x).

BUG= 753067 
R=erg@chromium.org

Change-Id: Ib07e03b6dc21d79afec59f08b997d7753fec0178
Reviewed-on: https://chromium-review.googlesource.com/755974
Reviewed-by: Elliot Glaysher <erg@chromium.org>
Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
Cr-Commit-Position: refs/heads/master@{#514330}
[modify] https://crrev.com/59d7b6cdbb06f93d45d4db9e0ecc2fd8fcdf8ee1/chrome/browser/ui/libgtkui/nav_button_provider_gtk3.cc

Labels: -Merge-Request-63 Merge-Approved-63
Approving merge for the bugfix in c#67 to M63 branch 3239 per comment #68. Please merge ASAP so we can take it in for this week beta release. Thank you.
Project Member

Comment 71 by bugdroid1@chromium.org, Nov 7 2017

Labels: -merge-approved-63
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f17ee5c3c4e5cd9a4e6f5f6b7d748780d3030d22

commit f17ee5c3c4e5cd9a4e6f5f6b7d748780d3030d22
Author: Tom Anderson <thomasanderson@chromium.org>
Date: Tue Nov 07 19:05:49 2017

[Merge to M63] Gtk3: Fix restore button rendering improperly on some themes

> Restore buttons are styled with the ".maxmize" style class, not
> ".restore".
>
> BUG= 753067 , 779848 
> R=erg@chromium.org
>
> Change-Id: Ifcd9f034bddf92285a34be9f1f3d5ea197ee4532
> Reviewed-on: https://chromium-review.googlesource.com/755475
> Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
> Reviewed-by: Elliot Glaysher <erg@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#514293}

BUG= 753067 , 779848 
TBR=erg@chromium.org
NOTRY=true
NOPRESUBMIT=true
NOTREECHECKS=true

Change-Id: I80d3e4bad4cb7b367eb4bbaab3219d8cee9cff5c
Reviewed-on: https://chromium-review.googlesource.com/757500
Reviewed-by: Thomas Anderson <thomasanderson@chromium.org>
Cr-Commit-Position: refs/branch-heads/3239@{#410}
Cr-Branched-From: adb61db19020ed8ecee5e91b1a0ea4c924ae2988-refs/heads/master@{#508578}
[modify] https://crrev.com/f17ee5c3c4e5cd9a4e6f5f6b7d748780d3030d22/chrome/browser/ui/libgtkui/nav_button_provider_gtk3.cc

Steps to repro/verify the issue from the merge in c#71 for verification team:

1. Run Ubuntu 16.04 LTS or later
2. Install breeze gtk theme: "sudo apt-get install gtk3-engines-breeze"
3. Run chrome with "GTK_THEME=Breeze google-chrome-beta"
4. Maximize the window.

On the failing version, the maximize button should be a square.  On the fixed version, it should be an up arrow that looks like "^".

Cc: ranjitkan@chromium.org pbomm...@chromium.org
Labels: Needs-Feedback
Thanks for the steps provided, followed the steps as mentioned in the above comment.

1) On Ubuntu 16.04 LTS installed breeze gtk3 theme
2) Launched chrome with "GTK_THEME=Breeze google-chrome-beta"
3) Theme was applied as on the Chrome window launched, the maximize button was displayed as an up arrow which looked like "^"
4) Now Maximized the window, but Square button was displayed

A screen cast of the following is attached. Tried on chrome version 63.0.3239.40 Beta and 64.0.3262.0 Canary Builds.

Note on Stable build# 62.0.3202.89 also observed the same behavior

@thomasanderson: Request you to please check and let us know if we have missed out any thing here. Based on your comments I can verify the  issue 779848  as well.

Thanks a lot in advance.!
Native icons.webm
6.1 MB View Download
Oh yeah, you also need to *not* be using the Unity desktop environment in order to repro.  But you can still see the issue on Unity if you launch with "XDG_CURRENT_DESKTOP= GTK_THEME=Breeze google-chrome-beta".  There will be duplicated min/max/close buttons, but at least you'll be able to see the repro.
Labels: TE-Verified-M63 TE-Verified-63.0.3239.40
@ thomasanderso: Thanks for the steps provided, I can see the difference when compared with Stable and Beta (Screen shots attached). 

On Stable#62.0.3202.89 we see a square for Maximize button instead of "^" and on Beta# 63.0.3239.40 we See the "^" icon.

Fix is working as intended. tagging with TE-verified labels.

Thanks.!
Maximize Icon - Beta.png
188 KB View Download
Maximize Icon - Stable.png
191 KB View Download
Project Member

Comment 76 by bugdroid1@chromium.org, Nov 9 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b58b96c061f7788d3d7a16c9931998ebcf0d6915

commit b58b96c061f7788d3d7a16c9931998ebcf0d6915
Author: Tom Anderson <thomasanderson@chromium.org>
Date: Thu Nov 09 20:58:46 2017

Gtk3: Use Chrome's border width instead of GTK's for frame button layout

Previously, a GtkHeaderBar's border was used for laying out frame
buttons in the tabstrip.  However, we never draw a GTK border --
instead, Chrome draws its own 2dp border on all edges.  This could
lead to button placement being off by 1dp when the gtk border was only
1dp or 0dp wide.

Also, small changes in layout code:
* Apply the "image-button" class to the avatar button.
* Make avatar button layout code more consistent with other buttons.

BUG= 753067 
R=erg@chromium.org,sky@chromium.org

Change-Id: I017c4e77892a8a244fb0772ff5432e9b8ef012bf
Reviewed-on: https://chromium-review.googlesource.com/759430
Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Reviewed-by: Elliot Glaysher <erg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#515283}
[modify] https://crrev.com/b58b96c061f7788d3d7a16c9931998ebcf0d6915/chrome/browser/ui/libgtkui/nav_button_provider_gtk3.cc
[modify] https://crrev.com/b58b96c061f7788d3d7a16c9931998ebcf0d6915/chrome/browser/ui/views/frame/desktop_linux_browser_frame_view.cc
[modify] https://crrev.com/b58b96c061f7788d3d7a16c9931998ebcf0d6915/chrome/browser/ui/views/frame/desktop_linux_browser_frame_view_layout.cc
[modify] https://crrev.com/b58b96c061f7788d3d7a16c9931998ebcf0d6915/chrome/browser/ui/views/frame/desktop_linux_browser_frame_view_layout.h
[modify] https://crrev.com/b58b96c061f7788d3d7a16c9931998ebcf0d6915/chrome/browser/ui/views/frame/desktop_linux_browser_frame_view_layout_unittest.cc
[modify] https://crrev.com/b58b96c061f7788d3d7a16c9931998ebcf0d6915/chrome/browser/ui/views/frame/opaque_browser_frame_view.h

Status: Fixed (was: Started)

Sign in to add a comment