Fix crash on populating style data to tabbar without parent

This resolves Bug 1966
pull/2/head
Slávek Banko 10 years ago
parent 1afc62ef88
commit 3d29992e94

@ -468,41 +468,43 @@ const QStyleControlElementData &populateControlElementDataFromWidget(const QWidg
ceData.tabBarData.identIndexMap[currentTab->identifier()] = tb->indexOf(currentTab->identifier());
}
}
updateObjectTypeListIfNeeded(tb->parent());
if ((const_cast<QObject*>(tb->parent())->controlElementDataPrivateObject())->isQTabWidget) {
const QTabWidget *tw = static_cast<const QTabWidget*>(tb->parent());
QWidget *cw;
cw = tw->cornerWidget(Qt::TopLeft);
if (cw) {
updateObjectTypeListIfNeeded(cw);
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_TopLeft].widgetObjectTypes = (const_cast<QWidget*>(cw)->controlElementDataObject())->widgetObjectTypes;
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_TopLeft].geometry = cw->geometry();
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_TopLeft].rect = cw->rect();
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_TopLeft].pos = cw->pos();
}
cw = tw->cornerWidget(Qt::TopRight);
if (cw) {
updateObjectTypeListIfNeeded(cw);
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_TopRight].widgetObjectTypes = (const_cast<QWidget*>(cw)->controlElementDataObject())->widgetObjectTypes;
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_TopRight].geometry = cw->geometry();
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_TopRight].rect = cw->rect();
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_TopRight].pos = cw->pos();
}
cw = tw->cornerWidget(Qt::BottomLeft);
if (cw) {
updateObjectTypeListIfNeeded(cw);
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_BottomLeft].widgetObjectTypes = (const_cast<QWidget*>(cw)->controlElementDataObject())->widgetObjectTypes;
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_BottomLeft].geometry = cw->geometry();
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_BottomLeft].rect = cw->rect();
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_BottomLeft].pos = cw->pos();
}
cw = tw->cornerWidget(Qt::BottomRight);
if (cw) {
updateObjectTypeListIfNeeded(cw);
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_BottomRight].widgetObjectTypes = (const_cast<QWidget*>(cw)->controlElementDataObject())->widgetObjectTypes;
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_BottomRight].geometry = cw->geometry();
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_BottomRight].rect = cw->rect();
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_BottomRight].pos = cw->pos();
if ( tb->parent() ) {
updateObjectTypeListIfNeeded(tb->parent());
if ((const_cast<QObject*>(tb->parent())->controlElementDataPrivateObject())->isQTabWidget) {
const QTabWidget *tw = static_cast<const QTabWidget*>(tb->parent());
QWidget *cw;
cw = tw->cornerWidget(Qt::TopLeft);
if (cw) {
updateObjectTypeListIfNeeded(cw);
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_TopLeft].widgetObjectTypes = (const_cast<QWidget*>(cw)->controlElementDataObject())->widgetObjectTypes;
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_TopLeft].geometry = cw->geometry();
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_TopLeft].rect = cw->rect();
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_TopLeft].pos = cw->pos();
}
cw = tw->cornerWidget(Qt::TopRight);
if (cw) {
updateObjectTypeListIfNeeded(cw);
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_TopRight].widgetObjectTypes = (const_cast<QWidget*>(cw)->controlElementDataObject())->widgetObjectTypes;
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_TopRight].geometry = cw->geometry();
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_TopRight].rect = cw->rect();
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_TopRight].pos = cw->pos();
}
cw = tw->cornerWidget(Qt::BottomLeft);
if (cw) {
updateObjectTypeListIfNeeded(cw);
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_BottomLeft].widgetObjectTypes = (const_cast<QWidget*>(cw)->controlElementDataObject())->widgetObjectTypes;
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_BottomLeft].geometry = cw->geometry();
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_BottomLeft].rect = cw->rect();
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_BottomLeft].pos = cw->pos();
}
cw = tw->cornerWidget(Qt::BottomRight);
if (cw) {
updateObjectTypeListIfNeeded(cw);
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_BottomRight].widgetObjectTypes = (const_cast<QWidget*>(cw)->controlElementDataObject())->widgetObjectTypes;
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_BottomRight].geometry = cw->geometry();
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_BottomRight].rect = cw->rect();
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_BottomRight].pos = cw->pos();
}
}
}
}

Loading…
Cancel
Save