[dia/dia-0-97] Bug 640605 - Page margin limits not considering units



commit a944b70b0b880dab1071bbfaca3ab48b7778245b
Author: Hans Breuer <hans breuer org>
Date:   Fri Jan 28 17:26:48 2011 +0100

    Bug 640605 - Page margin limits not considering units
    
    With "Preferences/Length unit" set to something else than Centimeter
    the limit adjustment of margin edit controls was bogus. With a small
    helper function
    (cherry picked from commit f539025825eda946e514ffe2d882c7cd6729ab7d)

 app/diapagelayout.c |   64 +++++++++++++++++++++++++-------------------------
 lib/libdia.def      |    1 +
 lib/widgets.c       |   11 ++++++++
 lib/widgets.h       |    2 +
 4 files changed, 46 insertions(+), 32 deletions(-)
---
diff --git a/app/diapagelayout.c b/app/diapagelayout.c
index fe06e90..a00679b 100644
--- a/app/diapagelayout.c
+++ b/app/diapagelayout.c
@@ -718,23 +718,23 @@ paper_size_change(GtkMenuItem *item, DiaPageLayout *self)
 			     get_paper_rmargin(self->papernum));
 
   if (GTK_TOGGLE_BUTTON(self->orient_portrait)->active) {
-    gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(self->tmargin))->upper =
-      max_margin(get_paper_psheight(self->papernum));
-    gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(self->bmargin))->upper =
-      max_margin(get_paper_psheight(self->papernum));
-    gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(self->lmargin))->upper =
-      max_margin(get_paper_pswidth(self->papernum));
-    gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(self->rmargin))->upper =
-      max_margin(get_paper_pswidth(self->papernum));
+    dia_unit_spinner_set_upper (DIA_UNIT_SPINNER(self->tmargin),
+      max_margin(get_paper_psheight(self->papernum)));
+    dia_unit_spinner_set_upper (DIA_UNIT_SPINNER(self->bmargin),
+      max_margin(get_paper_psheight(self->papernum)));
+    dia_unit_spinner_set_upper (DIA_UNIT_SPINNER(self->lmargin),
+      max_margin(get_paper_pswidth(self->papernum)));
+    dia_unit_spinner_set_upper (DIA_UNIT_SPINNER(self->rmargin),
+      max_margin(get_paper_pswidth(self->papernum)));
   } else {
-    gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(self->tmargin))->upper =
-      max_margin(get_paper_pswidth(self->papernum));
-    gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(self->bmargin))->upper =
-      max_margin(get_paper_pswidth(self->papernum));
-    gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(self->lmargin))->upper =
-      max_margin(get_paper_psheight(self->papernum));
-    gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(self->rmargin))->upper =
-      max_margin(get_paper_psheight(self->papernum));
+    dia_unit_spinner_set_upper (DIA_UNIT_SPINNER(self->tmargin),
+      max_margin(get_paper_pswidth(self->papernum)));
+    dia_unit_spinner_set_upper (DIA_UNIT_SPINNER(self->bmargin),
+      max_margin(get_paper_pswidth(self->papernum)));
+    dia_unit_spinner_set_upper (DIA_UNIT_SPINNER(self->lmargin),
+      max_margin(get_paper_psheight(self->papernum)));
+    dia_unit_spinner_set_upper (DIA_UNIT_SPINNER(self->rmargin),
+      max_margin(get_paper_psheight(self->papernum)));
   }
   self->block_changed = FALSE;
 
