]> git.0d.be Git - empathy.git/blobdiff - libempathy-gtk/empathy-cell-renderer-expander.c
individual_view_drag_end: remove the auto scroll
[empathy.git] / libempathy-gtk / empathy-cell-renderer-expander.c
index de099fbad3d713a662162c009eaadfd10ce11ccc..7ed62b41fe986c07d06af0ab44f07441611ea9df 100644 (file)
@@ -1,6 +1,7 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /*
  * Copyright (C) 2006-2007 Imendio AB
+ * Copyright (C) 2007-2011 Collabora Ltd.
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
@@ -203,10 +204,6 @@ empathy_cell_renderer_expander_set_property (GObject      *object,
 static void
 empathy_cell_renderer_expander_finalize (GObject *object)
 {
-       EmpathyCellRendererExpanderPriv *priv;
-
-       priv = GET_PRIV (object);
-
        (* G_OBJECT_CLASS (empathy_cell_renderer_expander_parent_class)->finalize) (object);
 }
 
@@ -277,7 +274,8 @@ empathy_cell_renderer_expander_render (GtkCellRenderer      *cell,
        EmpathyCellRendererExpanderPriv *priv;
        gint                            x_offset, y_offset;
        guint                           xpad, ypad;
-
+       GtkStyleContext                 *style;
+       GtkStateFlags                    state;
 
        expander = (EmpathyCellRendererExpander *) cell;
        priv = GET_PRIV (expander);
@@ -292,12 +290,28 @@ empathy_cell_renderer_expander_render (GtkCellRenderer      *cell,
                      "ypad", &ypad,
                      NULL);
 
-       gtk_render_expander (gtk_widget_get_style_context (widget),
+       style = gtk_widget_get_style_context (widget);
+
+       gtk_style_context_save (style);
+       gtk_style_context_add_class (style, GTK_STYLE_CLASS_EXPANDER);
+
+       state = gtk_cell_renderer_get_state (cell, widget, flags);
+
+       if (priv->expander_style == GTK_EXPANDER_COLLAPSED)
+               state |= GTK_STATE_FLAG_NORMAL;
+       else
+               state |= GTK_STATE_FLAG_ACTIVE;
+
+       gtk_style_context_set_state (style, state);
+
+       gtk_render_expander (style,
                             cr,
                             cell_area->x + x_offset + xpad,
                             cell_area->y + y_offset + ypad,
                             priv->expander_size,
                             priv->expander_size);
+
+       gtk_style_context_restore (style);
 }
 
 static gboolean
@@ -309,11 +323,9 @@ empathy_cell_renderer_expander_activate (GtkCellRenderer      *cell,
                                        const GdkRectangle   *cell_area,
                                        GtkCellRendererState  flags)
 {
-       EmpathyCellRendererExpander     *expander;
        EmpathyCellRendererExpanderPriv *priv;
        GtkTreePath                    *path;
 
-       expander = EMPATHY_CELL_RENDERER_EXPANDER (cell);
        priv = GET_PRIV (cell);
 
        if (!GTK_IS_TREE_VIEW (widget) || !priv->activatable)