Re: Bug with custom cell renderers in gtk-2.10.x
- From: Peter Clifton <pcjc2 cam ac uk>
- To: gtk-devel-list gnome org
- Subject: Re: Bug with custom cell renderers in gtk-2.10.x
- Date: Fri, 20 Oct 2006 16:58:50 +0100
Hi, I've seen this in a program I was working on.
Snipped from a post I sent to the app-devel list (and got no reply to):
Since GTK+-2.10.1, there is a rendering bug, where the widget to edit a
cell gets allocated zero height, and of course then doesn't display very
usefully.
(Version number was inferred from the tags in the CVS viewer at this
change:
http://cvs.gnome.org/viewcvs/gtk%2B/gtk/gtktreeview.c?r1=1.562&r2=1.563
"""
2006-07-18 Kristian Rietveld <kris imendio com>
Fix for #335012, reported by Matteo Nastasi.
* gtk/gtktreeview.c (gtk_tree_view_real_start_editing): if the
requested space of the editable is smaller than the cell area,
put it up above the middle of the cell area.
"""
)
Since this change, as the tree view handles the initialisation of the
custom renderer, it asks the size of the widget. GtkTextView
(incorrectly?) returns zero height and width, which causes me to get a
zero/one(?) pixel high cell renderer when editing the cell. (Displaying
the cell works fine).
Could there be a "race" between the gtktreeview wanting to know the size
before realising / displaying the widget, and the gtktextview not
knowing its size
until afterwards?
[snip] (I removed a lot of gdb output showing how the gtktextview
datastructures weren't initialised when queried for its size), will post
if requested... or see the app-devel list.
Since I'm not particularly familiar with the (perhaps necessarily)
complicated way which GTK handles widget allocation, I'm not sure
exactly what is going on here.
Any thoughts?
Is it a bug in GTK, or simply a new "feature" which needs working around
since bug #335012 was fixed?
** The solution in our application was a simple patch:
Passing the property "height-request" property when initialising the
cell-renderer
+ /* GtkWidget */
+ "height-request", cell_area->height,
(In our function:
static GtkCellEditable* cellrenderermultilinetext_start_editing(
GtkCellRenderer *cell,
GdkEvent *event,
GtkWidget *widget,
const gchar *path,
GdkRectangle *background_area,
GdkRectangle *cell_area,
GtkCellRendererState flags)
{
)
--
Peter Clifton
Electrical Engineering Division,
Engineering Department,
University of Cambridge,
9, JJ Thomson Avenue,
Cambridge
CB3 0FA
Tel: +44 (0)7729 980173
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]