@@ -753,23 +753,23 @@ orient_changed(DiaPageLayout *self)
   gtk_widget_queue_draw(self->darea);
 
   if (GTK_TOGGLE_BUTTON(self->orient_portrait)->active) {
-    gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(self->tmargin))->upper =
-      max_margin(get_paper_psheight(self->papernum));
-    gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(self->bmargin))->upper =
-      max_margin(get_paper_psheight(self->papernum));
-    gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(self->lmargin))->upper =
-      max_margin(get_paper_pswidth(self->papernum));
-    gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(self->rmargin))->upper =
-      max_margin(get_paper_pswidth(self->papernum));
+    dia_unit_spinner_set_upper (DIA_UNIT_SPINNER(self->tmargin),
+      max_margin(get_paper_psheight(self->papernum)));
+    dia_unit_spinner_set_upper (DIA_UNIT_SPINNER(self->bmargin),
+      max_margin(get_paper_psheight(self->papernum)));
+    dia_unit_spinner_set_upper (DIA_UNIT_SPINNER(self->lmargin),
+      max_margin(get_paper_pswidth(self->papernum)));
+    dia_unit_spinner_set_upper (DIA_UNIT_SPINNER(self->rmargin),
+      max_margin(get_paper_pswidth(self->papernum)));
   } else {
-    gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(self->tmargin))->upper =
-      max_margin(get_paper_pswidth(self->papernum));
-    gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(self->bmargin))->upper =
-      max_margin(get_paper_pswidth(self->papernum));
-    gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(self->lmargin))->upper =
-      max_margin(get_paper_psheight(self->papernum));
-    gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(self->rmargin))->upper =
-      max_margin(get_paper_psheight(self->papernum));
+    dia_unit_spinner_set_upper (DIA_UNIT_SPINNER(self->tmargin),
+      max_margin(get_paper_pswidth(self->papernum)));
+    dia_unit_spinner_set_upper (DIA_UNIT_SPINNER(self->bmargin),
+      max_margin(get_paper_pswidth(self->papernum)));
+    dia_unit_spinner_set_upper (DIA_UNIT_SPINNER(self->lmargin),
+      max_margin(get_paper_psheight(self->papernum)));
+    dia_unit_spinner_set_upper (DIA_UNIT_SPINNER(self->rmargin),
+      max_margin(get_paper_psheight(self->papernum)));
   }
 
   if (!self->block_changed)
diff --git a/lib/libdia.def b/lib/libdia.def
index 3776a9d..977bf7f 100644
--- a/lib/libdia.def
+++ b/lib/libdia.def
@@ -348,6 +348,7 @@ EXPORTS
  dia_unit_spinner_get_value
  dia_unit_spinner_new
  dia_unit_spinner_set_value
+ dia_unit_spinner_set_upper
 
 ; dia_svg_parse_style
 
diff --git a/lib/widgets.c b/lib/widgets.c
index 9b4f84a..ec47483 100644
--- a/lib/widgets.c
+++ b/lib/widgets.c
@@ -1722,6 +1722,17 @@ dia_unit_spinner_get_value(DiaUnitSpinner *self)
       (units[self->unit_num].factor / units[DIA_UNIT_CENTIMETER].factor);
 }
 
+/* Must manipulate the limit values through this to also consider unit.
+ * Given value is in centimeter. 
+ */
+void
+dia_unit_spinner_set_upper (DiaUnitSpinner *self, gdouble val)
+{
+  val /= (units[self->unit_num].factor / units[DIA_UNIT_CENTIMETER].factor);
+
+  gtk_adjustment_set_upper (
+    gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(self)), val);
+}
 GList *
 get_units_name_list(void)
 {
diff --git a/lib/widgets.h b/lib/widgets.h
index 0934ba8..4b9ccb4 100644
--- a/lib/widgets.h
+++ b/lib/widgets.h
@@ -165,6 +165,8 @@ GtkWidget *dia_unit_spinner_new       (GtkAdjustment *adjustment,
 				       DiaUnit adj_unit);
 void       dia_unit_spinner_set_value (DiaUnitSpinner *self, gdouble val);
 gdouble    dia_unit_spinner_get_value (DiaUnitSpinner *self);
+void       dia_unit_spinner_set_upper (DiaUnitSpinner *self, gdouble val);
+
 GList *    get_units_name_list(void);
 
 /* DiaDynamicMenu */



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