diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2013-09-22 18:48:42 -0700 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-23 19:38:12 +0200 |
commit | c81d0586b5f22715ce66d0f14cf079424700358b (patch) | |
tree | be6a224cba9598cc4dcc892c82145c3cfc2d91f3 /src | |
parent | 58b08ba40b849864ceb2c08f65b0be08ac6fa47a (diff) |
De-inline virtuals of some non-exported private classes in QtGui
This is to work around a bug in GCC 4.7's link-time optimiser. Without
it, linking QtOpenGL and QtPrintSupport fails because the compiler
generates the code for the virtuals, including the virtual table, but
not the methods.
Change-Id: Idcecd51c32e6228e0eefe67f1bd630ea1f5d5da7
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/text/qfontengine.cpp | 9 | ||||
-rw-r--r-- | src/gui/text/qfontengine_p.h | 4 | ||||
-rw-r--r-- | src/widgets/widgets/qtabbar.cpp | 12 | ||||
-rw-r--r-- | src/widgets/widgets/qtabbar_p.h | 6 |
4 files changed, 25 insertions, 6 deletions
diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp index 810b51b9c4..b3889a02a4 100644 --- a/src/gui/text/qfontengine.cpp +++ b/src/gui/text/qfontengine.cpp @@ -1880,4 +1880,13 @@ QImage QFontEngineMulti::alphaRGBMapForGlyph(glyph_t glyph, QFixed subPixelPosit return engine(which)->alphaRGBMapForGlyph(stripped(glyph), subPixelPosition, t); } +QTestFontEngine::QTestFontEngine(int size) + : QFontEngineBox(size) +{} + +QFontEngine::Type QTestFontEngine::type() const +{ + return TestFontEngine; +} + QT_END_NAMESPACE diff --git a/src/gui/text/qfontengine_p.h b/src/gui/text/qfontengine_p.h index 1a6862898d..d3faef93bb 100644 --- a/src/gui/text/qfontengine_p.h +++ b/src/gui/text/qfontengine_p.h @@ -434,8 +434,8 @@ protected: class QTestFontEngine : public QFontEngineBox { public: - QTestFontEngine(int size) : QFontEngineBox(size) {} - virtual Type type() const { return TestFontEngine; } + QTestFontEngine(int size); + virtual Type type() const; }; QT_END_NAMESPACE diff --git a/src/widgets/widgets/qtabbar.cpp b/src/widgets/widgets/qtabbar.cpp index aa7677869c..94c85ff92b 100644 --- a/src/widgets/widgets/qtabbar.cpp +++ b/src/widgets/widgets/qtabbar.cpp @@ -2370,8 +2370,20 @@ void CloseButton::paintEvent(QPaintEvent *) style()->drawPrimitive(QStyle::PE_IndicatorTabClose, &opt, &p, this); } +void QTabBarPrivate::Tab::TabBarAnimation::updateCurrentValue(const QVariant ¤t) +{ + priv->moveTab(priv->tabList.indexOf(*tab), current.toInt()); +} + +void QTabBarPrivate::Tab::TabBarAnimation::updateState(QAbstractAnimation::State, QAbstractAnimation::State newState) +{ + if (newState == Stopped) priv->moveTabFinished(priv->tabList.indexOf(*tab)); +} + QT_END_NAMESPACE #include "moc_qtabbar.cpp" #endif // QT_NO_TABBAR + + diff --git a/src/widgets/widgets/qtabbar_p.h b/src/widgets/widgets/qtabbar_p.h index 8c6e70b8d7..b7b6998ca3 100644 --- a/src/widgets/widgets/qtabbar_p.h +++ b/src/widgets/widgets/qtabbar_p.h @@ -126,11 +126,9 @@ public: TabBarAnimation(Tab *t, QTabBarPrivate *_priv) : tab(t), priv(_priv) { setEasingCurve(QEasingCurve::InOutQuad); } - void updateCurrentValue(const QVariant ¤t) - { priv->moveTab(priv->tabList.indexOf(*tab), current.toInt()); } + void updateCurrentValue(const QVariant ¤t); - void updateState(State, State newState) - { if (newState == Stopped) priv->moveTabFinished(priv->tabList.indexOf(*tab)); } + void updateState(State, State newState); private: //these are needed for the callbacks Tab *tab; |