New issue
Advanced search Search tips

Issue 922965 link

Starred by 1 user

Issue metadata

Status: Assigned
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 2
Type: Bug



Sign in to add a comment

Profile Chooser does not extend past Window Boundary on Linux

Project Member Reported by jdoerrie@chromium.org, Jan 17 (5 days ago)

Issue description

Chrome Version       : 71.0.3578.98
OS Version: Linux

What steps will reproduce the problem?
1. Resize window such that it is smaller than the profile chooser

What is the expected result?
Profile chooser should extend outside of window

What happens instead of that?
Profile chooser is cut off by window

See attached screenshots.
 
Desired Scrolling Behavior.png
125 KB View Download
Linux.png
67.6 KB View Download
Mac.png
110 KB View Download

Comment 1 by vasi...@chromium.org, Jan 17 (5 days ago)

Cc: tapted@chromium.org
I think we won't be able to fix it. This is due to window manager on Linux.

Trent, could you remind us what the problem is?

Comment 2 by ftirelo@chromium.org, Jan 17 (5 days ago)

Cc: ftirelo@chromium.org tmartino@chromium.org

Comment 3 by tapted@chromium.org, Jan 17 (5 days ago)

aura::Window on Linux defaults to a kind of simulated window, which doesn't map to an X11 resource. As you say, window managers (particularly tiling window managers) like to grab all X11 windows and "manage" them, sometimes in unexpected ways.

A possible fix may be to use Widget::InitParams::TYPE_MENU for the profile chooser. This works for the Chrome app menu (i.e. it _can_ extend past the parent window boundary), and the Profile chooser is quite menu-like in its UX. However, other things may break/change. E.g. The fade-in/fade-out animation may change without other tweaks.

Comment 4 by vasi...@chromium.org, Jan 18 (4 days ago)

Cc: sky@chromium.org vasi...@chromium.org msw@chromium.org
 Widget::InitParams::TYPE_BUBBLE is hardcoded at the level of BubbleDialogDelegateView. As an experiment I tried to change it to Widget::InitParams::TYPE_MENU but then everything crashed because TYPE_MENU doesn't have a client_view(). 

I'm not sure where the code creating a real X11 window is. Adding some bubble owners.
Does extending DialogDelegate with a method IsOSWindowRequired sounds like a decent path to explore?

Comment 5 by sky@chromium.org, Jan 18 (4 days ago)

Cc: thomasanderson@chromium.org
The code for creating the X11 window is in DesktopWindowTreeHostX11. DesktoWindowTreeHostX11 is used on linux if DesktopNativeWidgetAura is created for a Widget. The decision as to whether DesktopNativeWidgetAura is used is made by the function ChromeViewsDelegate::CreateNativeWidget which also calls to CreateNativeWidget in c/b/ui/views/native_widget_factory. It looks like if in the init params you do not set a parent you will get a DesktopNativeWidgetAura. Of course that is likely to result in a bunch of other subtle things happening.

Sign in to add a comment