From 44e25bdf008742570619877e82ba603b3520b08f Mon Sep 17 00:00:00 2001 From: Jocelyn Turcotte Date: Mon, 27 Jan 2014 17:23:13 +0100 Subject: 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 --- examples/widgets/browser/browsermainwindow.cpp | 26 ++++++++++++++++---------- examples/widgets/fancybrowser/mainwindow.cpp | 26 ++++++++++++++++---------- 2 files changed, 32 insertions(+), 20 deletions(-) (limited to 'examples') 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 -#if __cplusplus >= 201103L -#include -using std::bind; -namespace placeholders = std::placeholders; -#else -#include -using std::tr1::bind; -namespace placeholders = std::tr1::placeholders; -#endif +template +struct InvokeWrapper { + R *receiver; + void (C::*memberFun)(const Arg&); + void operator()(const Arg &result) { + (receiver->*memberFun)(result); + } +}; + +template +InvokeWrapper invoke(R *receiver, void (C::*memberFun)(const Arg&)) +{ + InvokeWrapper 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 #include "mainwindow.h" -#if __cplusplus >= 201103L -#include -using std::bind; -namespace placeholders = std::placeholders; -#else -#include -using std::tr1::bind; -namespace placeholders = std::tr1::placeholders; -#endif +template +struct InvokeWrapper { + R *receiver; + void (C::*memberFun)(const Arg&); + void operator()(const Arg &result) { + (receiver->*memberFun)(result); + } +}; + +template +InvokeWrapper invoke(R *receiver, void (C::*memberFun)(const Arg&)) +{ + InvokeWrapper 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] -- cgit v1.2.3