void NetLogGuiGtkWindow::on_service_removed(fawkes::NetworkService *service) { bool removed = false; do { removed = false; for (int i = 0; ! removed && (i < ntb_logviewers.get_n_pages()); ++i) { Gtk::Widget *child = ntb_logviewers.get_nth_page(i); Gtk::Widget *tab_label = ntb_logviewers.get_tab_label(*child); Gtk::HBox *hbox = dynamic_cast<Gtk::HBox *>(tab_label); if ( hbox ) { std::vector<Gtk::Widget *> children = hbox->get_children(); Gtk::Widget *w = children[2]; if (w) { Gtk::Label *label = dynamic_cast<Gtk::Label *>(w); if ( label ) { Glib::ustring s = Glib::ustring(service->name()) + "::" + service->type() + "::" + service->domain(); if (label->get_text() == s) { ntb_logviewers.remove_page(i); removed = true; } } } } } } while (removed); if ( ntb_logviewers.get_n_pages() == 0 ) { ntb_logviewers.hide(); //Gtk::Container *thiscon = this; //thiscon->remove(ntb_logviewers); //add(lab_no_connection); lab_no_connection->show(); } }