X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkcellrenderertoggle.c;h=c83f6003b71df66146c6bb873bd07ef7c4854e20;hb=a41b73fbc71f613e4ca90ae8b9dd3bd317d026d6;hp=1603ce055098ad4a9c8e99b52c397a4407cbfc6b;hpb=d4add8cefa6fa5c29bdb50f18e31cbfbfb38cc2b;p=~andy%2Fgtk diff --git a/gtk/gtkcellrenderertoggle.c b/gtk/gtkcellrenderertoggle.c index 1603ce055..c83f6003b 100644 --- a/gtk/gtkcellrenderertoggle.c +++ b/gtk/gtkcellrenderertoggle.c @@ -12,9 +12,7 @@ * 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 . */ #include "config.h" @@ -24,6 +22,19 @@ #include "gtkmarshalers.h" #include "gtkprivate.h" #include "gtktreeprivate.h" +#include "a11y/gtkbooleancellaccessible.h" + + +/** + * SECTION:gtkcellrenderertoggle + * @Short_description: Renders a toggle button in a cell + * @Title: GtkCellRendererToggle + * + * #GtkCellRendererToggle renders a toggle button in a cell. The + * button is drawn as a radio or a checkbutton, depending on the + * #GtkCellRendererToggle:radio property. + * When activated, it emits the #GtkCellRendererToggle::toggled signal. + */ static void gtk_cell_renderer_toggle_get_property (GObject *object, @@ -70,7 +81,7 @@ enum { PROP_INDICATOR_SIZE }; -#define TOGGLE_WIDTH 13 +#define TOGGLE_WIDTH 16 static guint toggle_cell_signals[LAST_SIGNAL] = { 0 }; @@ -184,6 +195,8 @@ gtk_cell_renderer_toggle_class_init (GtkCellRendererToggleClass *class) G_TYPE_STRING); g_type_class_add_private (object_class, sizeof (GtkCellRendererTogglePrivate)); + + _gtk_cell_renderer_class_set_accessible_type (cell_class, GTK_TYPE_BOOLEAN_CELL_ACCESSIBLE); } static void @@ -348,10 +361,12 @@ gtk_cell_renderer_toggle_render (GtkCellRenderer *cell, if (width <= 0 || height <= 0) return; + state = gtk_cell_renderer_get_state (cell, widget, flags); + if (!priv->activatable) - state = GTK_STATE_FLAG_INSENSITIVE; - else - state = gtk_cell_renderer_get_state (cell, widget, flags); + state |= GTK_STATE_FLAG_INSENSITIVE; + + state &= ~(GTK_STATE_FLAG_INCONSISTENT | GTK_STATE_FLAG_ACTIVE); if (priv->inconsistent) state |= GTK_STATE_FLAG_INCONSISTENT;