Le dimanche 16 décembre 2007 à 10:26 -0500, Jody Goldberg a écrit :
> The current behavior is broken, and this seems like a reasonable
> solution, but the api worries me.  The behaviour should be
> consistent across the various prop dialogs.  We're also too close to
> 1.8.0 to get this properly tested (not your fault).  Please update
> with the comments below, and we can try get it in for 1.8.1.

I don't know if we have other open reproductible crasher, but this issue
is almost one.

> On Sat, Dec 08, 2007 at 08:51:23PM +0100, Emmanuel Pacaud wrote:
> >  gnm_expr_entry_parse (GnmExprEntry *gee, GnmParsePos const *pp,
> >                   GnmParseError *perr, gboolean start_sel,
> > -                 GnmExprParseFlags flags)
> > +                 GnmExprParseFlags flags, gboolean update_entry)
> This is the only piece that gives me pause.
> Why do we need different behaviours for update_entry.

That's where I need your help. I've done the fix in a way it should not
impact other part of gnumeric, by having a parameter that keep the
current behaviour of gnm_expr_entry_parse. I'm a bit puzzled by this
behaviour, and don't understand why a parse function would change the
content of the widget entry. But I didn't remove the entry update
completely, because I don't know how the other part of gnumeric would be
affected by such a change. It seems gnm_expr_entry_parse has always
updated its entry after the parsing. 
 
> > +static void
> > +cb_graph_dim_entry_changed (GnmExprEntry *gee,
> > +                       GraphDimEditor *editor)
> > +{
> > +   if (!GTK_WIDGET_SENSITIVE (gee) || editor->dataset == NULL)
> > +           return;
> > +
> > +   get_texpr (editor, NULL);
> > +}
> > +
> > +static void
> > +cb_graph_dim_editor_update (GnmExprEntry *gee,
> > +                       G_GNUC_UNUSED gboolean user_requested,
> > +                       GraphDimEditor *editor)
> > +{
> > +   GnmExprTop const *texpr;
> > +
> > +   /* Ignore changes while we are insensitive. useful for displaying
> > +    * values, without storing then as Data.  Also ignore updates if the
> > +    * dataset has been cleared via the weakref handler  */
> > +   if (!GTK_WIDGET_SENSITIVE (gee) || editor->dataset == NULL)
> > +           return;
> > +
> > +   if (get_texpr (editor, &texpr)) {
> That repeated chunk seems like it belongs in get_texpr

I'll change that.

> > +static gboolean
> > +get_texpr (GraphDimEditor *editor, GnmExprTop const **new_texpr)
> >  {
> ...
> >             if (texpr == NULL) {
> > +                   if (editor->data_type == GOG_DATA_SCALAR) {
> > +                           if (new_texpr != NULL)
> >                                     texpr = gnm_expr_top_new_constant (
> >                                             value_new_string 
> > (gnm_expr_entry_get_text (gee)));
> Looks like something is missing here.  Don't we want to set is_valid
> TRUE if texpr != NULL ?

is_valid is already initialized to TRUE.

        Emmanuel.

_______________________________________________
gnumeric-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gnumeric-list

Reply via email to