[PATCH] fixes to cell Validation. (take two)



Here's the second shot at the cell validation patches, again improved from
before w/ help from jody.  Patch is against latest CVS on both the HEAD
and gnome_1_4 branches, and is appropriate for 1.0.4 because it contains
only bug-fixes, not new features.

There is a little bit of gtk_dialog_run fixing in 1.1.x's
src/workbook-control-gui.c which is needed for fully correct validation
operation but which is *not* included in this patch, because it 
ended up being sandwiched in with my cell locking patch because the
code in question was so close to wbcg_locked_msg().  If you
take this but not that you should scissor the changes to
delete_sheet_if_possible() and wbcg_validation_message() out and
put them in here --- wbcg_validation_message in particular always behaved
as if you pressed the button *opposite* the one you really pressed;
that was a bad bug.

Changelog follows.

* src/validation.c:
  Return VALIDATION_STATUS_VALID on assertion failure, not "1".
  Cleaned up the VALIDATION_TYPE_AS_NUMBER case with a switch statement.
   Covered corner cases better, and clarified the error messages to
   correspond with the wording in the validation properties dialog.
  Fixed a logic bug in VALIDATION_OP_BETWEEN that caused us to ignore the
   lower bound in this case.
  Clarified the default error message.
  (same changes here to both 1.0.4 and 1.1.x branch to keep code parallel)
* src/dialogs/cell-format.glade:
  Fixed the dialog entry for the NOT_BETWEEN case: the test should
   be 'val < min || max < val' not 'val <= min || max <= val'.  Also
   changed the '||' in the dialog to english 'or'.
* src/dialogs/dialog-cell-format.c (validation_entry_to_expr,
    fmt_dialog_init_validation_expr_entry, cb_fmt_dialog_set_focus):
  cb_fmt_dialog_set_focus is not the correct place to set the proper
   flags on the GnumericExprEntry --- validation_entry_to_expr can
   be called before the field is ever focused upon, and then
   gnumeric_expr_entry_parse/gnm_expr_entry_parse will fail and
   we'll 'forget' the proper value of the arguments.  (You'll
   see this bug if you open the validation window, change something
   [the validation operation, for example] and hit okay without ever
   focusing on the min/max fields.  Open the validation window
   again and the contents previously in min/max will be gone.)
   Instead, move the flag-setting to
   fmt_dialog_init_validation_expr_entry.
* src/dialogs/dialog-cell-format.c (validation_entry_from_expr):
  *** 1.1.x BRANCH ONLY ***
  You can't cast a GnumericExprEntry to a GtkEntry.  You need
   to call gnm_expr_entry_load_from_*.  This was causing the
   validation argument fields to always show up blank.

Enjoy!
 --scott

Khaddafi genetic CIA SDI Ft. Meade COBRA JANE Noriega SEAL Team 6 
Iraq Israel Qaddafi Nazi postcard Justice Albanian Hawk Delta Force 
              ( http://lesser-magoo.lcs.mit.edu/~cananian )

Attachment: patch-1.0.4-cvs.valid2
Description: Patch for 1.0.4 cvs

Attachment: patch-HEAD-cvs.valid3
Description: Patch for 1.1.x cvs



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]