pidgin/pidgin

d1cc97d667a2
Parents ba76659ea73e
Children 81f41f7bca98
Box PidginSmiley and PidginWebViewSmiley
--- a/pidgin/gtksmiley.c Thu Mar 27 18:18:58 2014 +0100
+++ b/pidgin/gtksmiley.c Mon Mar 31 14:22:06 2014 +0530
@@ -39,6 +39,7 @@
struct _PidginSmiley
{
+ gint box_count;
PurpleSmiley *smiley;
GtkWidget *parent;
GtkWidget *smile;
@@ -82,6 +83,40 @@
g_free(smiley);
}
+static PidginSmiley *
+pidgin_smiley_ref(PidginSmiley *smiley)
+{
+ g_return_val_if_fail(smiley != NULL, NULL);
+
+ smiley->box_count++;
+
+ return smiley;
+}
+
+static void
+pidgin_smiley_unref(PidginSmiley *smiley)
+{
+ g_return_if_fail(smiley != NULL);
+ g_return_if_fail(smiley->box_count >= 0);
+
+ if (!smiley->box_count--)
+ pidgin_smiley_destroy(smiley);
+}
+
+GType
+pidgin_smiley_get_type(void)
+{
+ static GType type = 0;
+
+ if (type == 0) {
+ type = g_boxed_type_register_static("PidginSmiley",
+ (GBoxedCopyFunc)pidgin_smiley_ref,
+ (GBoxedFreeFunc)pidgin_smiley_unref);
+ }
+
+ return type;
+}
+
/******************************************************************************
* PidginWebViewSmileys stuff
*****************************************************************************/
--- a/pidgin/gtksmiley.h Thu Mar 27 18:18:58 2014 +0100
+++ b/pidgin/gtksmiley.h Mon Mar 31 14:22:06 2014 +0530
@@ -30,11 +30,20 @@
#include "smiley.h"
+#define PIDGIN_TYPE_SMILEY (pidgin_smiley_get_type())
+
typedef struct _PidginSmiley PidginSmiley;
G_BEGIN_DECLS
/**
+ * pidgin_smiley_get_type:
+ *
+ * Returns: The #GType for the #PidginSmiley boxed structure.
+ */
+GType pidgin_smiley_get_type(void);
+
+/**
* pidgin_smiley_add_to_list:
* @smiley: The smiley to be added.
*
--- a/pidgin/gtkwebview.c Thu Mar 27 18:18:58 2014 +0100
+++ b/pidgin/gtkwebview.c Mon Mar 31 14:22:06 2014 +0530
@@ -86,6 +86,7 @@
} PidginWebViewProtocol;
struct _PidginWebViewSmiley {
+ gint box_count;
gchar *smile;
gchar *file;
GdkPixbufAnimation *icon;
@@ -674,6 +675,44 @@
g_free(unescaped);
}
+/**************************************************************************
+ * PidginWebViewSmiley GBoxed code
+ **************************************************************************/
+
+static PidginWebViewSmiley *
+pidgin_webview_smiley_ref(PidginWebViewSmiley *smiley)
+{
+ g_return_val_if_fail(smiley != NULL, NULL);
+
+ smiley->box_count++;
+
+ return smiley;
+}
+
+static void
+pidgin_webview_smiley_unref(PidginWebViewSmiley *smiley)
+{
+ g_return_if_fail(smiley != NULL);
+ g_return_if_fail(smiley->box_count >= 0);
+
+ if (!smiley->box_count--)
+ pidgin_webview_smiley_destroy(smiley);
+}
+
+GType
+pidgin_webview_smiley_get_type(void)
+{
+ static GType type = 0;
+
+ if (type == 0) {
+ type = g_boxed_type_register_static("PidginWebViewSmiley",
+ (GBoxedCopyFunc)pidgin_webview_smiley_ref,
+ (GBoxedFreeFunc)pidgin_webview_smiley_unref);
+ }
+
+ return type;
+}
+
/******************************************************************************
* Helpers
*****************************************************************************/
--- a/pidgin/gtkwebview.h Thu Mar 27 18:18:58 2014 +0100
+++ b/pidgin/gtkwebview.h Mon Mar 31 14:22:06 2014 +0530
@@ -42,6 +42,8 @@
#define PIDGIN_IS_WEBVIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PIDGIN_TYPE_WEBVIEW))
#define PIDGIN_WEBVIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PIDGIN_TYPE_WEBVIEW, PidginWebViewClass))
+#define PIDGIN_TYPE_WEBVIEW_SMILEY (pidgin_webview_smiley_get_type())
+
typedef enum {
PIDGIN_WEBVIEW_BOLD = 1 << 0,
PIDGIN_WEBVIEW_ITALIC = 1 << 1,
@@ -114,13 +116,18 @@
/**
* pidgin_webview_get_type:
*
- * Returns the GType for a PidginWebView widget
- *
- * Returns: The GType for PidginWebView widget
+ * Returns: The #GType for #PidginWebView widget
*/
GType pidgin_webview_get_type(void);
/**
+ * pidgin_webview_smiley_get_type:
+ *
+ * Returns: The #GType for the #PidginWebViewSmiley boxed structure.
+ */
+GType pidgin_webview_smiley_get_type(void);
+
+/**
* pidgin_webview_new:
* @editable: Whether this PidginWebView will be user-editable
*