//------------------------------------------------------------------------------ bool mforms::gtk::MenuItemImpl::create_menu_item(mforms::MenuItem *item, const std::string &label, const mforms::MenuItemType type) { Gtk::MenuItem *mi = cast<Gtk::MenuItem *>(item->get_data_ptr()); if (mi) { item->set_data(0); delete mi; } if (type == mforms::SeparatorMenuItem) item->set_data(Gtk::manage(new Gtk::SeparatorMenuItem())); else { if (type == mforms::CheckedMenuItem) { Gtk::CheckMenuItem *ci = Gtk::manage(new Gtk::CheckMenuItem(label)); item->set_data(ci); } else item->set_data(Gtk::manage(new Gtk::MenuItem(label))); } mi = cast<Gtk::MenuItem *>(item->get_data_ptr()); if (mi) { mi->show(); if (type != mforms::SeparatorMenuItem) { mi->set_use_underline(true); mi->signal_activate().connect(sigc::bind(sigc::ptr_fun(process_click), mi, item)); } } return mi; }