Bug 36179 - [QT] Webkit transparency causes screen distortions and flickering
Summary: [QT] Webkit transparency causes screen distortions and flickering
Status: RESOLVED INVALID
Alias: None
Product: WebKit
Classification: Unclassified
Component: New Bugs (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P3 Normal
Assignee: Nobody
URL:
Keywords: Qt
Depends on:
Blocks:
 
Reported: 2010-03-16 12:05 PDT by Marcus
Modified: 2010-05-06 06:36 PDT (History)
2 users (show)

See Also:


Attachments
This is the popup on windows. It should appear this way on Linux too. (40.34 KB, image/jpeg)
2010-03-16 12:05 PDT, Marcus
no flags Details
This is the screen distortion caused in Linux. It is like some sort of buffer is reused over and over again even though it is stale. (101.35 KB, image/jpeg)
2010-03-16 12:06 PDT, Marcus
no flags Details
Test case. Made it as small as I could. (4.67 KB, application/x-gzip)
2010-03-16 12:07 PDT, Marcus
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Marcus 2010-03-16 12:05:08 PDT
Created attachment 50817 [details]
This is the popup on windows. It should appear this way on Linux too.

PLATFORMS

This mainly affects Linux, but the issue is also there in Windows. I am running QT 4.6.2

DESCRIPTION

On click, a transparent, frameless webkit window will popup covering the screen and draw a box at the location of the click (functions much like a context menu). In Linux, this causes screen distortions (see screenshot). In Windows it largely works, but there is a flicker between every click where if you click in two separate places the box will show in the previous place it was for a second. This should not happen because every time the box leaves the screen it is made invisible via javascript.

PROBLEM SUMMARY

Linux: Screen distortion; Windows: Flicker

TESTED SETUPS

I have tested it on two windows 7 installs and multiple linux installs and so have other people. Every Linux install has compositing enabled and is able to run compizfusion, so it is not an issue with graphic drivers or the sort.
Comment 1 Marcus 2010-03-16 12:06:19 PDT
Created attachment 50818 [details]
This is the screen distortion caused in Linux. It is like some sort of buffer is reused over and over again even though it is stale.
Comment 2 Marcus 2010-03-16 12:07:09 PDT
Created attachment 50819 [details]
Test case. Made it as small as I could.
Comment 3 Kent Hansen 2010-03-17 04:23:20 PDT
On Linux, left-clicking displays a black box that nearly fills the screen, and after clicking on it it's not possible to click on anything else (can't even click the icon to close the app).
Comment 4 Marcus 2010-03-17 10:50:24 PDT
Interesting, does transparency work for you with other programs? Two people have said they see a black box. I assumed that is because they don't have compositing enabled (I believe this requires it, right?).

You are the first to report you cannot close the popup. It is supposed to grab the mouse and on any subsequent left-click close the box.

So, is this a bug in QT Webkit? It seems like it is to me since it works in Windows and not Linux despite Linux having the capability.
Comment 5 Marcus 2010-03-17 10:53:05 PDT
Btw, code to make the webview transprent was borrowed from:

http://labs.trolltech.com/blogs/2009/06/30/transparent-qwebview-or-qwebpage/

Based on the last comment on the page, even that does not work in Linux.
Comment 6 Marcus 2010-03-17 16:16:14 PDT
Okay, it is getting stranger. This is what I discovered:

Nvidia + proprietary drivers / ATI + open source drivers gives the distorted screen as shown in the screen shot.

ATI + proprietary drivers gives a completely black background instead of a transparent background.


In all these cases linux is capable because Compizfusion opacity effect can be enabled, which makes windows transparent. Can someone confirm this as a bug in QT?
Comment 7 Jocelyn Turcotte 2010-05-06 06:36:32 PDT
Tried to reproduce it and couldn't, the window was transparent as expected.
I also got the "won't close" problem which seem to be caused by an unreleased mouse grab.

The screen distortion you see is there because the window is expected to be made transparent by the composition manager but is not.

You test application is too complex.
If you can shrink it and corner the cause of the problem around  QPalette::setBrush(QPalette::Base, Qt::transparent) and setAttribute(Qt::WA_TranslucentBackground, true), you should report this bug at http://bugreports.qt.nokia.com

The bug is not related to QtWebKit so i'll resolve it as invalid.