Speed up application loading

pull/2/head
Timothy Pearson 12 years ago
parent d1c6722372
commit 30c5994817

@ -2579,7 +2579,11 @@ QSize QStyle::sizeFromContents(ContentsType contents,
int QStyle::styleHint(StyleHint sh, const QWidget * w, const QStyleOption &so, QStyleHintReturn *shr) const
{
QStyleControlElementData ceData = populateControlElementDataFromWidget(w, so, false);
bool ceDataNotNeeded = false;
if (sh == SH_Widget_ShareActivation) {
ceDataNotNeeded = true;
}
QStyleControlElementData ceData = populateControlElementDataFromWidget(w, so, false, ceDataNotNeeded);
return styleHint(sh, ceData, getControlElementFlagsForObject(w, ceData.widgetObjectTypes, QStyleOption(), false), so, shr, w);
}

@ -1231,6 +1231,7 @@ Q_EXPORT QStyleControlElementData populateControlElementDataFromWidget(const QWi
Q_EXPORT QStyleControlElementData populateControlElementDataFromApplication(const QApplication* app, const QStyleOption& opt, bool populateReliantFields=true);
Q_EXPORT QStyle::ControlElementFlags getControlElementFlagsForObject(const QObject* object, QStringList objectTypeList, const QStyleOption& opt, bool populateReliantFields=true);
Q_EXPORT QStringList getObjectTypeListForObject(const QObject* object);
Q_EXPORT QStyleControlElementData populateControlElementDataFromWidget(const QWidget* widget, const QStyleOption& opt, bool populateReliantFields, bool populateMinimumNumberOfFields);
#endif // QT_NO_STYLE
#endif // QSTYLE_H

@ -251,22 +251,27 @@ QStyle::ControlElementFlags getControlElementFlagsForObject(const QObject* objec
}
QStyleControlElementData populateControlElementDataFromWidget(const QWidget* widget, const QStyleOption& opt, bool populateReliantFields) {
return populateControlElementDataFromWidget(widget, opt, populateReliantFields, false);
}
QStyleControlElementData populateControlElementDataFromWidget(const QWidget* widget, const QStyleOption& opt, bool populateReliantFields, bool populateMinimumNumberOfFields) {
QStyleControlElementData ceData;
if (widget) {
ceData.widgetObjectTypes = getObjectTypeListForObject(widget);
ceData.allDataPopulated = populateReliantFields;
ceData.allDataPopulated = populateReliantFields & populateMinimumNumberOfFields;
if (!populateMinimumNumberOfFields) {
const QPixmap* erasePixmap = widget->backgroundPixmap();
if (erasePixmap) {
ceData.bgPixmap = *erasePixmap;
}
if (populateReliantFields) {
ceData.bgBrush = widget->backgroundBrush();
}
ceData.wflags = widget->getWFlags();
if (populateReliantFields) {
ceData.windowState = (Qt::WindowState)(widget->windowState());
}
}
ceData.wflags = widget->getWFlags();
if (!populateMinimumNumberOfFields) {
ceData.bgColor = widget->eraseColor();
ceData.bgOffset = widget->backgroundOffset();
ceData.backgroundMode = widget->backgroundMode();
@ -284,8 +289,10 @@ QStyleControlElementData populateControlElementDataFromWidget(const QWidget* wid
}
ceData.palette = widget->palette();
ceData.font = widget->font();
}
ceData.name = widget->name();
ceData.caption = widget->caption();
if (!populateMinimumNumberOfFields) {
if (ceData.widgetObjectTypes.contains("QPushButton")) {
const QPushButton *button = dynamic_cast<const QPushButton*>(widget);
if (button) {
@ -498,7 +505,7 @@ QStyleControlElementData populateControlElementDataFromWidget(const QWidget* wid
QWidget* viewport = lv->viewport();
if (viewport) {
ceData.viewportData.widgetObjectTypes = getObjectTypeListForObject(viewport);
ceData.viewportData.allDataPopulated = populateReliantFields;
ceData.viewportData.allDataPopulated = populateReliantFields & populateMinimumNumberOfFields;
const QPixmap* erasePixmap = viewport->backgroundPixmap();
if (erasePixmap) {
ceData.viewportData.bgPixmap = *erasePixmap;
@ -506,10 +513,10 @@ QStyleControlElementData populateControlElementDataFromWidget(const QWidget* wid
if (populateReliantFields) {
ceData.viewportData.bgBrush = viewport->backgroundBrush();
}
ceData.viewportData.wflags = viewport->getWFlags();
if (populateReliantFields) {
ceData.viewportData.windowState = (Qt::WindowState)(widget->windowState());
}
ceData.viewportData.wflags = viewport->getWFlags();
ceData.viewportData.bgColor = viewport->eraseColor();
ceData.viewportData.bgOffset = viewport->backgroundOffset();
ceData.viewportData.backgroundMode = viewport->backgroundMode();
@ -555,7 +562,7 @@ QStyleControlElementData populateControlElementDataFromWidget(const QWidget* wid
const QWidget* parentWidget = widget->parentWidget();
if (parentWidget) {
ceData.parentWidgetData.widgetObjectTypes = getObjectTypeListForObject(parentWidget);
ceData.parentWidgetData.allDataPopulated = populateReliantFields;
ceData.parentWidgetData.allDataPopulated = populateReliantFields & populateMinimumNumberOfFields;
const QPixmap* erasePixmap = parentWidget->backgroundPixmap();
if (erasePixmap) {
ceData.parentWidgetData.bgPixmap = *erasePixmap;
@ -563,10 +570,10 @@ QStyleControlElementData populateControlElementDataFromWidget(const QWidget* wid
if (populateReliantFields) {
ceData.parentWidgetData.bgBrush = parentWidget->backgroundBrush();
}
ceData.parentWidgetData.wflags = parentWidget->getWFlags();
if (populateReliantFields) {
ceData.parentWidgetData.windowState = (Qt::WindowState)(widget->windowState());
}
ceData.parentWidgetData.wflags = parentWidget->getWFlags();
ceData.parentWidgetData.bgColor = parentWidget->eraseColor();
ceData.parentWidgetData.bgOffset = parentWidget->backgroundOffset();
ceData.parentWidgetData.backgroundMode = parentWidget->backgroundMode();
@ -607,7 +614,7 @@ QStyleControlElementData populateControlElementDataFromWidget(const QWidget* wid
const QWidget* topLevelWidget = widget->topLevelWidget();
if (topLevelWidget) {
ceData.topLevelWidgetData.widgetObjectTypes = getObjectTypeListForObject(topLevelWidget);
ceData.topLevelWidgetData.allDataPopulated = populateReliantFields;
ceData.topLevelWidgetData.allDataPopulated = populateReliantFields & populateMinimumNumberOfFields;
const QPixmap* erasePixmap = topLevelWidget->backgroundPixmap();
if (erasePixmap) {
ceData.topLevelWidgetData.bgPixmap = *erasePixmap;
@ -615,10 +622,10 @@ QStyleControlElementData populateControlElementDataFromWidget(const QWidget* wid
if (populateReliantFields) {
ceData.topLevelWidgetData.bgBrush = topLevelWidget->backgroundBrush();
}
ceData.topLevelWidgetData.wflags = topLevelWidget->getWFlags();
if (populateReliantFields) {
ceData.topLevelWidgetData.windowState = (Qt::WindowState)(widget->windowState());
}
ceData.topLevelWidgetData.wflags = topLevelWidget->getWFlags();
ceData.topLevelWidgetData.bgColor = topLevelWidget->eraseColor();
ceData.topLevelWidgetData.bgOffset = topLevelWidget->backgroundOffset();
ceData.topLevelWidgetData.backgroundMode = topLevelWidget->backgroundMode();
@ -668,6 +675,7 @@ QStyleControlElementData populateControlElementDataFromWidget(const QWidget* wid
ceData.checkListItemData.dataValid = false;
}
}
}
return ceData;
}

Loading…
Cancel
Save