Refactor location action to not use MidoriLocationEntryItem
This commit is contained in:
parent
acb2104128
commit
1998219933
3 changed files with 42 additions and 51 deletions
|
@ -45,6 +45,13 @@ struct _MidoriLocationActionClass
|
||||||
GtkActionClass parent_class;
|
GtkActionClass parent_class;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef struct _MidoriLocationEntryItem
|
||||||
|
{
|
||||||
|
GdkPixbuf* favicon;
|
||||||
|
const gchar* uri;
|
||||||
|
const gchar* title;
|
||||||
|
} MidoriLocationEntryItem;
|
||||||
|
|
||||||
G_DEFINE_TYPE (MidoriLocationAction, midori_location_action, GTK_TYPE_ACTION)
|
G_DEFINE_TYPE (MidoriLocationAction, midori_location_action, GTK_TYPE_ACTION)
|
||||||
|
|
||||||
enum
|
enum
|
||||||
|
@ -843,42 +850,52 @@ midori_location_action_iter_insert (MidoriLocationAction* location_action,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
midori_location_action_set_item (MidoriLocationAction* location_action,
|
midori_location_action_set_item (MidoriLocationAction* location_action,
|
||||||
MidoriLocationEntryItem* item,
|
GdkPixbuf* icon,
|
||||||
gboolean increment_visits,
|
const gchar* uri,
|
||||||
gboolean filter)
|
const gchar* title,
|
||||||
|
gboolean increment_visits,
|
||||||
|
gboolean filter)
|
||||||
{
|
{
|
||||||
GtkTreeModel* model;
|
GtkTreeModel* model;
|
||||||
GtkTreeModel* filter_model;
|
GtkTreeModel* filter_model;
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
GdkPixbuf* icon;
|
|
||||||
GdkPixbuf* new_icon;
|
GdkPixbuf* new_icon;
|
||||||
gint visits = 0;
|
gint visits = 0;
|
||||||
|
gchar* _title = NULL;
|
||||||
|
GdkPixbuf* original_icon = NULL;
|
||||||
|
|
||||||
model = location_action->model;
|
model = location_action->model;
|
||||||
|
|
||||||
if (midori_location_action_iter_insert (location_action,
|
if (midori_location_action_iter_insert (location_action, uri, &iter, G_MAXINT))
|
||||||
item->uri, &iter, G_MAXINT))
|
|
||||||
gtk_tree_model_get (model, &iter, VISITS_COL, &visits, -1);
|
gtk_tree_model_get (model, &iter, VISITS_COL, &visits, -1);
|
||||||
|
|
||||||
|
gtk_tree_model_get (model, &iter, FAVICON_COL, &original_icon, -1);
|
||||||
|
|
||||||
if (increment_visits)
|
if (increment_visits)
|
||||||
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
|
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
|
||||||
VISITS_COL, ++visits, VISIBLE_COL, TRUE, -1);
|
VISITS_COL, ++visits, VISIBLE_COL, TRUE, -1);
|
||||||
|
|
||||||
/* Ensure we keep the title if we added the same URI with a title before */
|
/* Ensure we keep the title if we added the same URI with a title before */
|
||||||
if (!item->title)
|
if (!title)
|
||||||
gtk_tree_model_get (model, &iter, TITLE_COL, &item->title, -1);
|
{
|
||||||
|
gtk_tree_model_get (model, &iter, TITLE_COL, &_title, -1);
|
||||||
|
title = _title;
|
||||||
|
}
|
||||||
|
|
||||||
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
|
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
|
||||||
URI_COL, item->uri, TITLE_COL, item->title, YALIGN_COL, 0.25, -1);
|
URI_COL, uri, TITLE_COL, title, YALIGN_COL, 0.25, -1);
|
||||||
|
g_free (_title);
|
||||||
|
|
||||||
gtk_tree_model_get (model, &iter, FAVICON_COL, &icon, -1);
|
if (icon)
|
||||||
if (item->favicon)
|
new_icon = icon;
|
||||||
new_icon = item->favicon;
|
else if (original_icon)
|
||||||
else if (!icon)
|
{
|
||||||
new_icon = location_action->default_icon;
|
|
||||||
else
|
|
||||||
new_icon = NULL;
|
new_icon = NULL;
|
||||||
|
g_object_unref (original_icon);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
new_icon = location_action->default_icon;
|
||||||
if (new_icon)
|
if (new_icon)
|
||||||
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
|
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
|
||||||
FAVICON_COL, new_icon, -1);
|
FAVICON_COL, new_icon, -1);
|
||||||
|
@ -1040,7 +1057,7 @@ midori_location_action_entry_changed_cb (GtkComboBox* combo_box,
|
||||||
GTK_ICON_ENTRY_PRIMARY, pixbuf);
|
GTK_ICON_ENTRY_PRIMARY, pixbuf);
|
||||||
g_object_unref (pixbuf);
|
g_object_unref (pixbuf);
|
||||||
katze_assign (location_action->text, uri);
|
katze_assign (location_action->text, uri);
|
||||||
katze_assign (location_action->uri, uri);
|
katze_assign (location_action->uri, g_strdup (uri));
|
||||||
|
|
||||||
g_signal_emit (location_action, signals[ACTIVE_CHANGED], 0,
|
g_signal_emit (location_action, signals[ACTIVE_CHANGED], 0,
|
||||||
gtk_combo_box_get_active (combo_box));
|
gtk_combo_box_get_active (combo_box));
|
||||||
|
@ -1268,18 +1285,13 @@ void
|
||||||
midori_location_action_add_uri (MidoriLocationAction* location_action,
|
midori_location_action_add_uri (MidoriLocationAction* location_action,
|
||||||
const gchar* uri)
|
const gchar* uri)
|
||||||
{
|
{
|
||||||
MidoriLocationEntryItem item;
|
|
||||||
|
|
||||||
g_return_if_fail (MIDORI_IS_LOCATION_ACTION (location_action));
|
g_return_if_fail (MIDORI_IS_LOCATION_ACTION (location_action));
|
||||||
g_return_if_fail (uri != NULL);
|
g_return_if_fail (uri != NULL);
|
||||||
|
|
||||||
if (midori_location_action_is_frozen (location_action))
|
if (midori_location_action_is_frozen (location_action))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
item.favicon = NULL;
|
midori_location_action_set_item (location_action, NULL, uri, NULL, TRUE, TRUE);
|
||||||
item.uri = uri;
|
|
||||||
item.title = NULL;
|
|
||||||
midori_location_action_set_item (location_action, &item, TRUE, TRUE);
|
|
||||||
|
|
||||||
katze_assign (location_action->uri, g_strdup (uri));
|
katze_assign (location_action->uri, g_strdup (uri));
|
||||||
}
|
}
|
||||||
|
@ -1293,28 +1305,22 @@ midori_location_action_add_item (MidoriLocationAction* location_action,
|
||||||
GSList* proxies;
|
GSList* proxies;
|
||||||
GtkWidget* location_entry;
|
GtkWidget* location_entry;
|
||||||
GtkWidget* entry;
|
GtkWidget* entry;
|
||||||
MidoriLocationEntryItem item;
|
|
||||||
|
|
||||||
g_return_if_fail (MIDORI_IS_LOCATION_ACTION (location_action));
|
g_return_if_fail (MIDORI_IS_LOCATION_ACTION (location_action));
|
||||||
g_return_if_fail (uri != NULL);
|
g_return_if_fail (uri != NULL);
|
||||||
g_return_if_fail (title != NULL);
|
g_return_if_fail (title != NULL);
|
||||||
g_return_if_fail (!icon || GDK_IS_PIXBUF (icon));
|
g_return_if_fail (!icon || GDK_IS_PIXBUF (icon));
|
||||||
|
|
||||||
item.favicon = icon;
|
midori_location_action_set_item (location_action, icon, uri, title, TRUE, FALSE);
|
||||||
item.uri = uri;
|
|
||||||
item.title = title;
|
|
||||||
midori_location_action_set_item (location_action, &item, TRUE, FALSE);
|
|
||||||
|
|
||||||
if (midori_location_action_is_frozen (location_action))
|
if (midori_location_action_is_frozen (location_action))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
katze_assign (location_action->uri, g_strdup (uri));
|
|
||||||
|
|
||||||
proxies = gtk_action_get_proxies (GTK_ACTION (location_action));
|
proxies = gtk_action_get_proxies (GTK_ACTION (location_action));
|
||||||
|
|
||||||
|
if (!g_strcmp0 (location_action->uri, uri))
|
||||||
for (; proxies != NULL; proxies = g_slist_next (proxies))
|
for (; proxies != NULL; proxies = g_slist_next (proxies))
|
||||||
if (GTK_IS_TOOL_ITEM (proxies->data) &&
|
if (GTK_IS_TOOL_ITEM (proxies->data))
|
||||||
!strcmp (location_action->uri, uri))
|
|
||||||
{
|
{
|
||||||
location_entry = midori_location_action_entry_for_proxy (proxies->data);
|
location_entry = midori_location_action_entry_for_proxy (proxies->data);
|
||||||
entry = gtk_bin_get_child (GTK_BIN (location_entry));
|
entry = gtk_bin_get_child (GTK_BIN (location_entry));
|
||||||
|
@ -1332,22 +1338,18 @@ midori_location_action_set_icon_for_uri (MidoriLocationAction* location_action,
|
||||||
GSList* proxies;
|
GSList* proxies;
|
||||||
GtkWidget* location_entry;
|
GtkWidget* location_entry;
|
||||||
GtkWidget* entry;
|
GtkWidget* entry;
|
||||||
MidoriLocationEntryItem item;
|
|
||||||
|
|
||||||
g_return_if_fail (MIDORI_IS_LOCATION_ACTION (location_action));
|
g_return_if_fail (MIDORI_IS_LOCATION_ACTION (location_action));
|
||||||
g_return_if_fail (!icon || GDK_IS_PIXBUF (icon));
|
g_return_if_fail (!icon || GDK_IS_PIXBUF (icon));
|
||||||
g_return_if_fail (uri != NULL);
|
g_return_if_fail (uri != NULL);
|
||||||
|
|
||||||
item.favicon = icon;
|
midori_location_action_set_item (location_action, icon, uri, NULL, FALSE, TRUE);
|
||||||
item.uri = uri;
|
|
||||||
item.title = NULL;
|
|
||||||
midori_location_action_set_item (location_action, &item, FALSE, TRUE);
|
|
||||||
|
|
||||||
proxies = gtk_action_get_proxies (GTK_ACTION (location_action));
|
proxies = gtk_action_get_proxies (GTK_ACTION (location_action));
|
||||||
|
|
||||||
|
if (!g_strcmp0 (location_action->uri, uri))
|
||||||
for (; proxies != NULL; proxies = g_slist_next (proxies))
|
for (; proxies != NULL; proxies = g_slist_next (proxies))
|
||||||
if (GTK_IS_TOOL_ITEM (proxies->data) &&
|
if (GTK_IS_TOOL_ITEM (proxies->data))
|
||||||
!g_strcmp0 (location_action->uri, uri))
|
|
||||||
{
|
{
|
||||||
location_entry = midori_location_action_entry_for_proxy (proxies->data);
|
location_entry = midori_location_action_entry_for_proxy (proxies->data);
|
||||||
entry = gtk_bin_get_child (GTK_BIN (location_entry));
|
entry = gtk_bin_get_child (GTK_BIN (location_entry));
|
||||||
|
@ -1368,10 +1370,7 @@ midori_location_action_set_title_for_uri (MidoriLocationAction* location_action,
|
||||||
g_return_if_fail (title != NULL);
|
g_return_if_fail (title != NULL);
|
||||||
g_return_if_fail (uri != NULL);
|
g_return_if_fail (uri != NULL);
|
||||||
|
|
||||||
item.favicon = NULL;
|
midori_location_action_set_item (location_action, NULL, uri, title, FALSE, TRUE);
|
||||||
item.uri = uri;
|
|
||||||
item.title = title;
|
|
||||||
midori_location_action_set_item (location_action, &item, FALSE, TRUE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -34,13 +34,6 @@ G_BEGIN_DECLS
|
||||||
typedef struct _MidoriLocationAction MidoriLocationAction;
|
typedef struct _MidoriLocationAction MidoriLocationAction;
|
||||||
typedef struct _MidoriLocationActionClass MidoriLocationActionClass;
|
typedef struct _MidoriLocationActionClass MidoriLocationActionClass;
|
||||||
|
|
||||||
struct _MidoriLocationEntryItem
|
|
||||||
{
|
|
||||||
GdkPixbuf* favicon;
|
|
||||||
const gchar* uri;
|
|
||||||
const gchar* title;
|
|
||||||
};
|
|
||||||
|
|
||||||
GType
|
GType
|
||||||
midori_location_action_get_type (void);
|
midori_location_action_get_type (void);
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,6 @@ G_BEGIN_DECLS
|
||||||
|
|
||||||
typedef struct _MidoriLocationEntry MidoriLocationEntry;
|
typedef struct _MidoriLocationEntry MidoriLocationEntry;
|
||||||
typedef struct _MidoriLocationEntryClass MidoriLocationEntryClass;
|
typedef struct _MidoriLocationEntryClass MidoriLocationEntryClass;
|
||||||
typedef struct _MidoriLocationEntryItem MidoriLocationEntryItem;
|
|
||||||
|
|
||||||
GType
|
GType
|
||||||
midori_location_entry_get_type (void);
|
midori_location_entry_get_type (void);
|
||||||
|
|
Loading…
Reference in a new issue