Pass action to cell renderer callback rather than the entry
The entry pointer is only meaningful if completion was triggered by typing or editing in an entry. We shouldn't render a key in results if the arrow button opened the completion popup. We need to check the key in the callback to avoid accidentally working with an entry of a different window.
This commit is contained in:
parent
f733f453d2
commit
f19412bc70
1 changed files with 10 additions and 10 deletions
|
@ -417,7 +417,7 @@ midori_location_action_popup_timeout_cb (gpointer data)
|
||||||
NULL);
|
NULL);
|
||||||
gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (column), renderer,
|
gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (column), renderer,
|
||||||
midori_location_entry_render_text_cb,
|
midori_location_entry_render_text_cb,
|
||||||
action->entry, NULL);
|
action, NULL);
|
||||||
gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
|
gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
|
||||||
|
|
||||||
action->popup = popup;
|
action->popup = popup;
|
||||||
|
@ -517,6 +517,7 @@ midori_location_action_popdown_completion (MidoriLocationAction* location_action
|
||||||
if (G_LIKELY (location_action->popup))
|
if (G_LIKELY (location_action->popup))
|
||||||
{
|
{
|
||||||
gtk_widget_hide (location_action->popup);
|
gtk_widget_hide (location_action->popup);
|
||||||
|
katze_assign (location_action->key, NULL);
|
||||||
gtk_tree_selection_unselect_all (gtk_tree_view_get_selection (
|
gtk_tree_selection_unselect_all (gtk_tree_view_get_selection (
|
||||||
GTK_TREE_VIEW (location_action->treeview)));
|
GTK_TREE_VIEW (location_action->treeview)));
|
||||||
}
|
}
|
||||||
|
@ -1013,13 +1014,13 @@ midori_location_entry_render_text_cb (GtkCellLayout* layout,
|
||||||
GtkTreeIter* iter,
|
GtkTreeIter* iter,
|
||||||
gpointer data)
|
gpointer data)
|
||||||
{
|
{
|
||||||
|
MidoriLocationAction* action = data;
|
||||||
gchar* uri;
|
gchar* uri;
|
||||||
gchar* title;
|
gchar* title;
|
||||||
GdkColor* background;
|
GdkColor* background;
|
||||||
gchar* desc;
|
gchar* desc;
|
||||||
gchar* desc_uri;
|
gchar* desc_uri;
|
||||||
gchar* desc_title;
|
gchar* desc_title;
|
||||||
GtkWidget* entry;
|
|
||||||
const gchar* str;
|
const gchar* str;
|
||||||
gchar* key;
|
gchar* key;
|
||||||
gchar* start;
|
gchar* start;
|
||||||
|
@ -1028,16 +1029,9 @@ midori_location_entry_render_text_cb (GtkCellLayout* layout,
|
||||||
gchar** parts;
|
gchar** parts;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
entry = data;
|
|
||||||
|
|
||||||
gtk_tree_model_get (model, iter, URI_COL, &uri, TITLE_COL, &title,
|
gtk_tree_model_get (model, iter, URI_COL, &uri, TITLE_COL, &title,
|
||||||
BACKGROUND_COL, &background, -1);
|
BACKGROUND_COL, &background, -1);
|
||||||
|
|
||||||
desc = desc_uri = desc_title = key = NULL;
|
|
||||||
str = gtk_entry_get_text (GTK_ENTRY (entry));
|
|
||||||
if (!str)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (background != NULL) /* A search engine action */
|
if (background != NULL) /* A search engine action */
|
||||||
{
|
{
|
||||||
g_object_set (renderer, "text", title,
|
g_object_set (renderer, "text", title,
|
||||||
|
@ -1047,6 +1041,12 @@ midori_location_entry_render_text_cb (GtkCellLayout* layout,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
desc = desc_uri = desc_title = key = NULL;
|
||||||
|
if (action->key)
|
||||||
|
str = action->key;
|
||||||
|
else
|
||||||
|
str = "";
|
||||||
|
|
||||||
key = g_utf8_strdown (str, -1);
|
key = g_utf8_strdown (str, -1);
|
||||||
len = strlen (key);
|
len = strlen (key);
|
||||||
|
|
||||||
|
@ -1274,7 +1274,7 @@ midori_location_action_connect_proxy (GtkAction* action,
|
||||||
g_object_set_data (G_OBJECT (renderer), "location-action", action);
|
g_object_set_data (G_OBJECT (renderer), "location-action", action);
|
||||||
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (entry), renderer, TRUE);
|
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (entry), renderer, TRUE);
|
||||||
gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (entry),
|
gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (entry),
|
||||||
renderer, midori_location_entry_render_text_cb, child, NULL);
|
renderer, midori_location_entry_render_text_cb, action, NULL);
|
||||||
|
|
||||||
gtk_combo_box_set_active (GTK_COMBO_BOX (entry), -1);
|
gtk_combo_box_set_active (GTK_COMBO_BOX (entry), -1);
|
||||||
if (location_action->history)
|
if (location_action->history)
|
||||||
|
|
Loading…
Reference in a new issue