WebKit breaks the dialog for opening / saving standard windows

Our team is developing a sophisticated application using Qt 4.7.4. One of the key features we provide requires HTML + JS content provided by QWebBrowser.

The problem is that loading some pages leads to broken open / save dialogs:

enter image description here

The dialog still works from the point of view of interaction: you can open a field with a list of file filters, enter a file name, but all this is incorrect. The file and directory tree are not displayed at all.

I did not find errors in this problem in Qt tracker and google. We decided that the problem is local to our project. We assume that some internal structures of comctl32.dll are destroyed by someone, they write an operation with an invalid address, but we have no idea how to catch the real reason. It is also worth mentioning that this problem does NOT occur with Qt 5.4, and on any version of Windows it is less than 8.0. Unfortunately, we have to build the next release back on Qt 4.8 (the project is huge, the update process takes a considerable amount of time).

How can such a problem be debugged? What memory operations and / or WinAPI calls should be connected? Any ideas are much appreciated.

Toolchain is MSVC 9.0 (VS 2008)

+6
source share
3 answers

Well, having spent a lot of time researching, we found that the real reason for broken windows is loading the Flash DLL.

We found a correlation between the messages about loading the DLL in the Debug window and the moment the dialog broke. The dialog breaks exactly after loading the Flash plugin.

To provide this suggestion, we moved the Flash DLL ( NPSWF64_*.DLL ) to another directory so that WebKit could not find the plugin, and after the application restart dialogs were restarted.

+3
source

Qt 4.7 (4.8 too) is pretty old and dusty these days. It does not support Windows> 7 AFAIK. You should definitely switch to Qt 5.

+4
source

Have you tried your application on another machine? Similarly, this thing also happened to mine while I was working on victory machine 8. For several days I did not know what to do, and in the end I tried it on winning 7 pcs, and it worked. I thought something was wrong with my car, but it doesn’t look like that.

+3
source

All Articles