Commit 15a5a231 authored by Javier Jardón's avatar Javier Jardón
Browse files

Do not use deprecated gtk_cell_renderer_get_size()

Use gtk_cell_size_request_get_size() instead

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=629785
parent efbf0423
......@@ -29,6 +29,7 @@
#include "gtkcellrenderer.h"
#include "gtkcellrenderertext.h"
#include "gtkcellrendererpixbuf.h"
#include "gtkcellsizerequest.h"
#include "gtkmarshalers.h"
#include "gtkbindings.h"
#include "gtkdnd.h"
......@@ -2963,24 +2964,22 @@ adjust_wrap_width (GtkIconView *icon_view,
{
GtkIconViewCellInfo *text_info;
GtkIconViewCellInfo *pixbuf_info;
gint pixbuf_width, wrap_width;
gint wrap_width;
if (icon_view->priv->text_cell != -1 &&
icon_view->priv->pixbuf_cell != -1)
{
GtkRequisition min_size;
gint item_width;
text_info = g_list_nth_data (icon_view->priv->cell_list,
icon_view->priv->text_cell);
pixbuf_info = g_list_nth_data (icon_view->priv->cell_list,
icon_view->priv->pixbuf_cell);
gtk_cell_renderer_get_size (pixbuf_info->cell,
GTK_WIDGET (icon_view),
NULL, NULL, NULL,
&pixbuf_width,
NULL);
gtk_cell_size_request_get_size (GTK_CELL_SIZE_REQUEST (pixbuf_info->cell),
GTK_WIDGET (icon_view),
&min_size, NULL);
if (icon_view->priv->item_width > 0)
item_width = icon_view->priv->item_width;
......@@ -2991,9 +2990,9 @@ adjust_wrap_width (GtkIconView *icon_view,
wrap_width = item_width;
else {
if (item->width == -1 && item_width <= 0)
wrap_width = MAX (2 * pixbuf_width, 50);
wrap_width = MAX (2 * min_size.width, 50);
else
wrap_width = item_width - pixbuf_width - icon_view->priv->spacing;
wrap_width = item_width - min_size.width - icon_view->priv->spacing;
}
wrap_width -= icon_view->priv->item_padding * 2;
......@@ -3007,6 +3006,7 @@ static void
gtk_icon_view_calculate_item_size (GtkIconView *icon_view,
GtkIconViewItem *item)
{
GtkRequisition min_size;
gint spacing;
GList *l;
......@@ -3038,11 +3038,12 @@ gtk_icon_view_calculate_item_size (GtkIconView *icon_view,
if (!gtk_cell_renderer_get_visible (info->cell))
continue;
gtk_cell_renderer_get_size (info->cell, GTK_WIDGET (icon_view),
NULL, NULL, NULL,
&item->box[info->position].width,
&item->box[info->position].height);
gtk_cell_size_request_get_size (GTK_CELL_SIZE_REQUEST (info->cell),
GTK_WIDGET (icon_view),
&min_size, NULL);
item->box[info->position].width = min_size.width;
item->box[info->position].height = min_size.height;
if (icon_view->priv->item_orientation == GTK_ORIENTATION_HORIZONTAL)
{
......@@ -3066,6 +3067,7 @@ gtk_icon_view_calculate_item_size2 (GtkIconView *icon_view,
GtkIconViewItem *item,
gint *max_height)
{
GtkRequisition min_size;
GdkRectangle cell_area;
gint spacing;
GList *l;
......@@ -3094,7 +3096,7 @@ gtk_icon_view_calculate_item_size2 (GtkIconView *icon_view,
for (l = icon_view->priv->cell_list, i = 0; l; l = l->next, i++)
{
GtkIconViewCellInfo *info = (GtkIconViewCellInfo *)l->data;
if (info->pack == (k ? GTK_PACK_START : GTK_PACK_END))
continue;
......@@ -3118,14 +3120,20 @@ gtk_icon_view_calculate_item_size2 (GtkIconView *icon_view,
cell_area.width = item->width - 2 * icon_view->priv->item_padding;
cell_area.height = max_height[i];
}
gtk_cell_renderer_get_size (info->cell, GTK_WIDGET (icon_view),
&cell_area,
&item->box[info->position].x, &item->box[info->position].y,
&item->box[info->position].width, &item->box[info->position].height);
gtk_cell_size_request_get_size (GTK_CELL_SIZE_REQUEST (info->cell),
GTK_WIDGET (icon_view),
&min_size, NULL);
item->box[info->position].width = min_size.width;
item->box[info->position].height = min_size.height;
_gtk_cell_renderer_calc_offset (info->cell, &cell_area,
gtk_widget_get_direction (GTK_WIDGET (icon_view)),
item->box[info->position].width, item->box[info->position].height,
&item->box[info->position].x, &item->box[info->position].y);
item->box[info->position].x += cell_area.x;
item->box[info->position].y += cell_area.y;
if (icon_view->priv->item_orientation == GTK_ORIENTATION_HORIZONTAL)
{
item->before[info->position] = item->box[info->position].x - cell_area.x;
......
......@@ -18,8 +18,12 @@
*/
#include "config.h"
#include <string.h>
#include "gtktreeviewcolumn.h"
#include <string.h>
#include "gtkcellsizerequest.h"
#include "gtktreeview.h"
#include "gtktreeprivate.h"
#include "gtkcelllayout.h"
......@@ -2611,6 +2615,7 @@ gtk_tree_view_column_cell_get_size (GtkTreeViewColumn *tree_column,
gint *width,
gint *height)
{
GtkRequisition min_size;
GList *list;
gboolean first_cell = TRUE;
gint focus_line_width;
......@@ -2628,8 +2633,6 @@ gtk_tree_view_column_cell_get_size (GtkTreeViewColumn *tree_column,
{
GtkTreeViewColumnCellInfo *info = (GtkTreeViewColumnCellInfo *) list->data;
gboolean visible;
gint new_height = 0;
gint new_width = 0;
g_object_get (info->cell, "visible", &visible, NULL);
if (visible == FALSE)
......@@ -2638,17 +2641,13 @@ gtk_tree_view_column_cell_get_size (GtkTreeViewColumn *tree_column,
if (first_cell == FALSE && width)
*width += tree_column->spacing;
gtk_cell_renderer_get_size (info->cell,
tree_column->tree_view,
cell_area,
x_offset,
y_offset,
&new_width,
&new_height);
gtk_cell_size_request_get_size (GTK_CELL_SIZE_REQUEST (info->cell),
GTK_WIDGET (tree_column->tree_view),
&min_size, NULL);
if (height)
* height = MAX (*height, new_height + focus_line_width * 2);
info->requested_width = MAX (info->requested_width, new_width + focus_line_width * 2);
* height = MAX (*height, min_size.height + focus_line_width * 2);
info->requested_width = MAX (info->requested_width, min_size.width + focus_line_width * 2);
if (width)
* width += info->requested_width;
first_cell = FALSE;
......@@ -2839,34 +2838,38 @@ gtk_tree_view_column_cell_process_action (GtkTreeViewColumn *tree_column,
/* FOCUS */
else if (action == CELL_ACTION_FOCUS)
{
gint x_offset, y_offset, width, height;
gint x_offset, y_offset;
GtkRequisition min_size;
gtk_cell_size_request_get_size (GTK_CELL_SIZE_REQUEST (info->cell),
tree_column->tree_view,
&min_size, NULL);
gtk_cell_renderer_get_size (info->cell,
tree_column->tree_view,
&rtl_cell_area,
&x_offset, &y_offset,
&width, &height);
_gtk_cell_renderer_calc_offset (info->cell, &rtl_cell_area,
gtk_widget_get_direction (tree_column->tree_view),
min_size.width, min_size.height,
&x_offset, &y_offset);
if (special_cells > 1)
{
if (info->has_focus)
{
min_x = rtl_cell_area.x + x_offset;
max_x = min_x + width;
max_x = min_x + min_size.width;
min_y = rtl_cell_area.y + y_offset;
max_y = min_y + height;
max_y = min_y + min_size.height;
}
}
else
{
if (min_x > (rtl_cell_area.x + x_offset))
min_x = rtl_cell_area.x + x_offset;
if (max_x < rtl_cell_area.x + x_offset + width)
max_x = rtl_cell_area.x + x_offset + width;
if (max_x < rtl_cell_area.x + x_offset + min_size.width)
max_x = rtl_cell_area.x + x_offset + min_size.width;
if (min_y > (rtl_cell_area.y + y_offset))
min_y = rtl_cell_area.y + y_offset;
if (max_y < rtl_cell_area.y + y_offset + height)
max_y = rtl_cell_area.y + y_offset + height;
if (max_y < rtl_cell_area.y + y_offset + min_size.height)
max_y = rtl_cell_area.y + y_offset + min_size.height;
}
}
/* EVENT */
......@@ -3004,34 +3007,38 @@ gtk_tree_view_column_cell_process_action (GtkTreeViewColumn *tree_column,
/* FOCUS */
else if (action == CELL_ACTION_FOCUS)
{
gint x_offset, y_offset, width, height;
gint x_offset, y_offset;
GtkRequisition min_size;
gtk_cell_size_request_get_size (GTK_CELL_SIZE_REQUEST (info->cell),
tree_column->tree_view,
&min_size, NULL);
gtk_cell_renderer_get_size (info->cell,
tree_column->tree_view,
&rtl_cell_area,
&x_offset, &y_offset,
&width, &height);
_gtk_cell_renderer_calc_offset (info->cell, &rtl_cell_area,
gtk_widget_get_direction (tree_column->tree_view),
min_size.width, min_size.height,
&x_offset, &y_offset);
if (special_cells > 1)
{
if (info->has_focus)
{
min_x = rtl_cell_area.x + x_offset;
max_x = min_x + width;
max_x = min_x + min_size.width;
min_y = rtl_cell_area.y + y_offset;
max_y = min_y + height;
max_y = min_y + min_size.height;
}
}
else
{
if (min_x > (rtl_cell_area.x + x_offset))
min_x = rtl_cell_area.x + x_offset;
if (max_x < rtl_cell_area.x + x_offset + width)
max_x = rtl_cell_area.x + x_offset + width;
if (max_x < rtl_cell_area.x + x_offset + min_size.width)
max_x = rtl_cell_area.x + x_offset + min_size.width;
if (min_y > (rtl_cell_area.y + y_offset))
min_y = rtl_cell_area.y + y_offset;
if (max_y < rtl_cell_area.y + y_offset + height)
max_y = rtl_cell_area.y + y_offset + height;
if (max_y < rtl_cell_area.y + y_offset + min_size.height)
max_y = rtl_cell_area.y + y_offset + min_size.height;
}
}
/* EVENT */
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment