EntryCompletion is an auxiliary object to be used in conjunction with
Entry to provide the completion functionality.
It implements the CellLayout interface, to allow the user to add extra cells to the
TreeView with completion matches.
“Completion functionality” means that when the user modifies the text in the entry, EntryCompletion checks
which rows in the model match the current content of the entry, and displays a list of matches. By default, the matching is done by
comparing the entry text case-insensitively against the text column of the model (see
set_text_column), but this can be overridden with a custom match
function (see set_match_func).
When the user selects a completion, the content of the entry is updated. By default, the content of the entry is replaced by the text
column of the model, but this can be overridden by connecting to the
match_selected signal and updating the entry in the signal handler. Note that you should return true
from the signal handler to suppress the default behaviour.
To add completion functionality to an entry, use set_completion.
In addition to regular completion matches, which will be inserted into the entry when they are selected,
EntryCompletion also allows to display “actions” in the popup window. Their appearance is similar to menuitems, to
differentiate them clearly from completion strings. When an action is selected, the
action_activated signal is emitted.
GtkEntryCompletion uses a TreeModelFilter model to represent the subset of the
entire model that is currently matching. While the GtkEntryCompletion signals
match_selected and
cursor_on_match take the original model and an iter pointing to that
model as arguments, other callbacks and signals (such as CellLayoutDataFuncs
or apply_attributes) will generally take the filter model as argument. As
long as you are only calling @get, this will make no difference to you. If for some
reason, you need the original model, use get_model. Don’t forget to use
convert_iter_to_child_iter to obtain a matching iter.
Example: EntryCompletion:

public class Application : Gtk.Window {
public Application () {
// Prepare Gtk.Window:
this.title = "My Gtk.EntryCompletion";
this.window_position = Gtk.WindowPosition.CENTER;
this.destroy.connect (Gtk.main_quit);
this.set_default_size (350, 70);
// The Entry:
Gtk.Entry entry = new Gtk.Entry ();
this.add (entry);
// The EntryCompletion:
Gtk.EntryCompletion completion = new Gtk.EntryCompletion ();
entry.set_completion (completion);
// Create, fill & register a ListStore:
Gtk.ListStore list_store = new Gtk.ListStore (1, typeof (string));
completion.set_model (list_store);
completion.set_text_column (0);
Gtk.TreeIter iter;
list_store.append (out iter);
list_store.set (iter, 0, "Burgenland");
list_store.append (out iter);
list_store.set (iter, 0, "Carinthia");
list_store.append (out iter);
list_store.set (iter, 0, "Lower Austria");
list_store.append (out iter);
list_store.set (iter, 0, "Upper Austria");
list_store.append (out iter);
list_store.set (iter, 0, "Salzburg");
list_store.append (out iter);
list_store.set (iter, 0, "Styria");
list_store.append (out iter);
list_store.set (iter, 0, "Tyrol");
list_store.append (out iter);
list_store.set (iter, 0, "Vorarlberg");
list_store.append (out iter);
list_store.set (iter, 0, "Vienna");
}
public static int main (string[] args) {
Gtk.init (ref args);
Application app = new Application ();
app.show_all ();
Gtk.main ();
return 0;
}
}
valac --pkg gtk+-3.0 Gtk.EntryCompletion.vala
- public void complete ()
Requests a completion operation, or in other words a refiltering of
the current list with completions, using the current key.
- public string? compute_prefix (string key)
Computes the common prefix that is shared by all rows in
this that start with key
.
- public void delete_action (int index_)
Deletes the action at index_
from
this’s action list.
- public unowned string get_completion_prefix ()
Get the original text entered by the user that triggered the
completion or null if there’s no completion ongoing.
- public unowned Widget get_entry ()
Gets the entry this has been
attached to.
- public bool get_inline_completion ()
Returns whether the common prefix of the possible completions should
be automatically inserted in the entry.
- public bool get_inline_selection ()
Returns true if inline-selection
mode is turned on.
- public int get_minimum_key_length ()
Returns the minimum key length as set for
this.
- public unowned TreeModel? get_model ()
Returns the model the EntryCompletion is
using as data source.
- public bool get_popup_completion ()
Returns whether the completions should be presented in a popup window.
- public bool get_popup_set_width ()
Returns whether the completion popup window will be resized to the
width of the entry.
- public bool get_popup_single_match ()
Returns whether the completion popup window will appear even if there
is only a single match.
- public int get_text_column ()
Returns the column in the model of this
to get strings from.
- public void insert_action_markup (int index_, string markup)
Inserts an action in this’s action
item list at position index_
with markup markup
.
- public void insert_action_text (int index_, string text)
Inserts an action in this’s action
item list at position index_
with text text
.
- public void request_prefix_insertion ()
- public void set_inline_completion (bool inline_completion)
Sets whether the common prefix of the possible completions should be
automatically inserted in the entry.
- public void set_inline_selection (bool inline_selection)
Sets whether it is possible to cycle through the possible completions
inside the entry.
- public void set_match_func (owned EntryCompletionMatchFunc func)
Sets the match function for this to
be func
.
- public void set_minimum_key_length (int length)
Requires the length of the search key for
this to be at least length
.
- public void set_model (TreeModel? model)
Sets the model for a EntryCompletion.
- public void set_popup_completion (bool popup_completion)
Sets whether the completions should be presented in a popup window.
- public void set_popup_set_width (bool popup_set_width)
Sets whether the completion popup window will be resized to be the
same width as the entry.
- public void set_popup_single_match (bool popup_single_match)
Sets whether the completion popup window will appear even if there is
only a single match.
- public void set_text_column (int column)
Convenience function for setting up the most used case of this code: a
completion list with just strings.