ComboBox/ComboBoxEntry don't inherit from CellEditable



Hi,
Shouldn't ComboBox/ComboBoxEntry inherit from CellEditable : The following program verifies it (dynamic casting to CellEditable returns NULL pointers).

I was trying to grab the combo box instance used by CellRendererCombo in the editing_started signal and get a NULL pointer. Any workarounds?

#include <gtkmm.h>
#include <iostream>

void editing_started( Gtk::CellEditable* cell_editable, const Glib::ustring& path ) { std::cout << "========== :" << path << ": " << cell_editable << std::endl;
 try{
   const std::type_info &info = typeid(*cell_editable);
std::cout << "=============Editing started:" << info.name() << std::endl;
 }catch(std::exception &e) {
   std::cout << "============Cannot typeid:"<<e.what()  << std::endl;
 }
}

Gtk::CellEditable* _wr(void *p0) {
 std::cout << " p0:" << p0 ;
 Glib::ObjectBase *ob = Glib::wrap_auto((GObject*)(p0), false);
 std::cout << " ob:" << ob;
 const std::type_info &info = typeid(*ob);
 std::cout << " : " << info.name() ;
 Gtk::CellEditable *ce = dynamic_cast< Gtk::CellEditable* >(ob);
 std::cout << " ce:" << ce << std::endl;
 return ce;
}
int main(int argc, char **argv) {
 Gtk::Main k(argc,argv);
 Gtk::Window w;

 Gtk::TreeModelColumn<Glib::ustring>col1;
 Gtk::TreeModel::ColumnRecord columnRecord;
 columnRecord.add(col1);

 Glib::RefPtr<Gtk::ListStore> ls = Gtk::ListStore::create(columnRecord);
 for(int i=0;i<9;i++) {
   char buf[32];
   snprintf(buf, 32, "Row#%d",i);
   (*(ls->append()))[col1] = buf;
 }

 Gtk::TreeView tv(ls);

 Gtk::CellRendererCombo crc;
 Glib::RefPtr<Gtk::ListStore> ls2 = Gtk::ListStore::create(columnRecord);
 for(int i=0;i<9;i++) {
   char buf[32];
   snprintf(buf, 32, "Item#%d",i);
   (*(ls2->append()))[col1] = buf;
 }
 crc.property_model()=ls2;
 crc.property_editable() = true;
 crc.property_editable_set() = true;
 crc.property_text_column()=0;
 crc.property_has_entry()=true;
 crc.signal_editing_started().connect(sigc::ptr_fun(&editing_started));
 Gtk::TreeViewColumn tvcol("Col1",crc);
 tvcol.add_attribute(crc,"text",col1);

 Gtk::CellRendererText crt;
 crt.property_editable()=true;
 crt.signal_editing_started().connect(sigc::ptr_fun(&editing_started));
 tvcol.pack_start(crt);
 tvcol.add_attribute(crt,"text",col1);


 tv.append_column(tvcol);

 Gtk::ScrolledWindow sw;
 sw.add(tv);

 w.add(sw);
 w.show_all();

 Gtk::ComboBox cb;
 Gtk::ComboBoxEntry cb2;
 Gtk::Entry e;

 _wr((void *)cb.gobj());
 _wr((void *)cb2.gobj());
 _wr((void *)(e.gobj()));

 k.run(w);

 return 0;
}


Thanks,
-karthik

--
------------------------------------------------------------------------
Karthik Ganesan
Director, Software and Instrumentation
HandyLab Inc.
5230 S. State Road, Ste. 100
Ann Arbor, MI 48108
Ph:  734-663-7451 x223
Fax:734-663-7437
------------------------------------------------------------------------



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]