[gnumeric] scenarios: fix undo.
- From: Morten Welinder <mortenw src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnumeric] scenarios: fix undo.
- Date: Mon, 30 Nov 2009 15:18:05 +0000 (UTC)
commit f39d83c698b71d62a417c4c659222aa2db5827cd
Author: Morten Welinder <terra gnome org>
Date: Mon Nov 30 10:17:49 2009 -0500
scenarios: fix undo.
src/commands.c | 8 +++++---
src/commands.h | 5 ++---
src/dialogs/dialog-scenarios.c | 10 +++++-----
3 files changed, 12 insertions(+), 11 deletions(-)
---
diff --git a/src/commands.c b/src/commands.c
index 7361839..721653e 100644
--- a/src/commands.c
+++ b/src/commands.c
@@ -6035,7 +6035,8 @@ static gboolean
cmd_scenario_mngr_redo (GnmCommand *cmd, WorkbookControl *wbc)
{
CmdScenarioMngr *me = CMD_SCENARIO_MNGR (cmd);
- me->undo = gnm_scenario_apply (me->sc);
+ if (!me->undo)
+ me->undo = gnm_scenario_apply (me->sc);
return FALSE;
}
@@ -6063,16 +6064,17 @@ cmd_scenario_mngr_finalize (GObject *cmd)
}
gboolean
-cmd_scenario_mngr (WorkbookControl *wbc, GnmScenario *sc)
+cmd_scenario_mngr (WorkbookControl *wbc, GnmScenario *sc, GOUndo *undo)
{
CmdScenarioMngr *me;
g_return_val_if_fail (IS_WORKBOOK_CONTROL (wbc), TRUE);
- g_return_val_if_fail (GNM_IS_SCENARIO (wbc), TRUE);
+ g_return_val_if_fail (GNM_IS_SCENARIO (sc), TRUE);
me = g_object_new (CMD_SCENARIO_MNGR_TYPE, NULL);
me->sc = g_object_ref (sc);
+ me->undo = g_object_ref (undo);
me->cmd.sheet = sc->sheet;
me->cmd.size = 1;
me->cmd.cmd_descriptor = g_strdup (_("Scenario Show"));
diff --git a/src/commands.h b/src/commands.h
index 2bf21f0..f6b79fa 100644
--- a/src/commands.h
+++ b/src/commands.h
@@ -112,10 +112,9 @@ gboolean cmd_define_name (WorkbookControl *wbc, char const *name,
char const *descriptor);
gboolean cmd_remove_name (WorkbookControl *wbc, GnmNamedExpr *nexpr);
-/* FIXME: figure out how to resolve this better. */
-struct _scenario_cmd_t;
gboolean cmd_scenario_add (WorkbookControl *wbc, GnmScenario *s, Sheet *sheet);
-gboolean cmd_scenario_mngr (WorkbookControl *wbc, GnmScenario *sc);
+gboolean cmd_scenario_mngr (WorkbookControl *wbc, GnmScenario *sc,
+ GOUndo *undo);
/* FIXME: figure out how to resolve this better. */
struct _data_shuffling_t;
diff --git a/src/dialogs/dialog-scenarios.c b/src/dialogs/dialog-scenarios.c
index cb23299..e66afa0 100644
--- a/src/dialogs/dialog-scenarios.c
+++ b/src/dialogs/dialog-scenarios.c
@@ -558,7 +558,7 @@ scenarios_ok_clicked_cb (G_GNUC_UNUSED GtkWidget *button,
{
if (state->current) {
WorkbookControl *wbc = WORKBOOK_CONTROL (state->base.wbcg);
- cmd_scenario_mngr (wbc, state->current);
+ cmd_scenario_mngr (wbc, state->current, state->undo);
}
scenario_manager_ok (state->base.sheet);
@@ -641,11 +641,11 @@ scenarios_show_clicked_cb (G_GNUC_UNUSED GtkWidget *button,
gtk_tree_model_get (GTK_TREE_MODEL (model), &iter, 0, &value, -1);
+ restore_old_values (state);
+
wbc = WORKBOOK_CONTROL (state->base.wbcg);
- state->current =
- gnm_sheet_scenario_find (state->base.sheet, value);
- state->undo =
- gnm_scenario_apply (state->current);
+ state->current = gnm_sheet_scenario_find (state->base.sheet, value);
+ state->undo = gnm_scenario_apply (state->current);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]