-EntryCompletion() : m_store( 0 ), m_idleUpdate( UpdateCaller( *this ) ){
-}
-
-void connect( ui::Entry entry ){
- if ( !m_store ) {
- m_store = ui::ListStore(gtk_list_store_new( 1, G_TYPE_STRING ));
-
- fill();
-
- StringList().connect( IdleDraw::QueueDrawCaller( m_idleUpdate ) );
- }
-
- auto completion = ui::EntryCompletion(gtk_entry_completion_new());
- gtk_entry_set_completion( entry, completion );
- gtk_entry_completion_set_model( completion, GTK_TREE_MODEL( m_store ) );
- gtk_entry_completion_set_text_column( completion, 0 );
-}
-
-void append( const char* string ){
- GtkTreeIter iter;
- gtk_list_store_append( m_store, &iter );
- gtk_list_store_set( m_store, &iter, 0, string, -1 );
-}
-typedef MemberCaller1<EntryCompletion, const char*, &EntryCompletion::append> AppendCaller;
-
-void fill(){
- StringList().forEach( AppendCaller( *this ) );
-}
-
-void clear(){
- gtk_list_store_clear( m_store );
-}
-
-void update(){
- clear();
- fill();
-}
-typedef MemberCaller<EntryCompletion, &EntryCompletion::update> UpdateCaller;
+ EntryCompletion() : m_store(ui::null), m_idleUpdate(UpdateCaller(*this))
+ {
+ }
+
+ void connect(ui::Entry entry);
+
+ void append(const char *string);
+
+ using AppendCaller = MemberCaller<EntryCompletion, void(const char *), &EntryCompletion::append>;
+
+ void fill();
+
+ void clear();
+
+ void update();
+
+ using UpdateCaller = MemberCaller<EntryCompletion, void(), &EntryCompletion::update>;