grim/pidgin

initial work at moving the gtk-icon-theme stuff
draft remove-gtk-icon-theme
2021-01-09, Gary Kramlich
41ad23aaa92d
Parents beb4c413afe8
Children
initial work at moving the gtk-icon-theme stuff
--- a/ChangeLog.API Thu Jan 21 22:35:39 2021 -0600
+++ b/ChangeLog.API Sat Jan 09 04:45:28 2021 -0600
@@ -728,7 +728,28 @@
* pidgin_status_box_pulse_connecting
* pidgin_status_box_set_buddy_icon
* pidgin_status_box_set_network_available
+ * PidginStockIconTheme
+ * PidginStockIconThemeClass
+ * PIDGIN_STOCK_STATUS_AVAILABLE
+ * PIDGIN_STOCK_STATUS_AVAILABLE_I
+ * PIDGIN_STOCK_STATUS_AWAY
+ * PIDGIN_STOCK_STATUS_AWAY_I
+ * PIDGIN_STOCK_STATUS_BUSY
+ * PIDGIN_STOCK_STATUS_BUSY_I
+ * PIDGIN_STOCK_STATUS_CHAT
+ * PIDGIN_STOCK_STATUS_INVISIBLE
+ * PIDGIN_STOCK_STATUS_XA
+ * PIDGIN_STOCK_STATUS_XA_I
+ * PIDGIN_STOCK_STATUS_LOGIN
+ * PIDGIN_STOCK_STATUS_LOGOUT
+ * PIDGIN_STOCK_STATUS_OFFLINE
+ * PIDGIN_STOCK_STATUS_OFFLINE_I
+ * PIDGIN_STOCK_STATUS_PERSON
+ * PIDGIN_STOCK_STATUS_MESSAGE
+ * pidgin_stock_icon_theme_get_type
* pidgin_stock_id_from_presence
+ * pidgin_stock_load_status_icon_theme
+ * pidgin_stock_load_stock_icon_theme
* pidgin_text_combo_box_entry_set_text
* pidgin_toggle_sensitive, pidgin_toggle_sensitive_array, and
pidgin_toggle_showhide; use g_object_bind_property instead
--- a/doc/reference/pidgin/pidgin-docs.xml Thu Jan 21 22:35:39 2021 -0600
+++ b/doc/reference/pidgin/pidgin-docs.xml Sat Jan 09 04:45:28 2021 -0600
@@ -28,8 +28,6 @@
<xi:include href="xml/gtkconvwin.xml" />
<xi:include href="xml/gtkdialogs.xml" />
<xi:include href="xml/gtkdnd-hints.xml" />
- <xi:include href="xml/gtkicon-theme-loader.xml" />
- <xi:include href="xml/gtkicon-theme.xml" />
<xi:include href="xml/gtkidle.xml" />
<xi:include href="xml/gtkmedia.xml" />
<xi:include href="xml/gtknickcolors.xml" />
@@ -43,7 +41,6 @@
<xi:include href="xml/gtkscrollbook.xml" />
<xi:include href="xml/gtksmiley-manager.xml" />
<xi:include href="xml/gtksmiley-theme.xml" />
- <xi:include href="xml/gtkstatus-icon-theme.xml" />
<xi:include href="xml/gtkstatusbox.xml" />
<xi:include href="xml/gtkutils.xml" />
<xi:include href="xml/gtkwhiteboard.xml" />
--- a/pidgin/gtkicon-theme-loader.c Thu Jan 21 22:35:39 2021 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,132 +0,0 @@
-/*
- * PidginIconThemeLoader for Pidgin
- *
- * Pidgin is the legal property of its developers, whose names are too numerous
- * to list here. Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
- */
-
-#include "gtkicon-theme-loader.h"
-#include "gtkstatus-icon-theme.h"
-
-#include <purple.h>
-
-/**
- * PidginIconThemeLoader:
- *
- * A pidgin icon theme loader. Extends PurpleThemeLoader (theme-loader.h)
- * This is a class designed to build icon themes
- */
-struct _PidginIconThemeLoader
-{
- PurpleThemeLoader parent;
-};
-
-/*****************************************************************************
- * Icon Theme Builder
- *****************************************************************************/
-
-static PurpleTheme *
-pidgin_icon_loader_build(const gchar *theme_dir)
-{
- PurpleXmlNode *root_node = NULL, *sub_node;
- gchar *dir, *filename_full, *data = NULL;
- PidginIconTheme *theme = NULL;
- const gchar *name;
-
- /* Find the theme file */
- g_return_val_if_fail(theme_dir != NULL, NULL);
- dir = g_build_filename(theme_dir, "purple", "status-icon", NULL);
- filename_full = g_build_filename(dir, "theme.xml", NULL);
-
- if (g_file_test(filename_full, G_FILE_TEST_IS_REGULAR))
- root_node = purple_xmlnode_from_file(dir, "theme.xml", "icon themes", "icon-theme-loader");
-
- g_free(filename_full);
- if (root_node == NULL) {
- g_free(dir);
- return NULL;
- }
-
- name = purple_xmlnode_get_attrib(root_node, "name");
-
- if (name) {
- /* Parse the tree */
- sub_node = purple_xmlnode_get_child(root_node, "description");
- data = purple_xmlnode_get_data(sub_node);
-
- if (purple_xmlnode_get_attrib(root_node, "name") != NULL) {
- theme = g_object_new(PIDGIN_TYPE_STATUS_ICON_THEME,
- "type", "status-icon",
- "name", name,
- "author", purple_xmlnode_get_attrib(root_node, "author"),
- "image", purple_xmlnode_get_attrib(root_node, "image"),
- "directory", dir,
- "description", data, NULL);
-
- sub_node = purple_xmlnode_get_child(root_node, "icon");
-
- while (sub_node) {
- pidgin_icon_theme_set_icon(theme,
- purple_xmlnode_get_attrib(sub_node, "id"),
- purple_xmlnode_get_attrib(sub_node, "file"));
- sub_node = purple_xmlnode_get_next_twin(sub_node);
- }
- }
- }
-
- purple_xmlnode_free(root_node);
- g_free(data);
- g_free(dir);
- return PURPLE_THEME(theme);
-}
-
-/******************************************************************************
- * GObject Stuff
- *****************************************************************************/
-
-static void
-pidgin_icon_theme_loader_class_init (PidginIconThemeLoaderClass *klass)
-{
- PurpleThemeLoaderClass *loader_klass = PURPLE_THEME_LOADER_CLASS(klass);
-
- loader_klass->purple_theme_loader_build = pidgin_icon_loader_build;
-}
-
-
-GType
-pidgin_icon_theme_loader_get_type (void)
-{
- static GType type = 0;
- if (type == 0) {
- static const GTypeInfo info = {
- sizeof(PidginIconThemeLoaderClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc)pidgin_icon_theme_loader_class_init, /* class_init */
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof (PidginIconThemeLoader),
- 0, /* n_preallocs */
- NULL, /* instance_init */
- NULL, /* value table */
- };
- type = g_type_register_static (PURPLE_TYPE_THEME_LOADER,
- "PidginIconThemeLoader", &info, 0);
- }
- return type;
-}
--- a/pidgin/gtkicon-theme-loader.h Thu Jan 21 22:35:39 2021 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/* purple
- *
- * Purple is the legal property of its developers, whose names are too numerous
- * to list here. Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
- */
-
-#if !defined(PIDGIN_GLOBAL_HEADER_INSIDE) && !defined(PIDGIN_COMPILATION)
-# error "only <pidgin.h> may be included directly"
-#endif
-
-#ifndef PIDGIN_ICON_THEME_LOADER_H
-#define PIDGIN_ICON_THEME_LOADER_H
-/**
- * SECTION:gtkicon-theme-loader
- * @section_id: pidgin-gtkicon-theme-loader
- * @short_description: <filename>gtkicon-theme-loader.h</filename>
- * @title: Pidgin Icon Theme Loader Class
- */
-
-#include <glib.h>
-#include <glib-object.h>
-
-#include <purple.h>
-
-#define PIDGIN_TYPE_ICON_THEME_LOADER pidgin_icon_theme_loader_get_type()
-
-/**************************************************************************/
-/* Pidgin Icon Theme-Loader API */
-/**************************************************************************/
-G_BEGIN_DECLS
-
-/**
- * pidgin_icon_theme_loader_get_type:
- *
- * Returns: The #GType for an icon theme loader.
- */
-G_DECLARE_FINAL_TYPE(PidginIconThemeLoader, pidgin_icon_theme_loader, PIDGIN,
- ICON_THEME_LOADER, PurpleThemeLoader)
-
-G_END_DECLS
-
-#endif /* PIDGIN_ICON_THEME_LOADER_H */
--- a/pidgin/gtkicon-theme.c Thu Jan 21 22:35:39 2021 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-/*
- * Icon Themes for Pidgin
- *
- * Pidgin is the legal property of its developers, whose names are too numerous
- * to list here. Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
- */
-
-#include "gtkicon-theme.h"
-
-#include <gtk/gtk.h>
-
-/******************************************************************************
- * Structs
- *****************************************************************************/
-
-typedef struct {
- /* used to store filenames of diffrent icons */
- GHashTable *icon_files;
-} PidginIconThemePrivate;
-
-/******************************************************************************
- * Globals
- *****************************************************************************/
-
-G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE(PidginIconTheme, pidgin_icon_theme,
- PURPLE_TYPE_THEME);
-
-/******************************************************************************
- * GObject Stuff
- *****************************************************************************/
-
-static void
-pidgin_icon_theme_init(PidginIconTheme *theme)
-{
- PidginIconThemePrivate *priv;
-
- priv = pidgin_icon_theme_get_instance_private(theme);
-
- priv->icon_files = g_hash_table_new_full(g_str_hash,
- g_str_equal, g_free, g_free);
-}
-
-static void
-pidgin_icon_theme_finalize(GObject *obj)
-{
- PidginIconThemePrivate *priv;
-
- priv = pidgin_icon_theme_get_instance_private(PIDGIN_ICON_THEME(obj));
-
- g_hash_table_destroy(priv->icon_files);
-
- G_OBJECT_CLASS(pidgin_icon_theme_parent_class)->finalize(obj);
-}
-
-static void
-pidgin_icon_theme_class_init(PidginIconThemeClass *klass)
-{
- GObjectClass *obj_class = G_OBJECT_CLASS(klass);
-
- obj_class->finalize = pidgin_icon_theme_finalize;
-}
-
-/*****************************************************************************
- * Public API functions
- *****************************************************************************/
-
-const gchar *
-pidgin_icon_theme_get_icon(PidginIconTheme *theme,
- const gchar *id)
-{
- PidginIconThemePrivate *priv;
-
- g_return_val_if_fail(PIDGIN_IS_ICON_THEME(theme), NULL);
-
- priv = pidgin_icon_theme_get_instance_private(theme);
-
- return g_hash_table_lookup(priv->icon_files, id);
-}
-
-void
-pidgin_icon_theme_set_icon(PidginIconTheme *theme,
- const gchar *id,
- const gchar *filename)
-{
- PidginIconThemePrivate *priv;
- g_return_if_fail(PIDGIN_IS_ICON_THEME(theme));
-
- priv = pidgin_icon_theme_get_instance_private(theme);
-
- if (filename != NULL)
- g_hash_table_replace(priv->icon_files,
- g_strdup(id), g_strdup(filename));
- else
- g_hash_table_remove(priv->icon_files, id);
-}
--- a/pidgin/gtkicon-theme.h Thu Jan 21 22:35:39 2021 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/* pidgin
- *
- * Pidgin is the legal property of its developers, whose names are too numerous
- * to list here. Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
- */
-
-#if !defined(PIDGIN_GLOBAL_HEADER_INSIDE) && !defined(PIDGIN_COMPILATION)
-# error "only <pidgin.h> may be included directly"
-#endif
-
-#ifndef PIDGIN_ICON_THEME_H
-#define PIDGIN_ICON_THEME_H
-/**
- * SECTION:gtkicon-theme
- * @section_id: pidgin-gtkicon-theme
- * @short_description: <filename>gtkicon-theme.h</filename>
- * @title: Icon Theme Class
- */
-
-#include <glib.h>
-#include <glib-object.h>
-
-#include <purple.h>
-
-#define PIDGIN_TYPE_ICON_THEME pidgin_icon_theme_get_type()
-
-struct _PidginIconThemeClass
-{
- PurpleThemeClass parent_class;
-};
-
-/**************************************************************************/
-/* Pidgin Icon Theme API */
-/**************************************************************************/
-G_BEGIN_DECLS
-
-/**
- * pidgin_icon_theme_get_type:
- *
- * Returns: The #GType for an icon theme.
- */
-G_DECLARE_DERIVABLE_TYPE(PidginIconTheme, pidgin_icon_theme, PIDGIN,
- ICON_THEME, PurpleTheme)
-
-/**
- * pidgin_icon_theme_get_icon:
- * @theme: the theme
- * @event: the pidgin icon event to look up
- *
- * Returns a copy of the filename for the icon event or NULL if it is not set
- *
- * Returns: the filename of the icon event
- */
-const gchar *pidgin_icon_theme_get_icon(PidginIconTheme *theme,
- const gchar *event);
-
-/**
- * pidgin_icon_theme_set_icon:
- * @theme: the theme
- * @icon_id: a string representing what the icon is to be used for
- * @filename: the name of the file to be used for the given id
- *
- * Sets the filename for a given icon id, setting the icon to NULL will remove the icon from the theme
- */
-void pidgin_icon_theme_set_icon(PidginIconTheme *theme,
- const gchar *icon_id,
- const gchar *filename);
-
-G_END_DECLS
-
-#endif /* PIDGIN_ICON_THEME_H */
--- a/pidgin/gtkprefs.c Thu Jan 21 22:35:39 2021 -0600
+++ b/pidgin/gtkprefs.c Sat Jan 09 04:45:28 2021 -0600
@@ -40,7 +40,6 @@
#include "gtkprefs.h"
#include "gtksavedstatuses.h"
#include "gtksmiley-theme.h"
-#include "gtkstatus-icon-theme.h"
#include "gtkutils.h"
#include "pidgincore.h"
#include "pidgindebug.h"
@@ -205,7 +204,6 @@
struct {
SoupSession *session;
GtkWidget *blist;
- GtkWidget *status;
GtkWidget *smiley;
} theme;
@@ -239,12 +237,10 @@
/* Themes page */
static GtkWidget *prefs_blist_themes_combo_box;
-static GtkWidget *prefs_status_themes_combo_box;
static GtkWidget *prefs_smiley_themes_combo_box;
/* These exist outside the lifetime of the prefs dialog */
static GtkListStore *prefs_blist_themes;
-static GtkListStore *prefs_status_icon_themes;
static GtkListStore *prefs_smiley_themes;
/*
@@ -853,7 +849,6 @@
/* NULL-ify globals */
prefs_blist_themes_combo_box = NULL;
- prefs_status_themes_combo_box = NULL;
prefs_smiley_themes_combo_box = NULL;
keyring_page_cleanup(prefs);
@@ -915,13 +910,8 @@
gchar *image_full = NULL, *markup;
const gchar *name, *author, *description;
- if (PIDGIN_IS_BLIST_THEME(theme) || PIDGIN_IS_STATUS_ICON_THEME(theme)){
- GtkListStore *store;
-
- if (PIDGIN_IS_BLIST_THEME(theme))
- store = prefs_blist_themes;
- else
- store = prefs_status_icon_themes;
+ if (PIDGIN_IS_BLIST_THEME(theme)) {
+ GtkListStore *store = prefs_blist_themes;
image_full = purple_theme_get_image_full(theme);
if (image_full != NULL){
@@ -993,16 +983,6 @@
gtk_list_store_set(prefs_blist_themes, &iter, 0, pixbuf, 1, tmp, 2, "", -1);
g_free(tmp);
- /* status icon themes */
- gtk_list_store_clear(prefs_status_icon_themes);
- gtk_list_store_append(prefs_status_icon_themes, &iter);
- tmp = get_theme_markup(_("Default"), FALSE, _("Penguin Pimps"),
- _("The default Pidgin status icon theme"));
- gtk_list_store_set(prefs_status_icon_themes, &iter, 0, pixbuf, 1, tmp, 2, "", -1);
- g_free(tmp);
- if (pixbuf)
- g_object_unref(G_OBJECT(pixbuf));
-
/* smiley themes */
gtk_list_store_clear(prefs_smiley_themes);
@@ -1011,7 +991,6 @@
/* set active */
prefs_set_active_theme_combo(prefs_blist_themes_combo_box, prefs_blist_themes, purple_prefs_get_string(PIDGIN_PREFS_ROOT "/blist/theme"));
- prefs_set_active_theme_combo(prefs_status_themes_combo_box, prefs_status_icon_themes, purple_prefs_get_string(PIDGIN_PREFS_ROOT "/status/icon-theme"));
prefs_set_active_theme_combo(prefs_smiley_themes_combo_box, prefs_smiley_themes, purple_prefs_get_string(PIDGIN_PREFS_ROOT "/smileys/theme"));
}
@@ -1021,8 +1000,6 @@
{
prefs_blist_themes = gtk_list_store_new(3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING);
- prefs_status_icon_themes = gtk_list_store_new(3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING);
-
prefs_smiley_themes = gtk_list_store_new(3, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING);
}
@@ -1452,28 +1429,6 @@
}
}
-/* sets the current icon theme */
-static void
-prefs_set_status_icon_theme_cb(GtkComboBox *combo_box, gpointer user_data)
-{
- PidginStatusIconTheme *theme = NULL;
- GtkTreeIter iter;
- gchar *name = NULL;
-
- if(gtk_combo_box_get_active_iter(combo_box, &iter)) {
-
- gtk_tree_model_get(GTK_TREE_MODEL(prefs_status_icon_themes), &iter, 2, &name, -1);
-
- if(!name || *name)
- theme = PIDGIN_STATUS_ICON_THEME(purple_theme_manager_find_theme(name, "status-icon"));
-
- g_free(name);
-
- pidgin_stock_load_status_icon_theme(theme);
- pidgin_blist_refresh(purple_blist_get_default());
- }
-}
-
static void
bind_theme_page(PidginPrefsWindow *win)
{
@@ -1482,12 +1437,6 @@
PIDGIN_PREFS_ROOT "/blist/theme", "blist");
prefs_blist_themes_combo_box = win->theme.blist;
- /* Status Icon Themes */
- prefs_build_theme_combo_box(win->theme.status, prefs_status_icon_themes,
- PIDGIN_PREFS_ROOT "/status/icon-theme",
- "icon");
- prefs_status_themes_combo_box = win->theme.status;
-
/* Smiley Themes */
prefs_build_theme_combo_box(win->theme.smiley, prefs_smiley_themes,
PIDGIN_PREFS_ROOT "/smileys/theme",
@@ -2973,14 +2922,10 @@
gtk_widget_class_bind_template_child(
widget_class, PidginPrefsWindow, theme.blist);
gtk_widget_class_bind_template_child(
- widget_class, PidginPrefsWindow, theme.status);
- gtk_widget_class_bind_template_child(
widget_class, PidginPrefsWindow, theme.smiley);
gtk_widget_class_bind_template_callback(widget_class,
prefs_set_blist_theme_cb);
gtk_widget_class_bind_template_callback(widget_class,
- prefs_set_status_icon_theme_cb);
- gtk_widget_class_bind_template_callback(widget_class,
prefs_set_smiley_theme_cb);
}
--- a/pidgin/gtkstatus-icon-theme.c Thu Jan 21 22:35:39 2021 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/*
- * Status Icon Themes for Pidgin
- *
- * Pidgin is the legal property of its developers, whose names are too numerous
- * to list here. Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
- */
-
-#include "gtkstatus-icon-theme.h"
-
-/**
- * PidginStatusIconTheme:
- *
- * extends PidginIconTheme (gtkicon-theme.h)
- * A pidgin status icon theme.
- * This object represents a Pidgin status icon theme.
- *
- * PidginStatusIconTheme is a PidginIconTheme Object.
- */
-struct _PidginStatusIconTheme
-{
- PidginIconTheme parent;
-};
-
-/******************************************************************************
- * Globals
- *****************************************************************************/
-
-static GObjectClass *parent_class = NULL;
-
-/******************************************************************************
- * GObject Stuff
- *****************************************************************************/
-
-static void
-pidgin_status_icon_theme_finalize(GObject *obj)
-{
- parent_class->finalize(obj);
-}
-
-static void
-pidgin_status_icon_theme_class_init(PidginStatusIconThemeClass *klass)
-{
- GObjectClass *obj_class = G_OBJECT_CLASS(klass);
-
- parent_class = g_type_class_peek_parent(klass);
-
- obj_class->finalize = pidgin_status_icon_theme_finalize;
-}
-
-GType
-pidgin_status_icon_theme_get_type(void)
-{
- static GType type = 0;
- if (type == 0) {
- static const GTypeInfo info = {
- sizeof (PidginStatusIconThemeClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc)pidgin_status_icon_theme_class_init, /* class_init */
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof (PidginStatusIconTheme),
- 0, /* n_preallocs */
- NULL,
- NULL, /* value table */
- };
- type = g_type_register_static(PIDGIN_TYPE_ICON_THEME,
- "PidginStatusIconTheme", &info, 0);
- }
- return type;
-}
--- a/pidgin/gtkstatus-icon-theme.h Thu Jan 21 22:35:39 2021 -0600
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/* pidgin
- *
- * Pidgin is the legal property of its developers, whose names are too numerous
- * to list here. Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
- */
-
-#if !defined(PIDGIN_GLOBAL_HEADER_INSIDE) && !defined(PIDGIN_COMPILATION)
-# error "only <pidgin.h> may be included directly"
-#endif
-
-#ifndef PIDGIN_STATUS_ICON_THEME_H
-#define PIDGIN_STATUS_ICON_THEME_H
-/**
- * SECTION:gtkstatus-icon-theme
- * @section_id: pidgin-gtkstatus-icon-theme
- * @short_description: <filename>gtkstatus-icon-theme.h</filename>
- * @title: Pidgin Icon Theme Class
- */
-
-#include <glib-object.h>
-#include "gtkicon-theme.h"
-
-#define PIDGIN_TYPE_STATUS_ICON_THEME pidgin_status_icon_theme_get_type()
-
-/**************************************************************************/
-/* Pidgin Status Icon Theme API */
-/**************************************************************************/
-G_BEGIN_DECLS
-
-/**
- * pidgin_status_icon_theme_get_type:
- *
- * Returns: The #GType for a status icon theme.
- */
-G_DECLARE_FINAL_TYPE(PidginStatusIconTheme, pidgin_status_icon_theme, PIDGIN,
- STATUS_ICON_THEME, PidginIconTheme)
-
-G_END_DECLS
-
-#endif /* PIDGIN_STATUS_ICON_THEME_H */
--- a/pidgin/meson.build Thu Jan 21 22:35:39 2021 -0600
+++ b/pidgin/meson.build Sat Jan 09 04:45:28 2021 -0600
@@ -8,8 +8,6 @@
'gtkconv.c',
'gtkdialogs.c',
'gtkdnd-hints.c',
- 'gtkicon-theme.c',
- 'gtkicon-theme-loader.c',
'gtkidle.c',
'gtkmedia.c',
'gtknotify.c',
@@ -22,7 +20,6 @@
'gtkscrollbook.c',
'gtksmiley-manager.c',
'gtksmiley-theme.c',
- 'gtkstatus-icon-theme.c',
'gtkstatusbox.c',
'gtkutils.c',
'gtkwhiteboard.c',
@@ -76,8 +73,6 @@
'gtkconvwin.h',
'gtkdialogs.h',
'gtkdnd-hints.h',
- 'gtkicon-theme.h',
- 'gtkicon-theme-loader.h',
'gtkidle.h',
'gtkmedia.h',
'gtknotify.h',
@@ -90,7 +85,6 @@
'gtkscrollbook.h',
'gtksmiley-manager.h',
'gtksmiley-theme.h',
- 'gtkstatus-icon-theme.h',
'gtkstatusbox.h',
'pidginstock.h',
'gtkutils.h',
--- a/pidgin/pidginstock.c Thu Jan 21 22:35:39 2021 -0600
+++ b/pidgin/pidginstock.c Sat Jan 09 04:45:28 2021 -0600
@@ -29,7 +29,6 @@
#include "pidginstock.h"
-#include "gtkicon-theme-loader.h"
#include "pidgincore.h"
#warning GtkStock is deprecated. Port usage of PidginStock to GtkIconTheme \
@@ -257,27 +256,11 @@
}
static gchar *
-find_icon_file(PidginIconTheme *theme, const gchar *size, SizedStockIcon sized_icon, gboolean rtl)
+find_icon_file(const gchar *size, SizedStockIcon sized_icon, gboolean rtl)
{
- const gchar *file, *dir;
gchar *file_full = NULL;
gchar *tmp;
- if (theme != NULL) {
- file = pidgin_icon_theme_get_icon(PIDGIN_ICON_THEME(theme), sized_icon.name);
- dir = purple_theme_get_dir(PURPLE_THEME(theme));
-
- if (rtl)
- file_full = g_build_filename(dir, size, "rtl", file, NULL);
- else
- file_full = g_build_filename(dir, size, file, NULL);
-
- if (g_file_test(file_full, G_FILE_TEST_IS_REGULAR))
- return file_full;
-
- g_free(file_full);
- }
-
if (rtl)
tmp = g_build_filename("pixmaps", "pidgin", sized_icon.dir, size, "rtl", sized_icon.filename, NULL);
else
@@ -307,14 +290,14 @@
}
static void
-add_sized_icon(GtkIconSet *iconset, GtkIconSize sizeid, PidginIconTheme *theme,
- const char *size, SizedStockIcon sized_icon, gboolean translucent)
+add_sized_icon(GtkIconSet *iconset, GtkIconSize sizeid, const gchar *size,
+ SizedStockIcon sized_icon, gboolean translucent)
{
char *filename;
GtkIconSource *source;
GdkPixbuf *pixbuf;
- filename = find_icon_file(theme, size, sized_icon, FALSE);
+ filename = find_icon_file(size, sized_icon, FALSE);
g_return_if_fail(filename != NULL);
pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
if (translucent)
@@ -345,7 +328,7 @@
g_object_unref(pixbuf);
if (sized_icon.rtl) {
- filename = find_icon_file(theme, size, sized_icon, TRUE);
+ filename = find_icon_file(size, sized_icon, TRUE);
g_return_if_fail(filename != NULL);
pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
if (translucent)
@@ -375,116 +358,14 @@
/*****************************************************************************
* Public API functions
*****************************************************************************/
-
void
-pidgin_stock_load_status_icon_theme(PidginStatusIconTheme *theme)
-{
- GtkIconFactory *icon_factory;
- gsize i;
- GtkIconSet *normal;
- GtkIconSet *translucent = NULL;
- GtkWidget *win;
-
- if (theme != NULL) {
- purple_prefs_set_string(PIDGIN_PREFS_ROOT "/status/icon-theme",
- purple_theme_get_name(PURPLE_THEME(theme)));
- purple_prefs_set_path(PIDGIN_PREFS_ROOT "/status/icon-theme-dir",
- purple_theme_get_dir(PURPLE_THEME(theme)));
- }
- else {
- purple_prefs_set_string(PIDGIN_PREFS_ROOT "/status/icon-theme", "");
- purple_prefs_set_path(PIDGIN_PREFS_ROOT "/status/icon-theme-dir", "");
- }
-
-G_GNUC_BEGIN_IGNORE_DEPRECATIONS
- icon_factory = gtk_icon_factory_new();
-
- gtk_icon_factory_add_default(icon_factory);
-G_GNUC_END_IGNORE_DEPRECATIONS
-
- win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_widget_realize(win);
-
-G_GNUC_BEGIN_IGNORE_DEPRECATIONS
- for (i = 0; i < G_N_ELEMENTS(sized_status_icons); i++)
- {
- normal = gtk_icon_set_new();
- if (sized_status_icons[i].translucent_name)
- translucent = gtk_icon_set_new();
-
-#define ADD_SIZED_ICON(name, size) \
- if (sized_status_icons[i].name) { \
- add_sized_icon(normal, name, PIDGIN_ICON_THEME(theme), size, sized_status_icons[i], FALSE); \
- if (sized_status_icons[i].translucent_name) \
- add_sized_icon(translucent, name, PIDGIN_ICON_THEME(theme), size, sized_status_icons[i], TRUE); \
- }
- ADD_SIZED_ICON(microscopic, "11");
- ADD_SIZED_ICON(extra_small, "16");
- ADD_SIZED_ICON(small, "22");
- ADD_SIZED_ICON(medium, "32");
- ADD_SIZED_ICON(large, "48");
- ADD_SIZED_ICON(huge, "64");
-#undef ADD_SIZED_ICON
-
- gtk_icon_factory_add(icon_factory, sized_status_icons[i].name, normal);
- gtk_icon_set_unref(normal);
-
- if (sized_status_icons[i].translucent_name) {
- gtk_icon_factory_add(icon_factory, sized_status_icons[i].translucent_name, translucent);
- gtk_icon_set_unref(translucent);
- }
- }
-
- for (i = 0; i < G_N_ELEMENTS(sized_tray_icons); i++)
- {
- normal = gtk_icon_set_new();
- if (sized_tray_icons[i].translucent_name)
- translucent = gtk_icon_set_new();
-
-#define ADD_SIZED_ICON(name, size) \
- if (sized_tray_icons[i].name) { \
- add_sized_icon(normal, name, PIDGIN_ICON_THEME(theme), size, sized_tray_icons[i], FALSE); \
- if (sized_tray_icons[i].translucent_name) \
- add_sized_icon(translucent, name, PIDGIN_ICON_THEME(theme), size, sized_tray_icons[i], TRUE); \
- }
- ADD_SIZED_ICON(extra_small, "16");
- ADD_SIZED_ICON(small, "22");
- ADD_SIZED_ICON(medium, "32");
- ADD_SIZED_ICON(large, "48");
-#undef ADD_SIZED_ICON
-
- gtk_icon_factory_add(icon_factory, sized_tray_icons[i].name, normal);
- gtk_icon_set_unref(normal);
-
- if (sized_tray_icons[i].translucent_name) {
- gtk_icon_factory_add(icon_factory, sized_tray_icons[i].translucent_name, translucent);
- gtk_icon_set_unref(translucent);
- }
- }
-G_GNUC_END_IGNORE_DEPRECATIONS
-
- gtk_widget_destroy(win);
- g_object_unref(G_OBJECT(icon_factory));
- reload_settings();
-}
-
-void
-pidgin_stock_load_stock_icon_theme(PidginStockIconTheme *theme)
-{
+pidgin_stock_load_stock_icon_theme(void) {
GtkIconFactory *icon_factory;
gsize i;
GtkWidget *win;
- if (theme != NULL) {
- purple_prefs_set_string(PIDGIN_PREFS_ROOT "/stock/icon-theme",
- purple_theme_get_name(PURPLE_THEME(theme)));
- purple_prefs_set_path(PIDGIN_PREFS_ROOT "/stock/icon-theme-dir",
- purple_theme_get_dir(PURPLE_THEME(theme)));
- }
- else {
- purple_prefs_set_string(PIDGIN_PREFS_ROOT "/stock/icon-theme", "");
- purple_prefs_set_path(PIDGIN_PREFS_ROOT "/stock/icon-theme-dir", "");
- }
+ purple_prefs_set_string(PIDGIN_PREFS_ROOT "/stock/icon-theme", "");
+ purple_prefs_set_path(PIDGIN_PREFS_ROOT "/stock/icon-theme-dir", "");
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
icon_factory = gtk_icon_factory_new();
@@ -537,7 +418,7 @@
#define ADD_SIZED_ICON(name, size) \
if (sized_stock_icons[i].name) \
- add_sized_icon(iconset, name, PIDGIN_ICON_THEME(theme), size, sized_stock_icons[i], FALSE);
+ add_sized_icon(iconset, name, size, sized_stock_icons[i], FALSE);
ADD_SIZED_ICON(microscopic, "11");
ADD_SIZED_ICON(extra_small, "16");
ADD_SIZED_ICON(small, "22");
@@ -559,26 +440,19 @@
void
pidgin_stock_init(void)
{
- PidginIconThemeLoader *loader, *stockloader;
- const gchar *path = NULL;
-
if (stock_initted)
return;
stock_initted = TRUE;
- /* Setup the status icon theme */
- loader = g_object_new(PIDGIN_TYPE_ICON_THEME_LOADER, "type", "status-icon", NULL);
- purple_theme_manager_register_type(PURPLE_THEME_LOADER(loader));
- purple_prefs_add_none(PIDGIN_PREFS_ROOT "/status");
- purple_prefs_add_string(PIDGIN_PREFS_ROOT "/status/icon-theme", "");
- purple_prefs_add_path(PIDGIN_PREFS_ROOT "/status/icon-theme-dir", "");
+ /* Remove the status icon theme stuff */
+ purple_prefs_remove(PIDGIN_PREFS_ROOT "/status/icon-theme");
+ purple_prefs_remove(PIDGIN_PREFS_ROOT "/status/icon-theme-dir");
+ purple_prefs_remove(PIDGIN_PREFS_ROOT "/status");
- stockloader = g_object_new(PIDGIN_TYPE_ICON_THEME_LOADER, "type", "stock-icon", NULL);
- purple_theme_manager_register_type(PURPLE_THEME_LOADER(stockloader));
- purple_prefs_add_none(PIDGIN_PREFS_ROOT "/stock");
- purple_prefs_add_string(PIDGIN_PREFS_ROOT "/stock/icon-theme", "");
- purple_prefs_add_path(PIDGIN_PREFS_ROOT "/stock/icon-theme-dir", "");
+ purple_prefs_remove(PIDGIN_PREFS_ROOT "/stock/icon-theme");
+ purple_prefs_remove(PIDGIN_PREFS_ROOT "/stock/icon-theme-dir");
+ purple_prefs_remove(PIDGIN_PREFS_ROOT "/stock");
/* register custom icon sizes */
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
@@ -590,51 +464,10 @@
huge = gtk_icon_size_register(PIDGIN_ICON_SIZE_TANGO_HUGE, 64, 64);
G_GNUC_END_IGNORE_DEPRECATIONS
- pidgin_stock_load_stock_icon_theme(NULL);
-
- /* Pre-load Status icon theme - this avoids a bug with displaying the correct icon in the tray, theme is destroyed after*/
- if (purple_prefs_get_string(PIDGIN_PREFS_ROOT "/status/icon-theme") &&
- (path = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/status/icon-theme-dir"))) {
-
- PidginStatusIconTheme *theme = PIDGIN_STATUS_ICON_THEME(purple_theme_loader_build(PURPLE_THEME_LOADER(loader), path));
- pidgin_stock_load_status_icon_theme(theme);
- if (theme)
- g_object_unref(G_OBJECT(theme));
-
- }
- else
- pidgin_stock_load_status_icon_theme(NULL);
+ pidgin_stock_load_stock_icon_theme();
/* Register the stock items. */
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
gtk_stock_add_static(stock_items, G_N_ELEMENTS(stock_items));
G_GNUC_END_IGNORE_DEPRECATIONS
}
-
-static void
-pidgin_stock_icon_theme_class_init(PidginStockIconThemeClass *klass)
-{
-}
-
-GType
-pidgin_stock_icon_theme_get_type(void)
-{
- static GType type = 0;
- if (type == 0) {
- static const GTypeInfo info = {
- sizeof (PidginStockIconThemeClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc)pidgin_stock_icon_theme_class_init, /* class_init */
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof (PidginStockIconTheme),
- 0, /* n_preallocs */
- NULL,
- NULL, /* value table */
- };
- type = g_type_register_static(PIDGIN_TYPE_ICON_THEME,
- "PidginStockIconTheme", &info, 0);
- }
- return type;
-}
--- a/pidgin/pidginstock.h Thu Jan 21 22:35:39 2021 -0600
+++ b/pidgin/pidginstock.h Sat Jan 09 04:45:28 2021 -0600
@@ -33,7 +33,6 @@
*/
#include <gtk/gtk.h>
-#include "gtkstatus-icon-theme.h"
/**************************************************************************/
/* Stock images */
@@ -68,24 +67,6 @@
#define PIDGIN_STOCK_UPLOAD "pidgin-upload"
#define PIDGIN_STOCK_NEXT "pidgin-next"
-/* Status icons */
-#define PIDGIN_STOCK_STATUS_AVAILABLE "pidgin-status-available"
-#define PIDGIN_STOCK_STATUS_AVAILABLE_I "pidgin-status-available-i"
-#define PIDGIN_STOCK_STATUS_AWAY "pidgin-status-away"
-#define PIDGIN_STOCK_STATUS_AWAY_I "pidgin-status-away-i"
-#define PIDGIN_STOCK_STATUS_BUSY "pidgin-status-busy"
-#define PIDGIN_STOCK_STATUS_BUSY_I "pidgin-status-busy-i"
-#define PIDGIN_STOCK_STATUS_CHAT "pidgin-status-chat"
-#define PIDGIN_STOCK_STATUS_INVISIBLE "pidgin-status-invisible"
-#define PIDGIN_STOCK_STATUS_XA "pidgin-status-xa"
-#define PIDGIN_STOCK_STATUS_XA_I "pidgin-status-xa-i"
-#define PIDGIN_STOCK_STATUS_LOGIN "pidgin-status-login"
-#define PIDGIN_STOCK_STATUS_LOGOUT "pidgin-status-logout"
-#define PIDGIN_STOCK_STATUS_OFFLINE "pidgin-status-offline"
-#define PIDGIN_STOCK_STATUS_OFFLINE_I "pidgin-status-offline"
-#define PIDGIN_STOCK_STATUS_PERSON "pidgin-status-person"
-#define PIDGIN_STOCK_STATUS_MESSAGE "pidgin-status-message"
-
/* Chat room emblems */
#define PIDGIN_STOCK_STATUS_IGNORED "pidgin-status-ignored"
#define PIDGIN_STOCK_STATUS_FOUNDER "pidgin-status-founder"
@@ -145,62 +126,17 @@
#define PIDGIN_ICON_SIZE_TANGO_LARGE "pidgin-icon-size-tango-large"
#define PIDGIN_ICON_SIZE_TANGO_HUGE "pidgin-icon-size-tango-huge"
-typedef struct _PidginStockIconTheme PidginStockIconTheme;
-typedef struct _PidginStockIconThemeClass PidginStockIconThemeClass;
-
-#define PIDGIN_TYPE_STOCK_ICON_THEME (pidgin_stock_icon_theme_get_type ())
-#define PIDGIN_STOCK_ICON_THEME(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIDGIN_TYPE_STOCK_ICON_THEME, PidginStockIconTheme))
-#define PIDGIN_STOCK_ICON_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PIDGIN_TYPE_STOCK_ICON_THEME, PidginStockIconThemeClass))
-#define PIDGIN_IS_STOCK_ICON_THEME(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIDGIN_TYPE_STOCK_ICON_THEME))
-#define PIDGIN_IS_STOCK_ICON_THEME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIDGIN_TYPE_STOCK_ICON_THEME))
-#define PIDGIN_STOCK_ICON_THEME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PIDGIN_TYPE_STOCK_ICON_THEME, PidginStockIconThemeClass))
-
-/**
- * PidginStockIconTheme:
- *
- * extends PidginIconTheme (gtkicon-theme.h)
- * A pidgin stock icon theme.
- * This object represents a Pidgin stock icon theme.
- *
- * PidginStockIconTheme is a PidginIconTheme Object.
- */
-struct _PidginStockIconTheme
-{
- PidginIconTheme parent;
-};
-
-struct _PidginStockIconThemeClass
-{
- PidginIconThemeClass parent_class;
-};
-
G_BEGIN_DECLS
/**
- * pidgin_stock_icon_theme_get_type:
- *
- * Returns: The #GType for a stock icon theme.
- */
-GType pidgin_stock_icon_theme_get_type(void);
-
-/**
- * pidgin_stock_load_status_icon_theme:
- * @theme: the theme to load, or null to load all the default icons
- *
- * Loades all of the icons from the status icon theme into Pidgin stock
- */
-void pidgin_stock_load_status_icon_theme(PidginStatusIconTheme *theme);
-
-
-void pidgin_stock_load_stock_icon_theme(PidginStockIconTheme *theme);
-
-/**
* pidgin_stock_init:
*
* Sets up the purple stock repository.
*/
void pidgin_stock_init(void);
+void pidgin_stock_load_stock_icon_theme(void);
+
G_END_DECLS
#endif /* _PIDGIN_STOCK_H_ */
--- a/pidgin/resources/Prefs/prefs.ui Thu Jan 21 22:35:39 2021 -0600
+++ b/pidgin/resources/Prefs/prefs.ui Sat Jan 09 04:45:28 2021 -0600
@@ -2508,60 +2508,6 @@
<property name="can_focus">False</property>
<property name="spacing">6</property>
<child>
- <object class="GtkLabel" id="label20">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Status Icon Theme:</property>
- <property name="xalign">0</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkComboBox" id="theme.status">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <signal name="changed" handler="prefs_set_status_icon_theme_cb" swapped="no"/>
- <child>
- <object class="GtkCellRendererPixbuf">
- <property name="width">32</property>
- <property name="height">32</property>
- </object>
- <attributes>
- <attribute name="pixbuf">0</attribute>
- </attributes>
- </child>
- <child>
- <object class="GtkCellRendererText">
- <property name="ellipsize">end</property>
- </object>
- <attributes>
- <attribute name="markup">1</attribute>
- </attributes>
- </child>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">6</property>
- <child>
<object class="GtkLabel" id="label18">
<property name="visible">True</property>
<property name="can_focus">False</property>
--- a/po/POTFILES.in Thu Jan 21 22:35:39 2021 -0600
+++ b/po/POTFILES.in Sat Jan 09 04:45:28 2021 -0600
@@ -325,8 +325,6 @@
pidgin/gtkconv.c
pidgin/gtkdialogs.c
pidgin/gtkdnd-hints.c
-pidgin/gtkicon-theme.c
-pidgin/gtkicon-theme-loader.c
pidgin/gtkidle.c
pidgin/gtkmedia.c
pidgin/gtknotify.c
@@ -340,7 +338,6 @@
pidgin/gtksmiley-manager.c
pidgin/gtksmiley-theme.c
pidgin/gtkstatusbox.c
-pidgin/gtkstatus-icon-theme.c
pidgin/gtkutils.c
pidgin/gtkwhiteboard.c
pidgin/gtkxfer.c