Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Standard windows open/save dialog is broken by WebKit

Our team is developing a complex application using Qt 4.7.4. One of the key functions we provide requires HTML+JS content rendered by QWebBrowser.

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

enter image description here

The dialog still "works" in terms of interaction: the file filter combobox can be opened, file name can be entered, but all of this is drawn wrong. File list and directory tree is not drawn at all.

I have found no bugreports about this problem on Qt bug tracker and google. We decided that the problem is local to our project. We suppose that some comctl32.dll internal structures is ruined by someone's write operation to invalid address, but we have no idea how to catch the real cause. Also it is worth to mention that this problem does NOT appear with Qt 5.4 and on any version of windows less that 8.0. Unfortunately, we should build the next release still on Qt 4.8 (the project is huge, upgrade process takes significant amount of time).

How such problem can be debugged? What memory operations and/or WinAPI calls should be hooked? Any ideas is highly appreciated.

The toolchain is MSVC 9.0 (VS 2008)

like image 694
Nipheris Avatar asked Sep 04 '15 10:09

Nipheris


3 Answers

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.

like image 158
marius_linux Avatar answered Nov 30 '22 04:11

marius_linux


Well, after spending a lot of time for investigations, we have discovered that the real cause of broken windows is loading of Flash plugin DLL.

We have found the correlation between the messages about DLL load in Debug window and the moment of breaking the dialog. The dialog breaks exactly after loading the Flash plugin.

To ensure this proposition, we moved the Flash DLL (NPSWF64_*.DLL) to another directory to make WebKit not able to find the plugin, and after application restart dialogs became fixed.

like image 42
Nipheris Avatar answered Nov 30 '22 04:11

Nipheris


Have you tried your application on another machine ? Like this thing also happend to my while i was working on a win 8 machine . For a few days i didn't knew what to , and after all i have tried it on win 7 pc and it worked. I thought something was wrong with my machine but it looks it's not.

like image 35
Reznicencu Bogdan Avatar answered Nov 30 '22 03:11

Reznicencu Bogdan