[Xfce4-commits] <xfce4-clipman-plugin:master> Bug #8307: Handle images and texts as one stack
Mike Massonnet
noreply at xfce.org
Thu Mar 8 21:36:01 CET 2012
Updating branch refs/heads/master
to 9060990c5230afa34e92c247a9f30f04bf1b66ba (commit)
from aa531f10efab824eb085aabd66056ccf1a3139df (commit)
commit 9060990c5230afa34e92c247a9f30f04bf1b66ba
Author: Mike Massonnet <mmassonnet at xfce.org>
Date: Thu Mar 8 21:31:11 2012 +0100
Bug #8307: Handle images and texts as one stack
The images and texts are handle in two lists, but the History class
returns a copy of a list named in intern "items" that is a copy of
the pointers from the images and texts lists.
panel-plugin/history.c | 42 ++++++++++++++++++++++++------------------
1 files changed, 24 insertions(+), 18 deletions(-)
diff --git a/panel-plugin/history.c b/panel-plugin/history.c
index 4094945..87a2d44 100644
--- a/panel-plugin/history.c
+++ b/panel-plugin/history.c
@@ -40,8 +40,9 @@ G_DEFINE_TYPE (ClipmanHistory, clipman_history, G_TYPE_OBJECT)
struct _ClipmanHistoryPrivate
{
- GSList *texts;
- GSList *images;
+ GSList *_texts;
+ GSList *_images;
+ GSList *items;
const ClipmanHistoryItem *item_to_restore;
guint max_texts_in_history;
guint max_images_in_history;
@@ -108,12 +109,12 @@ _clipman_history_add_item (ClipmanHistory *history,
switch (item->type)
{
case CLIPMAN_HISTORY_TYPE_TEXT:
- list = history->priv->texts;
+ list = history->priv->_texts;
max_items = history->priv->max_texts_in_history;
break;
case CLIPMAN_HISTORY_TYPE_IMAGE:
- list = history->priv->images;
+ list = history->priv->_images;
max_items = history->priv->max_images_in_history;
break;
@@ -128,23 +129,25 @@ _clipman_history_add_item (ClipmanHistory *history,
DBG ("Delete oldest content from the history");
last = g_slist_last (list);
__clipman_history_item_free (last->data);
+ history->priv->items = g_slist_remove (history->priv->items, last->data);
list = g_slist_delete_link (list, last);
list_length--;
}
/* Add the new item to the history */
list = g_slist_prepend (list, item);
+ history->priv->items = g_slist_prepend (history->priv->items, item);
history->priv->item_to_restore = item;
/* Update list pointer in private data */
switch (item->type)
{
case CLIPMAN_HISTORY_TYPE_TEXT:
- history->priv->texts = list;
+ history->priv->_texts = list;
break;
case CLIPMAN_HISTORY_TYPE_IMAGE:
- history->priv->images = list;
+ history->priv->_images = list;
break;
default:
@@ -211,18 +214,19 @@ clipman_history_add_text (ClipmanHistory *history,
gchar *tmp1, *tmp2;
const gchar *offset;
gint preview_length = 48;
- GSList *list;
+ GSList *link;
/* Search for a previously existing content */
- list = g_slist_find_custom (history->priv->texts, text, (GCompareFunc)__g_slist_compare_texts);
- if (list != NULL)
+ link = g_slist_find_custom (history->priv->_texts, text, (GCompareFunc)__g_slist_compare_texts);
+ if (link != NULL)
{
DBG ("Found a previous occurence for text `%s'", text);
- item = list->data;
+ item = link->data;
if (history->priv->reorder_items)
{
__clipman_history_item_free (item);
- history->priv->texts = g_slist_delete_link (history->priv->texts, list);
+ history->priv->items = g_slist_remove (history->priv->items, link->data);
+ history->priv->_texts = g_slist_delete_link (history->priv->_texts, link);
}
else
{
@@ -306,7 +310,7 @@ clipman_history_add_image (ClipmanHistory *history,
GSList *
clipman_history_get_list (ClipmanHistory *history)
{
- return g_slist_concat (g_slist_copy (history->priv->images), g_slist_copy (history->priv->texts));
+ return g_slist_copy (history->priv->items);
}
/**
@@ -358,17 +362,19 @@ clipman_history_clear (ClipmanHistory *history)
DBG ("Clear the history");
- for (list = history->priv->texts; list != NULL; list = list->next)
+ for (list = history->priv->_texts; list != NULL; list = list->next)
__clipman_history_item_free (list->data);
- for (list = history->priv->images; list != NULL; list = list->next)
+ for (list = history->priv->_images; list != NULL; list = list->next)
__clipman_history_item_free (list->data);
- g_slist_free (history->priv->texts);
- g_slist_free (history->priv->images);
+ g_slist_free (history->priv->_texts);
+ g_slist_free (history->priv->_images);
+ g_slist_free (history->priv->items);
- history->priv->texts = NULL;
- history->priv->images = NULL;
+ history->priv->_texts = NULL;
+ history->priv->_images = NULL;
+ history->priv->items = NULL;
history->priv->item_to_restore = NULL;
More information about the Xfce4-commits
mailing list