Wrong size of embedded window
Bug #1564767 reported by
Alberto Mardegan
This bug affects 2 people
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
webapps-sprint |
Fix Released
|
Critical
|
Alberto Mardegan | ||
qtbase-opensource-src (Ubuntu) |
Fix Released
|
Critical
|
Timo Jyrinki |
Bug Description
When creating an online account in Xenial, the embedded webview is not properly resized to fill up the embedder's area (see attached screenshot).
I'll investigate to find out whether this is a problem with the window manager, or with the XEMBED implementation in Gdk or Qt; but meanwhile, I'll try to apply a workaround in unity-control-
Changed in gnome-control-center-signon (Ubuntu): | |
importance: | Undecided → Critical |
Changed in webapps-sprint: | |
status: | New → In Progress |
importance: | Undecided → Critical |
assignee: | nobody → Alberto Mardegan (mardy) |
Changed in gnome-control-center-signon (Ubuntu): | |
assignee: | nobody → Alberto Mardegan (mardy) |
Changed in webapps-sprint: | |
milestone: | none → sprint-20 |
Changed in qtbase-opensource-src (Ubuntu): | |
status: | New → In Progress |
assignee: | nobody → Timo Jyrinki (timo-jyrinki) |
importance: | Undecided → Critical |
no longer affects: | gnome-control-center-signon (Ubuntu) |
Changed in webapps-sprint: | |
milestone: | sprint-20 → sprint-19 |
milestone: | sprint-19 → sprint-21 |
Changed in webapps-sprint: | |
status: | In Progress → Fix Released |
To post a comment you must log in.
It looks like the bug is in QtBase: in the XCB plugin, the handleConfigure NotifyEvent( ) method initially wants to find out what is the new screen for the window, but due to a bug, it gets a NULL screen and decides to return from the function without processing the size changes. The reason for the failure (that is, the reason why we get NULL as a screen) is that the parentScreen() method doesn't take foreign windows into account: when we are embedding windows with the XEMBED protocol, the parent window is the embedder, which might live in another process; Qt does not know anything about this window other than its numeric ID, meaning that it doesn't know its screen either.
Therefore, we need to special-case these windows, and make sure that parentScreen() returns a sensible value.
Note that the patch doesn't need upstreaming: the Qt 5.6 code is already quite different (it doesn't even call the parentScreen() method here) and might be already fine. I'll test it with a local build, and report a bug to the Qt bugtracker in case.