Add tab corner widget information to style data structures

This breaks the style ABI
pull/2/head
Timothy Pearson 12 years ago
parent f209ff4b48
commit 4037eb7e84

@ -133,6 +133,8 @@ class QStyleHintReturn; // not defined yet
typedef QMap<Q_UINT32, QSize> DialogButtonSizeMap;
typedef QMap<Q_INT32, Q_INT32> TabIdentifierIndexMap;
class QStyleControlElementGenericWidgetData;
class QStyleControlElementPopupMenuData {
public:
//
@ -146,13 +148,6 @@ class QStyleControlElementCheckListItemData {
int height;
};
class QStyleControlElementTabBarData {
public:
int tabCount;
QTabBar::Shape shape;
TabIdentifierIndexMap identIndexMap;
};
class QStyleControlElementListViewData {
public:
bool rootDecorated;
@ -204,6 +199,22 @@ class QStyleControlElementGenericWidgetData {
QFont font;
};
class QStyleControlElementTabBarData {
public:
int tabCount;
int currentTabIndex;
QTabBar::Shape shape;
TabIdentifierIndexMap identIndexMap;
QStyleControlElementGenericWidgetData cornerWidgets[4];
enum CornerWidgetLocation {
CWL_TopLeft = 0,
CWL_TopRight = 1,
CWL_BottomLeft = 2,
CWL_BottomRight = 3
};
};
class Q_EXPORT QStyleControlElementData {
public:
QStringList widgetObjectTypes;

@ -49,6 +49,7 @@
#include "qpixmap.h"
#include "qpushbutton.h"
#include "qtabbar.h"
#include "qtabwidget.h"
#include "qlineedit.h"
#include "qscrollbar.h"
#include "qtoolbutton.h"
@ -333,6 +334,7 @@ QStyleControlElementData populateControlElementDataFromWidget(const QWidget* wid
const QTabBar *tb = dynamic_cast<const QTabBar*>(widget);
if (tb) {
ceData.tabBarData.tabCount = tb->count();
ceData.tabBarData.currentTabIndex = tb->currentTab();
ceData.tabBarData.shape = tb->shape();
ceData.tabBarData.identIndexMap.clear();
const QTab* currentTab;
@ -342,6 +344,38 @@ QStyleControlElementData populateControlElementDataFromWidget(const QWidget* wid
ceData.tabBarData.identIndexMap[currentTab->identifier()] = tb->indexOf(currentTab->identifier());
}
}
const QTabWidget *tw = dynamic_cast<const QTabWidget*>(tb->parent());
if (tw) {
QWidget *cw;
cw = tw->cornerWidget(Qt::TopLeft);
if(cw) {
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_TopLeft].widgetObjectTypes = getObjectTypeListForObject(cw);
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) {
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_TopRight].widgetObjectTypes = getObjectTypeListForObject(cw);
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) {
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_BottomLeft].widgetObjectTypes = getObjectTypeListForObject(cw);
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) {
ceData.tabBarData.cornerWidgets[QStyleControlElementTabBarData::CWL_BottomRight].widgetObjectTypes = getObjectTypeListForObject(cw);
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 (ceData.widgetObjectTypes.contains("QToolBox")) {

Loading…
Cancel
Save