[gnumeric] GUI: Fix date edit problem.



commit 0bd1972f82cd23229e06c4b50be0e1a5baa30b80
Author: Morten Welinder <terra gnome org>
Date:   Mon Sep 20 12:34:08 2010 -0400

    GUI: Fix date edit problem.

 ChangeLog   |    7 ++++++-
 NEWS        |    3 +++
 src/sheet.c |   32 +++++++++++++++++++++-----------
 3 files changed, 30 insertions(+), 12 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index b94ad32..c1bd1ba 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2010-09-20  Morten Welinder  <terra gnome org>
+
+	* src/sheet.c (sheet_range_set_text): Get a format for matching
+	from upper left corner of range.  Mostly fixes #630177.
+
 2010-09-20  Andreas J. Guelzow <aguelzow pyrshep ca>
 
 	* src/wbc-gtk-actions.c (sort_by_rows): quieten spurious warning
@@ -15,7 +20,7 @@
 2010-09-12  Andreas J. Guelzow <aguelzow pyrshep ca>
 
 	* src/sheet-object-widget.c (sheet_widget_frame_*et_property): new
-	
+
 2010-09-09  Andreas J. Guelzow <aguelzow pyrshep ca>
 
 	* src/sheet-object-widget.c: add "value" property to radio_button
diff --git a/NEWS b/NEWS
index ec89c36..8def5b3 100644
--- a/NEWS
+++ b/NEWS
@@ -18,6 +18,9 @@ J.H.M. Dassen (Ray):
 	* Fix several potential and actual problems highlighted by
 	  LLVM/clang static analysis.
 
+Morten:
+	* Fix date entry problem.  [#630177]
+
 --------------------------------------------------------------------------
 Gnumeric 1.10.10
 
diff --git a/src/sheet.c b/src/sheet.c
index 048beba..7699746 100644
--- a/src/sheet.c
+++ b/src/sheet.c
@@ -2527,44 +2527,54 @@ sheet_range_set_text (GnmParsePos const *pos, GnmRange const *r, char const *str
 {
 	closure_set_cell_value	closure;
 	GSList *merged, *ptr;
+	GOFormat const *fmt;
+	Sheet *sheet;
+	GnmCell *cell;
 
 	g_return_if_fail (pos != NULL);
 	g_return_if_fail (r != NULL);
 	g_return_if_fail (str != NULL);
 
+	sheet = pos->sheet;
+
+	/* Arbitrarily Use the format from upper left cell.  */
+	cell = sheet_cell_get (sheet, r->start.col, r->start.row);
+	fmt = cell ? gnm_cell_get_format (cell) : NULL;
+
 	parse_text_value_or_expr (pos, str,
-		&closure.val, &closure.texpr,
-		NULL /* TODO : Use edit_pos format ?? */,
-		workbook_date_conv (pos->sheet->workbook));
+				  &closure.val, &closure.texpr,
+				  fmt,
+				  workbook_date_conv (sheet->workbook));
 
 	if (closure.texpr) {
-		range_init_full_sheet (&closure.expr_bound, pos->sheet);
+		range_init_full_sheet (&closure.expr_bound, sheet);
 		gnm_expr_top_get_boundingbox (closure.texpr,
-					      pos->sheet,
+					      sheet,
 					      &closure.expr_bound);
 	}
 
 	/* Store the parsed result creating any cells necessary */
-	sheet_foreach_cell_in_range (pos->sheet, CELL_ITER_ALL,
+	sheet_foreach_cell_in_range (sheet, CELL_ITER_ALL,
 		r->start.col, r->start.row, r->end.col, r->end.row,
 		(CellIterFunc)&cb_set_cell_content, &closure);
 
-	merged = gnm_sheet_merge_get_overlap (pos->sheet, r);
+	merged = gnm_sheet_merge_get_overlap (sheet, r);
 	for (ptr = merged ; ptr != NULL ; ptr = ptr->next) {
 		GnmRange const *tmp = ptr->data;
-		sheet_foreach_cell_in_range (pos->sheet, CELL_ITER_ALL,
-			tmp->start.col, tmp->start.row, tmp->end.col, tmp->end.row,
+		sheet_foreach_cell_in_range (sheet, CELL_ITER_ALL,
+			tmp->start.col, tmp->start.row,
+			tmp->end.col, tmp->end.row,
 			(CellIterFunc)&cb_clear_non_corner, (gpointer)tmp);
 	}
 	g_slist_free (merged);
 
-	sheet_region_queue_recalc (pos->sheet, r);
+	sheet_region_queue_recalc (sheet, r);
 
 	value_release (closure.val);
 	if (closure.texpr)
 		gnm_expr_top_unref (closure.texpr);
 
-	sheet_flag_status_update_range (pos->sheet, r);
+	sheet_flag_status_update_range (sheet, r);
 }
 
 static void



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