summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorJocelyn Turcotte <jocelyn.turcotte@digia.com>2014-01-27 17:23:13 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-01-27 18:32:45 +0100
commit44e25bdf008742570619877e82ba603b3520b08f (patch)
tree56af4ba169bc206a5aad505c040a5e7e6143f249 /examples
parente5c8a206c0807381bebd928e31beb258b14bc65f (diff)
Get rid of tr1/functional
This header requires rtti in libstdc++ on Mac, which we can't recommend since Qt itself is usually built without rtti. Replace its uses with simpler hand-made template functors. Change-Id: Ic020dcceaf262f77d92b31a8318a513fa200428d Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'examples')
-rw-r--r--examples/widgets/browser/browsermainwindow.cpp26
-rw-r--r--examples/widgets/fancybrowser/mainwindow.cpp26
2 files changed, 32 insertions, 20 deletions
diff --git a/examples/widgets/browser/browsermainwindow.cpp b/examples/widgets/browser/browsermainwindow.cpp
index ac8426d9a..26b38c921 100644
--- a/examples/widgets/browser/browsermainwindow.cpp
+++ b/examples/widgets/browser/browsermainwindow.cpp
@@ -71,15 +71,21 @@
#include <QtCore/QDebug>
-#if __cplusplus >= 201103L
-#include <functional>
-using std::bind;
-namespace placeholders = std::placeholders;
-#else
-#include <tr1/functional>
-using std::tr1::bind;
-namespace placeholders = std::tr1::placeholders;
-#endif
+template<typename Arg, typename R, typename C>
+struct InvokeWrapper {
+ R *receiver;
+ void (C::*memberFun)(const Arg&);
+ void operator()(const Arg &result) {
+ (receiver->*memberFun)(result);
+ }
+};
+
+template<typename Arg, typename R, typename C>
+InvokeWrapper<Arg, R, C> invoke(R *receiver, void (C::*memberFun)(const Arg&))
+{
+ InvokeWrapper<Arg, R, C> wrapper = {receiver, memberFun};
+ return wrapper;
+}
BrowserMainWindow::BrowserMainWindow(QWidget *parent, Qt::WindowFlags flags)
: QMainWindow(parent, flags)
@@ -827,7 +833,7 @@ void BrowserMainWindow::slotViewPageSource()
view->setAttribute(Qt::WA_DeleteOnClose);
view->show();
- currentTab()->page()->toHtml(bind(&QPlainTextEdit::setPlainText, view, placeholders::_1));
+ currentTab()->page()->toHtml(invoke(view, &QPlainTextEdit::setPlainText));
}
void BrowserMainWindow::slotHome()
diff --git a/examples/widgets/fancybrowser/mainwindow.cpp b/examples/widgets/fancybrowser/mainwindow.cpp
index b9d5a8364..9462539e5 100644
--- a/examples/widgets/fancybrowser/mainwindow.cpp
+++ b/examples/widgets/fancybrowser/mainwindow.cpp
@@ -42,15 +42,21 @@
#include <QtWebEngineWidgets>
#include "mainwindow.h"
-#if __cplusplus >= 201103L
-#include <functional>
-using std::bind;
-namespace placeholders = std::placeholders;
-#else
-#include <tr1/functional>
-using std::tr1::bind;
-namespace placeholders = std::tr1::placeholders;
-#endif
+template<typename Arg, typename R, typename C>
+struct InvokeWrapper {
+ R *receiver;
+ void (C::*memberFun)(const Arg&);
+ void operator()(const Arg &result) {
+ (receiver->*memberFun)(result);
+ }
+};
+
+template<typename Arg, typename R, typename C>
+InvokeWrapper<Arg, R, C> invoke(R *receiver, void (C::*memberFun)(const Arg&))
+{
+ InvokeWrapper<Arg, R, C> wrapper = {receiver, memberFun};
+ return wrapper;
+}
//! [1]
@@ -120,7 +126,7 @@ void MainWindow::viewSource()
textEdit->move(this->geometry().center() - textEdit->rect().center());
textEdit->show();
- view->page()->toHtml(bind(&QTextEdit::setPlainText, textEdit, placeholders::_1));
+ view->page()->toHtml(invoke(textEdit, &QTextEdit::setPlainText));
}
//! [4]