Module: synfig/synfig
Branch: eldruin_glade_ui
Commit: 2b2e190f68911cae08f6006fc708350744f195af
URL:    
http://synfig.git.sourceforge.net/git/gitweb.cgi?p=synfig/synfig;a=commit;h=2b2e190f68911cae08f6006fc708350744f195af

Author: Diego Barrios Romero <[email protected]>
Date:   Sun Oct 24 17:36:47 2010 +0200

Distance error fix thanks to Genete

---

 synfig-studio/src/gui/dialogs/canvasoptions.cpp |   32 +++++++++++++++--------
 synfig-studio/src/gui/dialogs/canvasoptions.h   |    4 +-
 2 files changed, 23 insertions(+), 13 deletions(-)

diff --git a/synfig-studio/src/gui/dialogs/canvasoptions.cpp 
b/synfig-studio/src/gui/dialogs/canvasoptions.cpp
index f8ffc4f..cece2b1 100644
--- a/synfig-studio/src/gui/dialogs/canvasoptions.cpp
+++ b/synfig-studio/src/gui/dialogs/canvasoptions.cpp
@@ -71,12 +71,12 @@ CanvasOptions::CanvasOptions(etl::loose_handle<CanvasView> 
canvas_view):
        catch(const Glib::FileError& ex)
        {
                synfig::error(strprintf("CanvasOptions::CanvasOptions(): "
-                                                               "FileError: 
%s", ex.what()));
+                                                               "FileError: 
%s", ex.what().c_str()));
        }
        catch(const Gtk::BuilderError& ex)
        {
                synfig::error(strprintf("CanvasOptions::CanvasOptions(): "
-                                                               "BuilderError: 
%s", ex.what()));
+                                                               "BuilderError: 
%s", ex.what().c_str()));
        }
 #else
        std::auto_ptr<Glib::Error> error;
@@ -84,7 +84,7 @@ CanvasOptions::CanvasOptions(etl::loose_handle<CanvasView> 
canvas_view):
        if (!refBuilder->add_from_file(FILE_UI_CANVASOPTIONS_DIALOG, error))
        {
                synfig::error(strprintf("CanvasOptions::CanvasOptions(): "
-                                                               "%s", 
error->what());
+                                                               "%s", 
error->what().c_str());
        }
 #endif /* !GLIBMM_EXCEPTIONS_ENABLED */
 
@@ -223,7 +223,7 @@ CanvasOptions::on_spinbutton_input (double* new_value,
                                                                        
synfig::Distance& distance)
 {
        distance = synfig::String(spinbutton->get_text());
-       *new_value = distance->get();
+       *new_value = distance.get();
        return true;
 }
 
@@ -234,7 +234,7 @@ CanvasOptions::on_spinbutton_output(Gtk::SpinButton* 
spinbutton,
 {
        try{
        distance = spinbutton->get_adjustment()->get_value();
-       spinbutton->set_text(distance->get_string(spinbutton->get_digits()));
+       spinbutton->set_text(distance.get_string(spinbutton->get_digits()));
        } catch (...) {
                synfig::error("CanvasOption::on_spinbutton_output(): "
                                          "Caught something...");
@@ -261,14 +261,24 @@ CanvasOptions::on_apply_pressed()
        synfig::Vector vector;
 
        try     {
-               synfig::Distance distance;
-               distance = spinbutton_size_x->get_adjustment()->get_value();
-               vector[0] = 
distance.units(canvas_view->get_canvas()->rend_desc());
-               distance = spinbutton_size_y->get_adjustment()->get_value();
-               vector[1] = 
distance.units(canvas_view->get_canvas()->rend_desc());
+               synfig::Canvas::Handle c(canvas_view->get_canvas());
+               if(c)
+               {
+                       synfig::Distance distance(1.0, App::distance_system);
+                       distance = 
spinbutton_size_x->get_adjustment()->get_value();
+                       vector[0] = distance.units(c->rend_desc());
+                       distance = 
spinbutton_size_y->get_adjustment()->get_value();
+                       vector[1] = distance.units(c->rend_desc());
+               }
+               else
+               {
+                       vector[0] 
=spinbutton_size_x->get_adjustment()->get_value();
+                       vector[1] 
=spinbutton_size_y->get_adjustment()->get_value();
+               }
        } catch(...) {
                synfig::error("CanvasOptions::on_apply_pressed(): "
-                                         "Caught something that was thrown"); }
+                                         "Caught something that was thrown");
+       }
 
        canvas_view->work_area->set_grid_size(vector);
 }
diff --git a/synfig-studio/src/gui/dialogs/canvasoptions.h 
b/synfig-studio/src/gui/dialogs/canvasoptions.h
index c18e51e..9486217 100644
--- a/synfig-studio/src/gui/dialogs/canvasoptions.h
+++ b/synfig-studio/src/gui/dialogs/canvasoptions.h
@@ -85,10 +85,10 @@ private:
 
        int on_spinbutton_input (double* new_value,
                                                         Gtk::SpinButton* 
spinbutton,
-                                                        synfig::Distance* 
distance);
+                                                        synfig::Distance& 
distance);
 
        bool on_spinbutton_output (Gtk::SpinButton* spinbutton,
-                                                          synfig::Distance* 
distance);
+                                                          synfig::Distance& 
distance);
 
        void on_ok_pressed();
        void on_apply_pressed();


------------------------------------------------------------------------------
Nokia and AT&T present the 2010 Calling All Innovators-North America contest
Create new apps & games for the Nokia N8 for consumers in  U.S. and Canada
$10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store 
http://p.sf.net/sfu/nokia-dev2dev
_______________________________________________
Synfig-devl mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synfig-devl

Reply via email to