[Xfce4-commits] <exo:stephan/gtk3> Port exo-cell-renderer-ellipsized-text
Stephan Arts
noreply at xfce.org
Sat May 5 14:54:01 CEST 2012
Updating branch refs/heads/stephan/gtk3
to f7cc8b5f39b6f9c936e81ee3f2553669f027a3a0 (commit)
from f0c30b9f29b953c26cfbf20c82e811034068da55 (commit)
commit f7cc8b5f39b6f9c936e81ee3f2553669f027a3a0
Author: Stephan Arts <stephan at xfce.org>
Date: Sat May 5 14:52:42 2012 +0200
Port exo-cell-renderer-ellipsized-text
exo/exo-cell-renderer-ellipsized-text.c | 63 +++++++++++++++++-------------
exo/exo-gtk-extensions.c | 8 ++--
exo/exo-gtk-extensions.h | 2 +-
exo/exo-icon-bar.c | 10 ++--
exo/exo-icon-view.c | 26 ++++++------
exo/exo-icon-view.h | 2 +-
exo/exo-toolbars-view.c | 2 +-
7 files changed, 61 insertions(+), 52 deletions(-)
diff --git a/exo/exo-cell-renderer-ellipsized-text.c b/exo/exo-cell-renderer-ellipsized-text.c
index 5836221..4da148f 100644
--- a/exo/exo-cell-renderer-ellipsized-text.c
+++ b/exo/exo-cell-renderer-ellipsized-text.c
@@ -70,17 +70,16 @@ static void exo_cell_renderer_ellipsized_text_set_property (GObject
GParamSpec *pspec);
static void exo_cell_renderer_ellipsized_text_get_size (GtkCellRenderer *renderer,
GtkWidget *widget,
- GdkRectangle *cell_area,
+ const GdkRectangle *cell_area,
gint *x_offset,
gint *y_offset,
gint *width,
gint *height);
static void exo_cell_renderer_ellipsized_text_render (GtkCellRenderer *renderer,
- GdkWindow *window,
+ cairo_t *cr,
GtkWidget *widget,
- GdkRectangle *background_area,
- GdkRectangle *cell_area,
- GdkRectangle *expose_area,
+ const GdkRectangle *background_area,
+ const GdkRectangle *cell_area,
GtkCellRendererState flags);
@@ -188,19 +187,20 @@ exo_cell_renderer_ellipsized_text_set_property (GObject *object,
static void
-exo_cell_renderer_ellipsized_text_get_size (GtkCellRenderer *renderer,
- GtkWidget *widget,
- GdkRectangle *cell_area,
- gint *x_offset,
- gint *y_offset,
- gint *width,
- gint *height)
+exo_cell_renderer_ellipsized_text_get_size (GtkCellRenderer *renderer,
+ GtkWidget *widget,
+ const GdkRectangle *cell_area,
+ gint *x_offset,
+ gint *y_offset,
+ gint *width,
+ gint *height)
{
ExoCellRendererEllipsizedTextPrivate *priv = EXO_CELL_RENDERER_ELLIPSIZED_TEXT_GET_PRIVATE (renderer);
gint focus_line_width;
gint focus_padding;
gint text_height;
gint text_width;
+ GdkRectangle aligned_area;
/* determine the dimensions of the text from the GtkCellRendererText */
(*GTK_CELL_RENDERER_CLASS (exo_cell_renderer_ellipsized_text_parent_class)->get_size) (renderer, widget, NULL, NULL, NULL, &text_width, &text_height);
@@ -227,16 +227,21 @@ exo_cell_renderer_ellipsized_text_get_size (GtkCellRenderer *renderer,
/* update the x/y offsets */
if (G_LIKELY (cell_area != NULL))
{
+ gtk_cell_renderer_get_aligned_area (renderer,
+ widget,
+ 0,
+ cell_area,
+ &aligned_area);
if (G_LIKELY (x_offset != NULL))
{
- *x_offset = ((gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) ? (1.0 - renderer->xalign) : renderer->xalign)
+ *x_offset = ((gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) ? (1.0 - aligned_area.x) : aligned_area.x)
* (cell_area->width - text_width);
*x_offset = MAX (*x_offset, 0);
}
if (G_LIKELY (y_offset != NULL))
{
- *y_offset = renderer->yalign * (cell_area->height - text_height);
+ *y_offset = aligned_area.y * (cell_area->height - text_height);
*y_offset = MAX (*y_offset, 0);
}
}
@@ -246,17 +251,17 @@ exo_cell_renderer_ellipsized_text_get_size (GtkCellRenderer *renderer,
static void
exo_cell_renderer_ellipsized_text_render (GtkCellRenderer *renderer,
- GdkWindow *window,
+ cairo_t *cr,
GtkWidget *widget,
- GdkRectangle *background_area,
- GdkRectangle *cell_area,
- GdkRectangle *expose_area,
+ const GdkRectangle *background_area,
+ const GdkRectangle *cell_area,
GtkCellRendererState flags)
{
ExoCellRendererEllipsizedTextPrivate *priv = EXO_CELL_RENDERER_ELLIPSIZED_TEXT_GET_PRIVATE (renderer);
GdkRectangle text_area;
GtkStateType state;
- cairo_t *cr;
+ GtkStyleContext *style_context;
+ GdkRGBA bg_color;
gint focus_line_width;
gint focus_padding;
gint text_height;
@@ -264,6 +269,8 @@ exo_cell_renderer_ellipsized_text_render (GtkCellRenderer *renderer,
gint x0, x1;
gint y0, y1;
+ style_context = gtk_widget_get_style_context (widget);
+
/* determine the text cell areas */
if (G_UNLIKELY (!priv->follow_state))
{
@@ -275,19 +282,19 @@ exo_cell_renderer_ellipsized_text_render (GtkCellRenderer *renderer,
/* determine the widget state */
if ((flags & GTK_CELL_RENDERER_SELECTED) == GTK_CELL_RENDERER_SELECTED)
{
- if (GTK_WIDGET_HAS_FOCUS (widget))
+ if (gtk_widget_has_focus (widget))
state = GTK_STATE_SELECTED;
else
state = GTK_STATE_ACTIVE;
}
else if ((flags & GTK_CELL_RENDERER_PRELIT) == GTK_CELL_RENDERER_PRELIT
- && GTK_WIDGET_STATE (widget) == GTK_STATE_PRELIGHT)
+ && gtk_widget_get_state (widget) == GTK_STATE_PRELIGHT)
{
state = GTK_STATE_PRELIGHT;
}
else
{
- if (GTK_WIDGET_STATE (widget) == GTK_STATE_INSENSITIVE)
+ if (gtk_widget_get_state (widget) == GTK_STATE_INSENSITIVE)
state = GTK_STATE_INSENSITIVE;
else
state = GTK_STATE_NORMAL;
@@ -323,7 +330,6 @@ exo_cell_renderer_ellipsized_text_render (GtkCellRenderer *renderer,
/* Cairo produces nicer results than using a polygon
* and so we use it directly if possible.
*/
- cr = gdk_cairo_create (window);
cairo_move_to (cr, x0 + 5, y0);
cairo_line_to (cr, x1 - 5, y0);
cairo_curve_to (cr, x1 - 5, y0, x1, y0, x1, y0 + 5);
@@ -333,7 +339,10 @@ exo_cell_renderer_ellipsized_text_render (GtkCellRenderer *renderer,
cairo_curve_to (cr, x0 + 5, y1, x0, y1, x0, y1 - 5);
cairo_line_to (cr, x0, y0 + 5);
cairo_curve_to (cr, x0, y0 + 5, x0, y0, x0 + 5, y0);
- gdk_cairo_set_source_color (cr, &widget->style->base[state]);
+ gtk_style_context_get_background_color (style_context,
+ state,
+ &bg_color);
+ gdk_cairo_set_source_rgba (cr, &bg_color);
cairo_fill (cr);
cairo_destroy (cr);
}
@@ -341,15 +350,15 @@ exo_cell_renderer_ellipsized_text_render (GtkCellRenderer *renderer,
/* draw the focus indicator */
if ((flags & GTK_CELL_RENDERER_FOCUSED) != 0)
{
- gtk_paint_focus (widget->style, window, GTK_WIDGET_STATE (widget), NULL, widget, "icon_view", x0, y0, text_width, text_height);
+ gtk_render_focus (style_context, cr, x0, y0, text_width, text_height);
flags &= ~GTK_CELL_RENDERER_FOCUSED;
}
}
}
/* render the text using the GtkCellRendererText */
- (*GTK_CELL_RENDERER_CLASS (exo_cell_renderer_ellipsized_text_parent_class)->render) (renderer, window, widget, background_area,
- &text_area, expose_area, flags);
+ (*GTK_CELL_RENDERER_CLASS (exo_cell_renderer_ellipsized_text_parent_class)->render) (renderer, cr, widget, background_area,
+ &text_area, flags);
}
diff --git a/exo/exo-gtk-extensions.c b/exo/exo-gtk-extensions.c
index fc22297..5148b20 100644
--- a/exo/exo-gtk-extensions.c
+++ b/exo/exo-gtk-extensions.c
@@ -52,7 +52,7 @@
static gboolean
later_destroy (gpointer object)
{
- gtk_object_destroy (GTK_OBJECT (object));
+ gtk_widget_destroy (GTK_OBJECT (object));
g_object_unref (G_OBJECT (object));
return FALSE;
}
@@ -60,14 +60,14 @@ later_destroy (gpointer object)
/**
- * exo_gtk_object_destroy_later:
- * @object : a #GtkObject.
+ * exo_gtk_widget_destroy_later:
+ * @object : a #GtkWidget.
*
* Schedules an idle function to destroy the specified @object
* when the application enters the main loop the next time.
**/
void
-exo_gtk_object_destroy_later (GtkObject *object)
+exo_gtk_widget_destroy_later (GtkWidget *object)
{
g_return_if_fail (GTK_IS_OBJECT (object));
diff --git a/exo/exo-gtk-extensions.h b/exo/exo-gtk-extensions.h
index 8ef76d8..dbc3db9 100644
--- a/exo/exo-gtk-extensions.h
+++ b/exo/exo-gtk-extensions.h
@@ -30,7 +30,7 @@
G_BEGIN_DECLS
-void exo_gtk_object_destroy_later (GtkObject *object);
+void exo_gtk_widget_destroy_later (GtkWidget *object);
void exo_gtk_file_chooser_add_thumbnail_preview (GtkFileChooser *chooser);
diff --git a/exo/exo-icon-bar.c b/exo/exo-icon-bar.c
index f3d5c86..2f76198 100644
--- a/exo/exo-icon-bar.c
+++ b/exo/exo-icon-bar.c
@@ -113,7 +113,7 @@ enum
-static void exo_icon_bar_destroy (GtkObject *object);
+static void exo_icon_bar_destroy (GtkWidget *object);
static void exo_icon_bar_finalize (GObject *object);
static void exo_icon_bar_get_property (GObject *object,
guint prop_id,
@@ -237,7 +237,7 @@ G_DEFINE_TYPE (ExoIconBar, exo_icon_bar, GTK_TYPE_CONTAINER)
static void
exo_icon_bar_class_init (ExoIconBarClass *klass)
{
- GtkObjectClass *gtkobject_class;
+ GtkWidgetClass *gtkobject_class;
GtkWidgetClass *gtkwidget_class;
GObjectClass *gobject_class;
@@ -442,7 +442,7 @@ exo_icon_bar_init (ExoIconBar *icon_bar)
static void
-exo_icon_bar_destroy (GtkObject *object)
+exo_icon_bar_destroy (GtkWidget *object)
{
ExoIconBar *icon_bar = EXO_ICON_BAR (object);
@@ -860,7 +860,7 @@ exo_icon_bar_set_adjustments (ExoIconBar *icon_bar,
{
icon_bar->priv->hadjustment = hadj;
g_object_ref (icon_bar->priv->hadjustment);
- gtk_object_sink (GTK_OBJECT (icon_bar->priv->hadjustment));
+ gtk_widget_sink (GTK_OBJECT (icon_bar->priv->hadjustment));
g_signal_connect (icon_bar->priv->hadjustment, "value_changed",
G_CALLBACK (exo_icon_bar_adjustment_changed), icon_bar);
@@ -871,7 +871,7 @@ exo_icon_bar_set_adjustments (ExoIconBar *icon_bar,
{
icon_bar->priv->vadjustment = vadj;
g_object_ref (icon_bar->priv->vadjustment);
- gtk_object_sink (GTK_OBJECT (icon_bar->priv->vadjustment));
+ gtk_widget_sink (GTK_OBJECT (icon_bar->priv->vadjustment));
g_signal_connect (icon_bar->priv->vadjustment, "value_changed",
G_CALLBACK (exo_icon_bar_adjustment_changed), icon_bar);
diff --git a/exo/exo-icon-view.c b/exo/exo-icon-view.c
index 9587596..44e5bde 100644
--- a/exo/exo-icon-view.c
+++ b/exo/exo-icon-view.c
@@ -2786,7 +2786,7 @@ exo_icon_view_set_adjustments (ExoIconView *icon_view,
{
icon_view->priv->hadjustment = hadj;
g_object_ref (icon_view->priv->hadjustment);
- gtk_object_sink (GTK_OBJECT (icon_view->priv->hadjustment));
+ gtk_widget_sink (GTK_OBJECT (icon_view->priv->hadjustment));
g_signal_connect (icon_view->priv->hadjustment, "value-changed",
G_CALLBACK (exo_icon_view_adjustment_changed),
@@ -2798,7 +2798,7 @@ exo_icon_view_set_adjustments (ExoIconView *icon_view,
{
icon_view->priv->vadjustment = vadj;
g_object_ref (icon_view->priv->vadjustment);
- gtk_object_sink (GTK_OBJECT (icon_view->priv->vadjustment));
+ gtk_widget_sink (GTK_OBJECT (icon_view->priv->vadjustment));
g_signal_connect (icon_view->priv->vadjustment, "value-changed",
G_CALLBACK (exo_icon_view_adjustment_changed),
@@ -4712,7 +4712,7 @@ exo_icon_view_cell_layout_pack_start (GtkCellLayout *layout,
_exo_return_if_fail (exo_icon_view_get_cell_info (icon_view, renderer) == NULL);
g_object_ref (renderer);
- gtk_object_sink (GTK_OBJECT (renderer));
+ gtk_widget_sink (GTK_OBJECT (renderer));
info = g_slice_new0 (ExoIconViewCellInfo);
info->cell = renderer;
@@ -4741,7 +4741,7 @@ exo_icon_view_cell_layout_pack_end (GtkCellLayout *layout,
_exo_return_if_fail (exo_icon_view_get_cell_info (icon_view, renderer) == NULL);
g_object_ref (renderer);
- gtk_object_sink (GTK_OBJECT (renderer));
+ gtk_widget_sink (GTK_OBJECT (renderer));
info = g_slice_new0 (ExoIconViewCellInfo);
info->cell = renderer;
@@ -6765,7 +6765,7 @@ exo_icon_view_drag_begin (GtkWidget *widget,
{
ExoIconView *icon_view;
ExoIconViewItem *item;
- GdkPixmap *icon;
+ cairo_surface_t *icon;
gint x, y;
GtkTreePath *path;
@@ -7388,23 +7388,23 @@ exo_icon_view_get_dest_item_at_pos (ExoIconView *icon_view,
* @icon_view : a #ExoIconView
* @path : a #GtkTreePath in @icon_view
*
- * Creates a #GdkPixmap representation of the item at @path.
+ * Creates a #cairo_surface_t representation of the item at @path.
* This image is used for a drag icon.
*
* Returns: a newly-allocated pixmap of the drag icon.
*
* Since: 0.3.1
**/
-GdkPixmap*
+cairo_surface_t *
exo_icon_view_create_drag_icon (ExoIconView *icon_view,
GtkTreePath *path)
{
- GdkRectangle area;
- GtkWidget *widget = GTK_WIDGET (icon_view);
- GdkPixmap *drawable;
- GdkGC *gc;
- GList *lp;
- gint idx;
+ GdkRectangle area;
+ GtkWidget *widget = GTK_WIDGET (icon_view);
+ cairo_surface_t *drawable;
+ GdkGC *gc;
+ GList *lp;
+ gint idx;
g_return_val_if_fail (EXO_IS_ICON_VIEW (icon_view), NULL);
g_return_val_if_fail (gtk_tree_path_get_depth (path) > 0, NULL);
diff --git a/exo/exo-icon-view.h b/exo/exo-icon-view.h
index 0dec327..f5430a3 100644
--- a/exo/exo-icon-view.h
+++ b/exo/exo-icon-view.h
@@ -311,7 +311,7 @@ gboolean exo_icon_view_get_dest_item_at_pos (ExoIconView
gint drag_y,
GtkTreePath **path,
ExoIconViewDropPosition *pos);
-GdkPixmap *exo_icon_view_create_drag_icon (ExoIconView *icon_view,
+cairo_surface_t *exo_icon_view_create_drag_icon (ExoIconView *icon_view,
GtkTreePath *path);
diff --git a/exo/exo-toolbars-view.c b/exo/exo-toolbars-view.c
index aeb5c2d..21410c4 100644
--- a/exo/exo-toolbars-view.c
+++ b/exo/exo-toolbars-view.c
@@ -663,7 +663,7 @@ exo_toolbars_view_drag_data_received (GtkWidget *toolbar,
data_is_separator (id),
NULL);
g_object_ref (G_OBJECT (view->priv->dragged_item));
- gtk_object_sink (GTK_OBJECT (view->priv->dragged_item));
+ gtk_widget_sink (GTK_OBJECT (view->priv->dragged_item));
}
else
{
More information about the Xfce4-commits
mailing list