fix : inspect element hang forever if opened by right context menu on the first time.

This commit is contained in:
Xiao YiFang 2022-06-09 20:15:02 +08:00
parent 73e02719d3
commit 0c21dacc8a
2 changed files with 9 additions and 3 deletions

View file

@ -3,7 +3,7 @@
#if (QT_VERSION > QT_VERSION_CHECK(6,0,0)) #if (QT_VERSION > QT_VERSION_CHECK(6,0,0))
#include <QWebEngineContextMenuRequest> #include <QWebEngineContextMenuRequest>
#endif #endif
ArticleInspector::ArticleInspector( QWidget * parent ) : QWidget( parent, Qt::WindowType::Window ) ArticleInspector::ArticleInspector( QWidget * parent ) : QWidget( parent, Qt::WindowType::Window ),firstTimeOpened(false)
{ {
setWindowTitle(tr("Inspect")); setWindowTitle(tr("Inspect"));
setAttribute( Qt::WidgetAttribute::WA_DeleteOnClose, false ); setAttribute( Qt::WidgetAttribute::WA_DeleteOnClose, false );
@ -22,13 +22,17 @@ void ArticleInspector::setInspectPage( QWebEngineView * view )
viewContainer->page()->setInspectedPage(page); viewContainer->page()->setInspectedPage(page);
#if( QT_VERSION > QT_VERSION_CHECK( 6, 0, 0 ) ) #if( QT_VERSION > QT_VERSION_CHECK( 6, 0, 0 ) )
// without this line, application will crash on qt6.2 ,see https://bugreports.qt.io/browse/QTBUG-101724 // without this line, application will crash on qt6.2 ,see https://bugreports.qt.io/browse/QTBUG-101724
if( view->lastContextMenuRequest() ) if( view->lastContextMenuRequest() && firstTimeOpened )
{ {
page->triggerAction( QWebEnginePage::InspectElement ); page->triggerAction( QWebEnginePage::InspectElement );
} }
#else #else
page->triggerAction( QWebEnginePage::InspectElement ); page->triggerAction( QWebEnginePage::InspectElement );
#endif #endif
if( !firstTimeOpened )
{
firstTimeOpened = true;
}
raise(); raise();
show(); show();
} }

View file

@ -15,7 +15,9 @@ public:
void setInspectPage( QWebEngineView * view); void setInspectPage( QWebEngineView * view);
private: private:
//used to record if the devtool was first time opened.
//if right click on the webpage and open inspect page on the first time ,the application has great possiblity to hang forever.
bool firstTimeOpened;
virtual void closeEvent( QCloseEvent * ); virtual void closeEvent( QCloseEvent * );
}; };