Project

General

Profile

Bug #5684 ยป fix-web-widget-signal-bookkeeping.patch

Jan Lindemann, 04/27/2017 12:47 PM

View differences:

src/Wt/WWebWidget
Signal<bool> scrollVisibilityChanged_;
JSignal<bool> *jsScrollVisibilityChanged_;
OtherImpl(WWebWidget *const self);
OtherImpl(WWebWidget *const self, const char *id = 0);
~OtherImpl();
};
src/Wt/WWebWidget.C
data(aData)
{ }
WWebWidget::OtherImpl::OtherImpl(WWebWidget *const self)
: id_(0),
WWebWidget::OtherImpl::OtherImpl(WWebWidget *const self, const char *id)
: id_(id ? new std::string(id) : 0),
attributes_(0),
jsMembers_(0),
jsStatements_(0),
......
childrenChanged_(self),
scrollVisibilityMargin_(0),
scrollVisibilityChanged_(self),
jsScrollVisibilityChanged_(new JSignal<bool>(self, "scrollVisibilityChanged"))
jsScrollVisibilityChanged_(NULL)
{
self->otherImpl_ = this; // necessary, because next line calls WWebWidget::id()
jsScrollVisibilityChanged_ = new JSignal<bool>(self, "scrollVisibilityChanged");
jsScrollVisibilityChanged_->connect(self, &WWebWidget::jsScrollVisibilityChanged);
}
......
void WWebWidget::setId(const std::string& id)
{
if (!otherImpl_)
otherImpl_ = new OtherImpl(this);
if (!otherImpl_->id_)
otherImpl_->id_ = new std::string();
*otherImpl_->id_ = id;
if (!otherImpl_) {
otherImpl_ = new OtherImpl(this, id.c_str());
} else {
if (!otherImpl_->id_)
otherImpl_->id_ = new std::string();
*otherImpl_->id_ = id;
}
}
void WWebWidget::setSelectable(bool selectable)
    (1-1/1)