X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkcellview.c;h=d5d33ede3221e98c238da93eb3607c0dba842931;hb=aaedf5a35219b034a244730564b8fdf2b7d32540;hp=d6a87af0e5baa74747f48696b180885fc76508f7;hpb=4765f37484b28b99b18b8e7c96bc71754cfe9ebd;p=~andy%2Fgtk diff --git a/gtk/gtkcellview.c b/gtk/gtkcellview.c index d6a87af0e..d5d33ede3 100644 --- a/gtk/gtkcellview.c +++ b/gtk/gtkcellview.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" @@ -93,6 +91,7 @@ static void gtk_cell_view_buildable_custom_tag_end (GtkBuildable const gchar *tagname, gpointer *data); +static GtkSizeRequestMode gtk_cell_view_get_request_mode (GtkWidget *widget); static void gtk_cell_view_get_preferred_width (GtkWidget *widget, gint *minimum_size, gint *natural_size); @@ -125,16 +124,16 @@ struct _GtkCellViewPrivate GtkCellArea *area; GtkCellAreaContext *context; - GtkOrientation orientation; - GdkRGBA background; - gboolean background_set; gulong size_changed_id; gulong row_changed_id; - guint32 draw_sensitive : 1; - guint32 fit_model : 1; + GtkOrientation orientation; + + guint background_set : 1; + guint draw_sensitive : 1; + guint fit_model : 1; }; static GtkBuildableIface *parent_buildable_iface; @@ -175,6 +174,7 @@ gtk_cell_view_class_init (GtkCellViewClass *klass) widget_class->draw = gtk_cell_view_draw; widget_class->size_allocate = gtk_cell_view_size_allocate; + widget_class->get_request_mode = gtk_cell_view_get_request_mode; widget_class->get_preferred_width = gtk_cell_view_get_preferred_width; widget_class->get_preferred_height = gtk_cell_view_get_preferred_height; widget_class->get_preferred_width_for_height = gtk_cell_view_get_preferred_width_for_height; @@ -190,15 +190,23 @@ gtk_cell_view_class_init (GtkCellViewClass *klass) P_("Background color as a string"), NULL, GTK_PARAM_WRITABLE)); + + /** + * GtkCellView:background-gdk: + * + * The background color as a #GdkColor + * + * Deprecated: 3.4: Use #GtkCellView:background-rgba instead. + */ g_object_class_install_property (gobject_class, PROP_BACKGROUND_GDK, g_param_spec_boxed ("background-gdk", P_("Background color"), P_("Background color as a GdkColor"), GDK_TYPE_COLOR, - GTK_PARAM_READWRITE)); + GTK_PARAM_READWRITE | G_PARAM_DEPRECATED)); /** - * GtkCellView:background-rgba + * GtkCellView:background-rgba: * * The background color as a #GdkRGBA * @@ -213,7 +221,7 @@ gtk_cell_view_class_init (GtkCellViewClass *klass) GTK_PARAM_READWRITE)); /** - * GtkCellView:model + * GtkCellView:model: * * The model for cell view * @@ -229,7 +237,7 @@ gtk_cell_view_class_init (GtkCellViewClass *klass) /** - * GtkCellView:cell-area + * GtkCellView:cell-area: * * The #GtkCellArea rendering cells * @@ -247,7 +255,7 @@ gtk_cell_view_class_init (GtkCellViewClass *klass) GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** - * GtkCellView:cell-area-context + * GtkCellView:cell-area-context: * * The #GtkCellAreaContext used to compute the geometry of the cell view. * @@ -272,7 +280,7 @@ gtk_cell_view_class_init (GtkCellViewClass *klass) GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** - * GtkCellView:draw-sensitive + * GtkCellView:draw-sensitive: * * Whether all cells should be draw as sensitive for this view regardless * of the actual cell properties (used to make menus with submenus appear @@ -290,7 +298,7 @@ gtk_cell_view_class_init (GtkCellViewClass *klass) GTK_PARAM_READWRITE)); /** - * GtkCellView:fit-model + * GtkCellView:fit-model: * * Whether the view should request enough space to always fit * the size of every row in the model (used by the combo box to @@ -438,20 +446,33 @@ gtk_cell_view_set_property (GObject *object, break; case PROP_BACKGROUND: { - GdkColor color; - + GdkRGBA color; + if (!g_value_get_string (value)) - gtk_cell_view_set_background_color (view, NULL); - else if (gdk_color_parse (g_value_get_string (value), &color)) - gtk_cell_view_set_background_color (view, &color); + gtk_cell_view_set_background_rgba (view, NULL); + else if (gdk_rgba_parse (&color, g_value_get_string (value))) + gtk_cell_view_set_background_rgba (view, &color); else g_warning ("Don't know color `%s'", g_value_get_string (value)); - - g_object_notify (object, "background-gdk"); + + g_object_notify (object, "background-rgba"); + g_object_notify (object, "background-gdk"); } break; case PROP_BACKGROUND_GDK: - gtk_cell_view_set_background_color (view, g_value_get_boxed (value)); + { + GdkColor *color; + GdkRGBA rgba; + + color = g_value_get_boxed (value); + + rgba.red = color->red / 65535.0; + rgba.green = color->green / 65535.0; + rgba.blue = color->blue / 65535.0; + rgba.alpha = 1.0; + + gtk_cell_view_set_background_rgba (view, &rgba); + } break; case PROP_BACKGROUND_RGBA: gtk_cell_view_set_background_rgba (view, g_value_get_boxed (value)); @@ -575,7 +596,7 @@ gtk_cell_view_size_allocate (GtkWidget *widget, /* The first cell view in context is responsible for allocating the context at allocate time * (or the cellview has its own context and is not grouped with any other cell views) * - * If the cellview is in "fit model" mode, we assume its not in context and needs to + * If the cellview is in "fit model" mode, we assume it's not in context and needs to * allocate every time. */ if (priv->fit_model) @@ -637,6 +658,15 @@ gtk_cell_view_request_model (GtkCellView *cellview, } } +static GtkSizeRequestMode +gtk_cell_view_get_request_mode (GtkWidget *widget) +{ + GtkCellView *cellview = GTK_CELL_VIEW (widget); + GtkCellViewPrivate *priv = cellview->priv; + + return gtk_cell_area_get_request_mode (priv->area); +} + static void gtk_cell_view_get_preferred_width (GtkWidget *widget, gint *minimum_size, @@ -779,8 +809,6 @@ gtk_cell_view_draw (GtkWidget *widget, if (gtk_widget_get_state_flags (widget) & GTK_STATE_FLAG_PRELIGHT) state = GTK_CELL_RENDERER_PRELIT; - else if (gtk_widget_get_state_flags (widget) & GTK_STATE_FLAG_INSENSITIVE) - state = GTK_CELL_RENDERER_INSENSITIVE; else state = 0; @@ -965,7 +993,7 @@ gtk_cell_view_new_with_context (GtkCellArea *area, * @text: the text to display in the cell view * * Creates a new #GtkCellView widget, adds a #GtkCellRendererText - * to it, and makes its show @text. + * to it, and makes it show @text. * * Return value: A newly created #GtkCellView widget. * @@ -976,7 +1004,7 @@ gtk_cell_view_new_with_text (const gchar *text) { GtkCellView *cellview; GtkCellRenderer *renderer; - GValue value = {0, }; + GValue value = G_VALUE_INIT; cellview = GTK_CELL_VIEW (gtk_cell_view_new ()); @@ -1010,7 +1038,7 @@ gtk_cell_view_new_with_markup (const gchar *markup) { GtkCellView *cellview; GtkCellRenderer *renderer; - GValue value = {0, }; + GValue value = G_VALUE_INIT; cellview = GTK_CELL_VIEW (gtk_cell_view_new ()); @@ -1030,8 +1058,8 @@ gtk_cell_view_new_with_markup (const gchar *markup) * gtk_cell_view_new_with_pixbuf: * @pixbuf: the image to display in the cell view * - * Creates a new #GtkCellView widget, adds a #GtkCellRendererPixbuf - * to it, and makes its show @pixbuf. + * Creates a new #GtkCellView widget, adds a #GtkCellRendererPixbuf + * to it, and makes it show @pixbuf. * * Return value: A newly created #GtkCellView widget. * @@ -1042,7 +1070,7 @@ gtk_cell_view_new_with_pixbuf (GdkPixbuf *pixbuf) { GtkCellView *cellview; GtkCellRenderer *renderer; - GValue value = {0, }; + GValue value = G_VALUE_INIT; cellview = GTK_CELL_VIEW (gtk_cell_view_new ()); @@ -1258,6 +1286,8 @@ gtk_cell_view_get_size_of_row (GtkCellView *cell_view, * Sets the background color of @view. * * Since: 2.6 + * + * Deprecated: 3.4: Use gtk_cell_view_set_background_rgba() instead. */ void gtk_cell_view_set_background_color (GtkCellView *cell_view,