aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/im-menu-item.c46
-rw-r--r--src/indicator-messages.c4
-rw-r--r--src/messages-service.c1
-rw-r--r--src/status-provider-telepathy.c2
4 files changed, 48 insertions, 5 deletions
diff --git a/src/im-menu-item.c b/src/im-menu-item.c
index e7c0177..7466d3e 100644
--- a/src/im-menu-item.c
+++ b/src/im-menu-item.c
@@ -175,7 +175,11 @@ im_menu_item_finalize (GObject *object)
static void
icon_cb (IndicateListener * listener, IndicateListenerServer * server, IndicateListenerIndicator * indicator, gchar * property, const gchar * propertydata, gpointer data)
{
- dbusmenu_menuitem_property_set(DBUSMENU_MENUITEM(data), INDICATOR_MENUITEM_PROP_ICON, propertydata);
+ gsize len;
+ guchar *icon;
+ icon = g_base64_decode (propertydata, &len);
+ dbusmenu_menuitem_property_set_byte_array(DBUSMENU_MENUITEM(data), INDICATOR_MENUITEM_PROP_ICON, icon, len);
+ g_free (icon);
return;
}
@@ -288,11 +292,47 @@ time_cb (IndicateListener * listener, IndicateListenerServer * server, IndicateL
return;
}
+/* Returns a newly allocated string which is 'str' with all occurences of
+ * consecutive whitespace collapsed into single space character. */
+static gchar *
+collapse_whitespace (const gchar *str)
+{
+ GString *result;
+ gboolean in_space = FALSE;
+
+ if (!str)
+ return NULL;
+
+ result = g_string_sized_new (strlen (str));
+
+ while (*str) {
+ gunichar c = g_utf8_get_char_validated (str, -1);
+
+ if (c < 0)
+ break;
+
+ if (!g_unichar_isspace (c)) {
+ g_string_append_unichar (result, c);
+ in_space = FALSE;
+ }
+ else if (!in_space) {
+ g_string_append_c (result, ' ');
+ in_space = TRUE;
+ }
+
+ str = g_utf8_next_char (str);
+ }
+
+ return g_string_free (result, FALSE);
+}
+
/* Callback from libindicate that is for getting the sender information
on a particular indicator. */
static void
sender_cb (IndicateListener * listener, IndicateListenerServer * server, IndicateListenerIndicator * indicator, gchar * property, const gchar * propertydata, gpointer data)
{
+ gchar *label;
+
g_debug("Got Sender Information: %s", propertydata);
ImMenuItem * self = IM_MENU_ITEM(data);
@@ -310,7 +350,9 @@ sender_cb (IndicateListener * listener, IndicateListenerServer * server, Indicat
return;
}
- dbusmenu_menuitem_property_set(DBUSMENU_MENUITEM(self), INDICATOR_MENUITEM_PROP_LABEL, propertydata);
+ label = collapse_whitespace (propertydata);
+ dbusmenu_menuitem_property_set(DBUSMENU_MENUITEM(self), INDICATOR_MENUITEM_PROP_LABEL, label);
+ g_free (label);
return;
}
diff --git a/src/indicator-messages.c b/src/indicator-messages.c
index cf81f40..748b73b 100644
--- a/src/indicator-messages.c
+++ b/src/indicator-messages.c
@@ -26,7 +26,7 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
#include <math.h>
#include <glib.h>
#include <glib-object.h>
-#include <glib/gi18n.h>
+#include <glib/gi18n-lib.h>
#include <gtk/gtk.h>
#include <libdbusmenu-gtk/menu.h>
@@ -724,7 +724,7 @@ new_indicator_item (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, Dbusm
gtk_widget_set_size_request(GTK_WIDGET (gmi), -1, height + 4);
#if GTK_CHECK_VERSION(3, 0, 0)
- gtk_widget_set_margin_left (hbox, width + 2 * padding);
+ gtk_widget_set_margin_left (hbox, width + padding);
#endif
GdkPixbuf * pixbuf = dbusmenu_menuitem_property_get_image(newitem, INDICATOR_MENUITEM_PROP_ICON);
diff --git a/src/messages-service.c b/src/messages-service.c
index 1d9c162..c975df1 100644
--- a/src/messages-service.c
+++ b/src/messages-service.c
@@ -620,6 +620,7 @@ server_shortcut_added (AppMenuItem * appitem, DbusmenuMenuitem * mi, gpointer da
g_debug("Application Shortcut added: %s", mi != NULL ? dbusmenu_menuitem_property_get(mi, DBUSMENU_MENUITEM_PROP_LABEL) : "none");
DbusmenuMenuitem * shell = DBUSMENU_MENUITEM(data);
if (mi != NULL) {
+ dbusmenu_menuitem_property_set (mi, DBUSMENU_MENUITEM_PROP_ICON_NAME, "");
dbusmenu_menuitem_child_append(shell, mi);
}
resort_menu(shell);
diff --git a/src/status-provider-telepathy.c b/src/status-provider-telepathy.c
index c8e89da..948e965 100644
--- a/src/status-provider-telepathy.c
+++ b/src/status-provider-telepathy.c
@@ -290,7 +290,7 @@ set_status (StatusProvider * sp, StatusProviderStatus status)
ret = dbus_g_proxy_call(priv->proxy,
"GetPresence", &error,
G_TYPE_INVALID,
- G_TYPE_UINT, &priv->mc_status,
+ G_TYPE_UINT, &mcstatus,
G_TYPE_INVALID);
/* If we can't get the get call to work, let's not set */