diff options
author | Marco Pesenti Gritti <marco@gnome.org> | 2004-02-11 16:19:28 +0800 |
---|---|---|
committer | Marco Pesenti Gritti <marco@src.gnome.org> | 2004-02-11 16:19:28 +0800 |
commit | 2767a4325bcdc1731f7abfe58a79831a83badd35 (patch) | |
tree | 807373067b6b5182a812a0f23342b8fb77b2c692 /src/ephy-completion-model.c | |
parent | edb02d56a6b998002e83528bb1de8bd0b8a02b43 (diff) | |
download | gsoc2013-epiphany-2767a4325bcdc1731f7abfe58a79831a83badd35.tar gsoc2013-epiphany-2767a4325bcdc1731f7abfe58a79831a83badd35.tar.gz gsoc2013-epiphany-2767a4325bcdc1731f7abfe58a79831a83badd35.tar.bz2 gsoc2013-epiphany-2767a4325bcdc1731f7abfe58a79831a83badd35.tar.lz gsoc2013-epiphany-2767a4325bcdc1731f7abfe58a79831a83badd35.tar.xz gsoc2013-epiphany-2767a4325bcdc1731f7abfe58a79831a83badd35.tar.zst gsoc2013-epiphany-2767a4325bcdc1731f7abfe58a79831a83badd35.zip |
Better autocompletion sorting logic.
2004-02-11 Marco Pesenti Gritti <marco@gnome.org>
* src/ephy-completion-model.c: (is_base_address),
(init_relevance_col):
Better autocompletion sorting logic.
* src/window-commands.c: (window_cmd_help_about):
s/translator_credits/translator-credits
Diffstat (limited to 'src/ephy-completion-model.c')
-rw-r--r-- | src/ephy-completion-model.c | 57 |
1 files changed, 46 insertions, 11 deletions
diff --git a/src/ephy-completion-model.c b/src/ephy-completion-model.c index 3f840d43d..fd5437934 100644 --- a/src/ephy-completion-model.c +++ b/src/ephy-completion-model.c @@ -346,23 +346,58 @@ init_keywords_col (GValue *value, EphyNode *node, int group) g_value_set_string (value, text); } +static gboolean +is_base_address (const char *address) +{ + int slashes = 0; + + if (address == NULL) return FALSE; + + while (*address != '\0') + { + if (*address == '/') slashes++; + + /* Base uris has 3 slashes like http://www.gnome.org/ */ + if (slashes == 4) return FALSE; + + address++; + } + + return TRUE; +} + static void init_relevance_col (GValue *value, EphyNode *node, int group) { - int relevance, visits; + int relevance = 0; - switch (group) + /* We have three ordered groups: history's base + addresses, bookmarks, deep history addresses */ + + if (group == BOOKMARKS_GROUP) { - case HISTORY_GROUP: - visits = ephy_node_get_property_int - (node, EPHY_NODE_PAGE_PROP_VISITS); + relevance = 1 << 5; + } + else if (group == HISTORY_GROUP) + { + const char *address; + int visits; + + visits = ephy_node_get_property_int + (node, EPHY_NODE_PAGE_PROP_VISITS); + address = ephy_node_get_property_string + (node, EPHY_NODE_PAGE_PROP_LOCATION); + + visits = MAX (visits, (1 << 5) - 1); + + if (is_base_address (address)) + { + relevance = visits << 10; + } + else + { relevance = visits; - break; - case BOOKMARKS_GROUP: - relevance = 2000; - break; - default: - relevance = 0; + } } g_value_set_int (value, relevance); |