Use the correct completion model and no static
Since the model was a static variable and only set when the popup was created, we ended up using an obsolete model in case multiple windows were opened and closed. As a small optimization we don't need to retrieve the database pointer except when compiling the statement initially.
This commit is contained in:
parent
20602673fe
commit
e94edca766
1 changed files with 8 additions and 9 deletions
|
@ -335,10 +335,8 @@ static gboolean
|
||||||
midori_location_action_popup_timeout_cb (gpointer data)
|
midori_location_action_popup_timeout_cb (gpointer data)
|
||||||
{
|
{
|
||||||
MidoriLocationAction* action = data;
|
MidoriLocationAction* action = data;
|
||||||
static GtkTreeModel* model = NULL;
|
|
||||||
GtkTreeViewColumn* column;
|
GtkTreeViewColumn* column;
|
||||||
GtkListStore* store;
|
GtkListStore* store;
|
||||||
sqlite3* db;
|
|
||||||
gint result;
|
gint result;
|
||||||
static sqlite3_stmt* stmt;
|
static sqlite3_stmt* stmt;
|
||||||
const gchar* sqlcmd;
|
const gchar* sqlcmd;
|
||||||
|
@ -353,9 +351,10 @@ midori_location_action_popup_timeout_cb (gpointer data)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
db = g_object_get_data (G_OBJECT (action->history), "db");
|
|
||||||
if (!stmt)
|
if (!stmt)
|
||||||
{
|
{
|
||||||
|
sqlite3* db;
|
||||||
|
db = g_object_get_data (G_OBJECT (action->history), "db");
|
||||||
sqlcmd = "SELECT uri, title FROM history WHERE uri LIKE ? OR title LIKE ?"
|
sqlcmd = "SELECT uri, title FROM history WHERE uri LIKE ? OR title LIKE ?"
|
||||||
" GROUP BY uri ORDER BY count() DESC LIMIT ?";
|
" GROUP BY uri ORDER BY count() DESC LIMIT ?";
|
||||||
sqlite3_prepare_v2 (db, sqlcmd, -1, &stmt, NULL);
|
sqlite3_prepare_v2 (db, sqlcmd, -1, &stmt, NULL);
|
||||||
|
@ -367,7 +366,7 @@ midori_location_action_popup_timeout_cb (gpointer data)
|
||||||
result = sqlite3_step (stmt);
|
result = sqlite3_step (stmt);
|
||||||
if (result != SQLITE_ROW && !action->search_engines)
|
if (result != SQLITE_ROW && !action->search_engines)
|
||||||
{
|
{
|
||||||
g_print (_("Failed to select from history: %s\n"), sqlite3_errmsg (db));
|
g_print (_("Failed to select from history\n"));
|
||||||
sqlite3_reset (stmt);
|
sqlite3_reset (stmt);
|
||||||
sqlite3_clear_bindings (stmt);
|
sqlite3_clear_bindings (stmt);
|
||||||
midori_location_action_popdown_completion (action);
|
midori_location_action_popdown_completion (action);
|
||||||
|
@ -376,6 +375,7 @@ midori_location_action_popup_timeout_cb (gpointer data)
|
||||||
|
|
||||||
if (G_UNLIKELY (!action->popup))
|
if (G_UNLIKELY (!action->popup))
|
||||||
{
|
{
|
||||||
|
GtkTreeModel* model = NULL;
|
||||||
GtkWidget* popup;
|
GtkWidget* popup;
|
||||||
GtkWidget* scrolled;
|
GtkWidget* scrolled;
|
||||||
GtkWidget* treeview;
|
GtkWidget* treeview;
|
||||||
|
@ -425,7 +425,7 @@ midori_location_action_popup_timeout_cb (gpointer data)
|
||||||
G_CALLBACK (gtk_widget_destroyed), &action->popup);
|
G_CALLBACK (gtk_widget_destroyed), &action->popup);
|
||||||
}
|
}
|
||||||
|
|
||||||
store = GTK_LIST_STORE (model);
|
store = GTK_LIST_STORE (action->completion_model);
|
||||||
gtk_list_store_clear (store);
|
gtk_list_store_clear (store);
|
||||||
|
|
||||||
matches = searches = 0;
|
matches = searches = 0;
|
||||||
|
@ -1147,7 +1147,6 @@ midori_location_action_entry_popup_cb (GtkComboBox* combo_box,
|
||||||
{
|
{
|
||||||
#if HAVE_SQLITE
|
#if HAVE_SQLITE
|
||||||
GtkListStore* store;
|
GtkListStore* store;
|
||||||
sqlite3* db;
|
|
||||||
gint result;
|
gint result;
|
||||||
const gchar* sqlcmd;
|
const gchar* sqlcmd;
|
||||||
static sqlite3_stmt* stmt;
|
static sqlite3_stmt* stmt;
|
||||||
|
@ -1156,9 +1155,10 @@ midori_location_action_entry_popup_cb (GtkComboBox* combo_box,
|
||||||
store = GTK_LIST_STORE (gtk_combo_box_get_model (combo_box));
|
store = GTK_LIST_STORE (gtk_combo_box_get_model (combo_box));
|
||||||
gtk_list_store_clear (store);
|
gtk_list_store_clear (store);
|
||||||
|
|
||||||
db = g_object_get_data (G_OBJECT (location_action->history), "db");
|
|
||||||
if (!stmt)
|
if (!stmt)
|
||||||
{
|
{
|
||||||
|
sqlite3* db;
|
||||||
|
db = g_object_get_data (G_OBJECT (location_action->history), "db");
|
||||||
sqlcmd = "SELECT uri, title FROM history"
|
sqlcmd = "SELECT uri, title FROM history"
|
||||||
" GROUP BY uri ORDER BY count() DESC LIMIT ?";
|
" GROUP BY uri ORDER BY count() DESC LIMIT ?";
|
||||||
sqlite3_prepare_v2 (db, sqlcmd, -1, &stmt, NULL);
|
sqlite3_prepare_v2 (db, sqlcmd, -1, &stmt, NULL);
|
||||||
|
@ -1168,8 +1168,7 @@ midori_location_action_entry_popup_cb (GtkComboBox* combo_box,
|
||||||
result = sqlite3_step (stmt);
|
result = sqlite3_step (stmt);
|
||||||
if (result != SQLITE_ROW)
|
if (result != SQLITE_ROW)
|
||||||
{
|
{
|
||||||
g_print (_("Failed to execute database statement: %s\n"),
|
g_print (_("Failed to execute database statement\n"));
|
||||||
sqlite3_errmsg (db));
|
|
||||||
sqlite3_reset (stmt);
|
sqlite3_reset (stmt);
|
||||||
sqlite3_clear_bindings (stmt);
|
sqlite3_clear_bindings (stmt);
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in a new issue