Speed up application loading

pull/2/head
Timothy Pearson 13 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 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); 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 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 QStyle::ControlElementFlags getControlElementFlagsForObject(const QObject* object, QStringList objectTypeList, const QStyleOption& opt, bool populateReliantFields=true);
Q_EXPORT QStringList getObjectTypeListForObject(const QObject* object); 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 // QT_NO_STYLE
#endif // QSTYLE_H #endif // QSTYLE_H

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

Loading…
Cancel
Save