* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include "gtkicontheme.h"
#include "gtkintl.h"
#include "gtkprivate.h"
+#include "a11y/gtkimagecellaccessible.h"
/**
struct _GtkCellRendererPixbufPrivate
{
GtkIconHelper *icon_helper;
+ GtkIconSize icon_size;
GdkPixbuf *pixbuf_expander_open;
GdkPixbuf *pixbuf_expander_closed;
GtkCellRendererPixbufPrivate);
priv = cellpixbuf->priv;
priv->icon_helper = _gtk_icon_helper_new ();
+ priv->icon_size = GTK_ICON_SIZE_MENU;
}
static void
g_type_class_add_private (object_class, sizeof (GtkCellRendererPixbufPrivate));
+
+ gtk_cell_renderer_class_set_accessible_type (cell_class, GTK_TYPE_IMAGE_CELL_ACCESSIBLE);
}
static void
g_value_set_string (value, _gtk_icon_helper_get_stock_id (priv->icon_helper));
break;
case PROP_STOCK_SIZE:
- g_value_set_uint (value, _gtk_icon_helper_get_icon_size (priv->icon_helper));
+ g_value_set_uint (value, priv->icon_size);
break;
case PROP_STOCK_DETAIL:
g_value_set_string (value, priv->stock_detail);
break;
case PROP_STOCK_ID:
gtk_cell_renderer_pixbuf_reset (cellpixbuf);
- _gtk_icon_helper_set_stock_id (priv->icon_helper, g_value_get_string (value), GTK_ICON_SIZE_MENU);
+ _gtk_icon_helper_set_stock_id (priv->icon_helper, g_value_get_string (value), priv->icon_size);
break;
case PROP_STOCK_SIZE:
- _gtk_icon_helper_set_icon_size (priv->icon_helper, g_value_get_uint (value));
+ priv->icon_size = g_value_get_uint (value);
+ _gtk_icon_helper_set_icon_size (priv->icon_helper, priv->icon_size);
break;
case PROP_STOCK_DETAIL:
g_free (priv->stock_detail);
break;
case PROP_ICON_NAME:
gtk_cell_renderer_pixbuf_reset (cellpixbuf);
- _gtk_icon_helper_set_icon_name (priv->icon_helper, g_value_get_string (value), GTK_ICON_SIZE_MENU);
+ _gtk_icon_helper_set_icon_name (priv->icon_helper, g_value_get_string (value), priv->icon_size);
break;
case PROP_FOLLOW_STATE:
priv->follow_state = g_value_get_boolean (value);
break;
case PROP_GICON:
gtk_cell_renderer_pixbuf_reset (cellpixbuf);
- _gtk_icon_helper_set_gicon (priv->icon_helper, g_value_get_object (value), GTK_ICON_SIZE_MENU);
+ _gtk_icon_helper_set_gicon (priv->icon_helper, g_value_get_object (value), priv->icon_size);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
gint calc_width;
gint calc_height;
gint xpad, ypad;
+ GtkStyleContext *context;
+
+ context = gtk_widget_get_style_context (widget);
+ gtk_style_context_save (context);
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_IMAGE);
if (!_gtk_icon_helper_get_is_empty (priv->icon_helper))
_gtk_icon_helper_get_size (priv->icon_helper,
gtk_widget_get_style_context (widget),
&pixbuf_width, &pixbuf_height);
+ gtk_style_context_restore (context);
+
if (priv->pixbuf_expander_open)
{
pixbuf_width = MAX (pixbuf_width, gdk_pixbuf_get_width (priv->pixbuf_expander_open));
state = gtk_cell_renderer_get_state (cell, widget, flags);
gtk_style_context_set_state (context, state);
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_IMAGE);
g_object_get (cell, "is-expander", &is_expander, NULL);
if (is_expander)