X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkcellview.c;h=94169f917d65ba7b8a6b6b245a40deef510900d7;hb=935d458fa1b72b8f1b0a36566b7c40c06870bb9f;hp=cc2daf6107e33ad098961a13a6dab37bfeba0f33;hpb=f91c04e2846de010871ee21389eb926dd18e065e;p=~andy%2Fgtk diff --git a/gtk/gtkcellview.c b/gtk/gtkcellview.c index cc2daf610..94169f917 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,10 +237,13 @@ gtk_cell_view_class_init (GtkCellViewClass *klass) /** - * GtkCellView:cell-area + * GtkCellView:cell-area: * * The #GtkCellArea rendering cells * + * If no area is specified when creating the cell view with gtk_cell_view_new_with_context() + * a horizontally oriented #GtkCellAreaBox will be used. + * * since 3.0 */ g_object_class_install_property (gobject_class, @@ -244,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. * @@ -269,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 @@ -287,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 @@ -435,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)); @@ -634,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, @@ -776,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; @@ -973,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 ()); @@ -1007,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 ()); @@ -1039,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 ()); @@ -1255,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,