show();
}
+void Scrollbar::set_adjustment(Gtk::Adjustment& adjustment) {
+ Gtk::VScrollbar::set_adjustment(adjustment);
+ adjustment.signal_changed().connect(
+ sigc::mem_fun(*this, &Scrollbar::on_adjustment_changed));
+}
+
void ScrolledContainer::add(Gtk::Widget& child) {
child.add_events(Gdk::SCROLL_MASK);
return true;
}
+void ScrolledContainer::set_adjustment(Gtk::Adjustment& adjustment) {
+ scrollbar_.set_adjustment(adjustment);
+}
} // namespace dialektos
ThreadWindow::ThreadWindow(std::auto_ptr<bbs_detail::Base> bbs) :
SuperClass(),
- text_view_(),
- scrolled_(text_view_.get_adjustment()),
+ text_view_(new text_view::TextView),
+ scrolled_(text_view_->get_adjustment()),
bbs_(bbs), http_getter_(), idx_() {
// additional menuitems for board window
set_default_size(400,300);
- scrolled_.add(text_view_);
+ scrolled_.add(*text_view_);
add(scrolled_);
- text_view_.signal_button_press_event().connect_notify(
+ text_view_->signal_button_press_event().connect_notify(
sigc::mem_fun(*this, &ThreadWindow::on_child_button_press));
show_all();
if (bbs_) {
- bbs_->load_thread(text_view_);
- text_view_.relayout();
- text_view_.queue_draw();
+ bbs_->load_thread(*text_view_);
+ text_view_->relayout();
+ text_view_->queue_draw();
std::cout <<
to_simple_string(microsec_clock::local_time() - start) << std::endl;
const int code = response.get_status_line().get_code();
if (code != 200 && code != 206) return;
- bbs_->load_thread_from_string(response.get_content(), text_view_);
- text_view_.relayout();
- text_view_.queue_draw();
+ if (code == 200) {
+ // initialize text_view_
+ scrolled_.remove(*text_view_);
+ text_view_.reset(new text_view::TextView);
+ scrolled_.set_adjustment(text_view_->get_adjustment());
+ scrolled_.add(*text_view_);
+
+ text_view_->signal_button_press_event().connect_notify(
+ sigc::mem_fun(*this, &ThreadWindow::on_child_button_press));
+ text_view_->show();
+ }
+
+ bbs_->load_thread_from_string(response.get_content(), *text_view_);
+ text_view_->relayout();
+ text_view_->queue_draw();
save_content(response);
}
idx_.last_modified_ = response.get_header().get_last_modified();
idx_.etag_ = response.get_header().get_etag();
- idx_.line_count_ = text_view_.get_res_num();
+ idx_.line_count_ = text_view_->get_res_num();
idx_.to_xml(boost::filesystem::path(bbs_->get_thread_idx_path()));
}