gnumeric r17232 - in trunk: . src
- From: mortenw svn gnome org
- To: svn-commits-list gnome org
- Subject: gnumeric r17232 - in trunk: . src
- Date: Fri, 20 Mar 2009 19:54:02 +0000 (UTC)
Author: mortenw
Date: Fri Mar 20 19:54:02 2009
New Revision: 17232
URL: http://svn.gnome.org/viewvc/gnumeric?rev=17232&view=rev
Log:
(sheet_widget_adjustment_get_ref, sheet_widget_checkbox_get_ref,
sheet_widget_list_base_get_ref): Remove.
(so_get_ref): New generic function replacing the above.
Modified:
trunk/ChangeLog
trunk/src/sheet-object-widget.c
Modified: trunk/src/sheet-object-widget.c
==============================================================================
--- trunk/src/sheet-object-widget.c (original)
+++ trunk/src/sheet-object-widget.c Fri Mar 20 19:54:02 2009
@@ -71,6 +71,41 @@
/****************************************************************************/
static void
+cb_so_get_ref (GnmDependent *dep, SheetObject *so, gpointer user)
+{
+ GnmDependent **pdep = user;
+ *pdep = dep;
+}
+
+static GnmCellRef *
+so_get_ref (SheetObject *so, GnmCellRef *res, gboolean force_sheet)
+{
+ GnmValue *target;
+ GnmDependent *dep = NULL;
+
+ g_return_val_if_fail (so != NULL, NULL);
+
+ /* Let's hope there's just one. */
+ sheet_object_foreach_dep (so, cb_so_get_ref, &dep);
+ g_return_val_if_fail (dep, NULL);
+
+ if (dep->texpr == NULL)
+ return NULL;
+
+ target = gnm_expr_top_get_range (dep->texpr);
+ if (target == NULL)
+ return NULL;
+
+ *res = target->v_range.cell.a;
+ value_release (target);
+
+ if (force_sheet && res->sheet == NULL)
+ res->sheet = sheet_object_get_sheet (so);
+ return res;
+}
+
+
+static void
so_widget_view_destroy (SheetObjectView *sov)
{
gtk_object_destroy (GTK_OBJECT (sov));
@@ -740,28 +775,6 @@
static DEPENDENT_MAKE_TYPE (adjustment, NULL)
-static GnmCellRef *
-sheet_widget_adjustment_get_ref (SheetWidgetAdjustment const *swa,
- GnmCellRef *res, gboolean force_sheet)
-{
- GnmValue *target;
- g_return_val_if_fail (swa != NULL, NULL);
-
- if (swa->dep.texpr == NULL)
- return NULL;
-
- target = gnm_expr_top_get_range (swa->dep.texpr);
- if (target == NULL)
- return NULL;
-
- *res = target->v_range.cell.a;
- value_release (target);
-
- if (force_sheet && res->sheet == NULL)
- res->sheet = sheet_object_get_sheet (SHEET_OBJECT (swa));
- return res;
-}
-
static void
cb_adjustment_widget_value_changed (GtkWidget *widget,
SheetWidgetAdjustment *swa)
@@ -771,7 +784,7 @@
if (swa->being_updated)
return;
- if (sheet_widget_adjustment_get_ref (swa, &ref, TRUE) != NULL) {
+ if (so_get_ref (SHEET_OBJECT (swa), &ref, TRUE) != NULL) {
GnmCell *cell = sheet_cell_fetch (ref.sheet, ref.col, ref.row);
/* TODO : add more control for precision, XL is stupid */
int new_val = gnm_fake_round (swa->adjustment->value);
@@ -841,8 +854,7 @@
GtkAdjustment *dst_adjust, *src_adjust;
GnmCellRef ref;
- sheet_widget_adjustment_init_full (dst_swa,
- sheet_widget_adjustment_get_ref (src_swa, &ref, FALSE));
+ sheet_widget_adjustment_init_full (dst_swa, so_get_ref (src, &ref, FALSE));
dst_adjust = dst_swa->adjustment;
src_adjust = src_swa->adjustment;
@@ -1421,28 +1433,6 @@
sheet_object_widget_class->finalize (obj);
}
-static GnmCellRef *
-sheet_widget_checkbox_get_ref (SheetWidgetCheckbox const *swc,
- GnmCellRef *res, gboolean force_sheet)
-{
- GnmValue *target;
- g_return_val_if_fail (swc != NULL, NULL);
-
- if (swc->dep.texpr == NULL)
- return NULL;
-
- target = gnm_expr_top_get_range (swc->dep.texpr);
- if (target == NULL)
- return NULL;
-
- *res = target->v_range.cell.a;
- value_release (target);
-
- if (force_sheet && res->sheet == NULL)
- res->sheet = sheet_object_get_sheet (SHEET_OBJECT (swc));
- return res;
-}
-
static void
cb_checkbox_toggled (GtkToggleButton *button, SheetWidgetCheckbox *swc)
{
@@ -1453,7 +1443,7 @@
swc->value = gtk_toggle_button_get_active (button);
sheet_widget_checkbox_set_active (swc);
- if (sheet_widget_checkbox_get_ref (swc, &ref, TRUE) != NULL) {
+ if (so_get_ref (SHEET_OBJECT (swc), &ref, TRUE) != NULL) {
gboolean new_val = gtk_toggle_button_get_active (button);
cmd_so_set_value (widget_wbc (GTK_WIDGET (button)),
/* FIXME: This text sucks: */
@@ -1488,8 +1478,8 @@
SheetWidgetCheckbox *dst_swc = SHEET_WIDGET_CHECKBOX (dst);
GnmCellRef ref;
sheet_widget_checkbox_init_full (dst_swc,
- sheet_widget_checkbox_get_ref (src_swc, &ref, FALSE),
- src_swc->label);
+ so_get_ref (src, &ref, FALSE),
+ src_swc->label);
dst_swc->value = src_swc->value;
}
@@ -2055,29 +2045,6 @@
static guint list_base_signals [LIST_BASE_LAST_SIGNAL] = { 0 };
static GType sheet_widget_list_base_get_type (void);
-static GnmCellRef *
-sheet_widget_list_base_get_ref (SheetWidgetListBase const *swl,
- GnmCellRef *res, gboolean force_sheet)
-{
- GnmValue *target;
-
- g_return_val_if_fail (swl != NULL, NULL);
-
- if (swl->output_dep.texpr == NULL)
- return NULL;
-
- target = gnm_expr_top_get_range (swl->output_dep.texpr);
- if (target == NULL)
- return NULL;
-
- *res = target->v_range.cell.a;
- value_release (target);
-
- if (force_sheet && res->sheet == NULL)
- res->sheet = sheet_object_get_sheet (SHEET_OBJECT (swl));
- return res;
-}
-
static void
sheet_widget_list_base_set_selection (SheetWidgetListBase *swl, int selection,
WorkbookControl *wbc)
@@ -2094,7 +2061,7 @@
if (swl->selection != selection) {
swl->selection = selection;
if (NULL!= wbc &&
- sheet_widget_list_base_get_ref (swl, &ref, TRUE) != NULL)
+ so_get_ref (SHEET_OBJECT (swl), &ref, TRUE) != NULL)
cmd_so_set_value (wbc,
_("Clicking in list"),
&ref, value_new_int (swl->selection),
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]