[goffice] Ensure that 0 is in the default values axis range for column, bar and other 1.5d plots. [#663717]
- From: Jean BrÃfort <jbrefort src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [goffice] Ensure that 0 is in the default values axis range for column, bar and other 1.5d plots. [#663717]
- Date: Mon, 14 Nov 2011 09:55:35 +0000 (UTC)
commit ba5f1935ff1291842e328d7ed6a0617f8c7302f4
Author: Jean Brefort <jean brefort normalesup org>
Date: Mon Nov 14 10:54:49 2011 +0100
Ensure that 0 is in the default values axis range for column, bar and other 1.5d plots. [#663717]
ChangeLog | 11 +++++++++++
NEWS | 2 ++
goffice/canvas/goc-component.c | 8 +++++---
goffice/component/go-component.c | 35 +++++++++++++++++++++++++++++++----
goffice/component/go-component.h | 3 +++
plugins/plot_barcol/gog-1.5d.c | 6 ++++++
6 files changed, 58 insertions(+), 7 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index bf227b8..d76ba63 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2011-11-14 Jean Brefort <jean brefort normalesup org>
+
+ * goffice/canvas/goc-component.c (goc_component_set_property): don't change
+ the size when not needed.
+ * goffice/component/go-component.c (go_component_get_mime_type),
+ (editor_destroy_cb), (go_component_edit),
+ (go_component_stop_editing): add new functions.
+ * goffice/component/go-component.h: ditto.
+ * plugins/plot_barcol/gog-1.5d.c (gog_plot1_5d_axis_get_bounds): ensure
+ that 0 is in the default values axis range. [#663717]
+
2011-11-10 Morten Welinder <terra gnome org>
* goffice/app/go-conf.h (go_conf_node_get_key_type)
diff --git a/NEWS b/NEWS
index 477d5e8..586ffbd 100644
--- a/NEWS
+++ b/NEWS
@@ -41,6 +41,8 @@ Jean:
* Fixed a memory leak in GocPolyline code. [#663355]
* Fixed pixels dust in text rotation selector. [#662393]
* Remove GConf support.
+ * Ensure that 0 is in the default values axis range for column, bar
+ and other 1.5d plots. [#663717]
Morten:
* Recognize scientific formats with longer exponents.
diff --git a/goffice/canvas/goc-component.c b/goffice/canvas/goc-component.c
index daac1ae..9e305d2 100644
--- a/goffice/canvas/goc-component.c
+++ b/goffice/canvas/goc-component.c
@@ -108,9 +108,11 @@ goc_component_set_property (GObject *obj, guint param_id,
if (component->component != NULL) {
g_object_ref (component->component);
/* set default or fixed size */
- go_component_get_size (component->component, &component->w, &component->h);
- component->w = GO_IN_TO_PT (component->w);
- component->h = GO_IN_TO_PT (component->h);
+ if (component->w == 0 || component->h == 0 || !go_component_is_resizable (component->component)) {
+ go_component_get_size (component->component, &component->w, &component->h);
+ component->w = GO_IN_TO_PT (component->w);
+ component->h = GO_IN_TO_PT (component->h);
+ }
}
break;
diff --git a/goffice/component/go-component.c b/goffice/component/go-component.c
index f28b21a..222e4f5 100644
--- a/goffice/component/go-component.c
+++ b/goffice/component/go-component.c
@@ -398,6 +398,12 @@ go_component_get_data (GOComponent *component, gpointer *data, int *length,
return res;
}
+char const *
+go_component_get_mime_type (GOComponent *component)
+{
+ return component->mime_type;
+}
+
void
go_component_set_size (GOComponent *component, double width, double height)
{
@@ -445,16 +451,37 @@ go_component_is_editable (GOComponent *component)
return component->editable;
}
-GtkWindow *go_component_edit (GOComponent *component)
+static void
+editor_destroy_cb (GOComponent *component)
+{
+ component->editor = NULL;
+}
+
+GtkWindow *
+go_component_edit (GOComponent *component)
{
GOComponentClass *klass;
g_return_val_if_fail (GO_IS_COMPONENT (component), NULL);
+ if (component->editor)
+ return component->editor;
klass = GO_COMPONENT_GET_CLASS(component);
- if (component->editable && klass->edit)
- return klass->edit (component);
- return NULL;
+ if (component->editable && klass->edit) {
+ component->editor = klass->edit (component);
+ if (component->editor)
+ g_signal_connect_swapped (component->editor, "destroy",
+ G_CALLBACK (editor_destroy_cb),
+ component);
+ }
+ return component->editor;
+}
+
+void go_component_stop_editing (GOComponent *component)
+{
+ g_return_if_fail (GO_IS_COMPONENT (component));
+ if (component->editor)
+ gtk_widget_destroy (GTK_WIDGET (component->editor));
}
void
diff --git a/goffice/component/go-component.h b/goffice/component/go-component.h
index 2990ec1..26f159a 100644
--- a/goffice/component/go-component.h
+++ b/goffice/component/go-component.h
@@ -52,6 +52,7 @@ struct _GOComponent {
GOSnapshotType snapshot_type;
void *snapshot_data;
size_t snapshot_length;
+ GtkWindow *editor;
gpointer priv;
};
@@ -98,10 +99,12 @@ void go_component_set_data (GOComponent *component,
char const *data, int length);
gboolean go_component_get_data (GOComponent *component, gpointer *data, int *length,
GDestroyNotify *clearfunc, gpointer *user_data);
+char const *go_component_get_mime_type (GOComponent *component);
void go_component_set_size (GOComponent *component, double width, double height);
gboolean go_component_is_resizable (GOComponent *component);
gboolean go_component_is_editable (GOComponent *component);
GtkWindow* go_component_edit (GOComponent *component);
+void go_component_stop_editing (GOComponent *component);
void go_component_emit_changed (GOComponent *component);
void go_component_set_command_context (GOCmdContext *cc);
diff --git a/plugins/plot_barcol/gog-1.5d.c b/plugins/plot_barcol/gog-1.5d.c
index 5169e63..c7eb993 100644
--- a/plugins/plot_barcol/gog-1.5d.c
+++ b/plugins/plot_barcol/gog-1.5d.c
@@ -286,6 +286,12 @@ gog_plot1_5d_axis_get_bounds (GogPlot *plot, GogAxisType axis,
if (model->date_conv)
bounds->date_conv = model->date_conv;
+ if (plot->desc.series.num_dim == 4 && bounds->val.minima * bounds->val.maxima > 0) {
+ if (bounds->val.minima > 0)
+ bounds->val.minima = 0;
+ else
+ bounds->val.maxima = 0.;
+ }
return NULL;
} else if (axis == gog_axis_get_atype (gog_plot1_5d_get_index_axis (model))) {
GSList *ptr;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]